[Java] Linux
서버에 적합하고, 무료 Open Source 소프트웨어다
Linus Torvalds 라는 사람이 이 Linux OS를 만들었다
Linux는 Linux Kernel (리눅스 커널) 자체를 의미한다
- 커널은 CPU나 RAM을 포함한 컴퓨터 자원을 관리하고 할당하는 중요한 코어 소프트웨어다
- 이 Linux를 기반으로 커스터마이즈 된 OS를 만들 수 있다
Linux 계열에는 RedHat, Ubuntu, Debian이 있다
리눅스 커널은 아래와 같은 디렉토리 구조를 가지고 있다
Docker를 이용해서 리눅스 사용하기
Linux 명령어
상대 경로 vs 절대 경로
- 상대 경로 : 현재 파일의 위치에서의 경로
- 절대 경로 : 최상위 위치에서의 경
./ 현재 위치
../ 현재 위치에서 한단계 상단 위치
../../ 현재 위치에서 두단계 상단 위치
/ 루트 경로
cat
- 하나 혹은 그 이상 파일들의 내용 출
# file1과 file2의 내용 출력
$ cat file1 file2
# /etc/passwd 의 내용 출력
$ cat /etc/passwd
ls
- 디렉토리 컨텐츠 열거
# 단순 나열
$ ls
$ ls /dir
# 상세 목록 나열
$ ls -l
# 시간 역순 정렬 나열
$ ls -lrt
pwd
- 현재 작업 중인 디렉토리 위치 출력
$ pwd
cp
- 파일 복사
# file1을 file2라는 이름으로 복사
$ cp file1 file2
# n개의 파일을 dir 디렉토리로 복사
$ cp file1 .. fileN dir
mv
- 파일 이동
- 파일명 변경
# file1을 file2로 이름을 변경
$ mv file1 file2
# 여러 파일을 dir로 이동
$ mv file1 .. fileN dir
touch
- 파일 생성
- 이미 파일명이 존재할 경우, 마지막 수정 날짜가 업데이트 됨
# 빈 파일 생성
$ touch file
rm
- 파일 삭제
- 되살리기 어려우므로 주의해서 사용
# file 삭제
$ rm file
# dir 디렉토리 내 모든 파일 삭제
$ rm -rf / dir
# 절대 쓰면 안되는 명령어 (컴퓨터 리셋...)
$ rm -rf *
mkdir
- 새로운 디렉토리 생성
$ mkdir dir
cd
- 현재 작업 중인 디렉토리 변경
# dir 디렉토리로 이동
$cd dir
# home 디렉토리로 이동
$ cd
grep
- 표현과 일치하는 입력 스트림의 라인을 출력
# root 라는 단어를 포함하고 있는 /etc 디렉토리 내 모든 파일 확인
$ grep root /etc/*
# file 내에 ERROR가 포함되어 있는 라인 출력
$ cat file | grep "ERROR"
head
- 파일의 내용을 확인해야 할 경우, 파일의 앞부분만 확인
$ head file
# file 앞에서부터 10행까지만 출력
$ head -n 10 file
tail
- 파일 내용을 확인해야 할 경우, 파일의 뒷부분만 확인
$ tail file
$ tail -n 100 file
# file을 모니터링 하면서 실시간으로 출력
# 예) 로그 파일
$ tail -f file
wc
- 파일의 행, 단어 수를 출력
# file의 행수 출력
$ wc -l file
# 파일의 단어 수 출력
$ wc -w file
pipe (|)
- 명령어 조합 및 연결
$ ls -lrt | tail
linux 사용자와 그룹
계정에 따라서, 파일에 대한 권한이 바뀔 수 있다
사용자
루트 계정
- 모든 권한을 가진 관리자 계정
사용자 계정
- 루트 계정으로부터 생성이 되고, 권한을 가질 수 있다
- 루트 계정 이상의 권한을 가질 수 없다
# ==== 사용자 추가하기 ====
$> useradd alex
# ==== 사용자 조회 ====
# [사용자명]:[비밀번호]:[uid]:[gid]:[계정설명]:[홈디렉토리]:[셸]
# uid = user id
# gid = group id
$> cat /etc/passwd
# ==== 현재 사용자 ====
$> whoami
# ==== 계정 전환 ====
# - 는 루트 사용자
$> su -
$> su alex
그룹
사용자를 묶어서 관리할 수 있는 단위다
한 사용자가 여러 그룹에 속할 수 있다
# ==== 그룹 조회 ====
$> cat /etc/group
# ==== 그룹 생성 ====
$> groupadd new_group
# ==== 그룹에 신규 사용자 추가 ====
# gid가 1002인 그룹에 alex를 넣기
$> useradd -g 1002 alex
권한 (Permission)
- 파일에 대해, 어떤 그룹이 어떤 권한을 가지고 있는지 아래와 같이 확인할 수 있
# rwxr-xr-x
$> chmod -R 755 file
# rw-r--r--
$> chmod -R 644 file
#r-x--x---
$> chmod -R 510 file
chown
- 파일/디렉토리의 소유자/그룹소유자를 변경
# 소유권을 부여할 user와 group명을 입력하고, 변경할 타겟이 되는 파일 이름을 작성한다
# tmp.txt에 대한 파일은 user와 group 에게 소유권이 있다
$> chown user:group tmp.txt
$> chown -R user:group mydir
Linux 셸 스크립트
셸에서 돌아가도록 작성된 스크립트
- *.sh 라는 확장자를 갖게 된다
서버에서 반복해서 실행되어야 하는 작업들을 셸 스크립트로 정의해 놓고, 작업을 수행한다
- 서버에서는 반복적인 작업들이 많다
Shebang
- 어떤 셸로 스크립트를 수행하는지 정한다
- echo 는 print라고 생각하면 된다
# !/ bin/bash
echo "hello World"
변수
# !/ bin/bash
NAME='Linux'
COUNT=10
echo $NAME
$
# !/ bin/bash
echo $$ # shell pid (프로세스 id)
echo $0 # shell script name
echo $1 - $9 # shell parameter
echo $# # shell parameter count
echo $? # exit code
예약변수
# !/ bin/bash
echo $HOME # home directory
echo $PATH # file path
echo $USER # user account
if
# !/ bin/bash
if [condition]
then
# do something
else
# do something
fi
for
# !/ bin/bash
for VAR in LIST
do
# do something
done
while
# !/ bin/bash
while [condition]
do
# do something
done
'Skill Stacks > Java_Spring' 카테고리의 다른 글
[Java] Nginx (0) | 2023.09.14 |
---|---|
[Java] Kafka (0) | 2023.09.13 |
[Java] Docker (0) | 2023.09.11 |
스프링 캐시 (0) | 2023.09.05 |
스프링 스크래핑 (0) | 2023.09.04 |