* 파일 관리
- 파일 속성
ls -l 로 확인 가능함.
- 접근 권한
파일의 권한에는 읽기(Read), 쓰기(Write), 실행(eXecute) 총 세 종류가 있음.
사용자를 소유자(User), 그룹(Group), 기타 사용자(Others)로 나누어 각 사용자별로 읽기, 쓰기, 실행 권한을 따로 부여함.
표기는 소유자, 그룹, 기타 사용자 순서로 부여된 권한을 소문자로 표시하며, 해당 권한이 없으면 -로 표시함.
ex) rw-r--r-- : 소유자는 읽기와 쓰기 가능, 그룹과 기타 사용자는 읽기만 가능.
ㄴ 권한 숫자 표기법
rwx를 2진수 비트로 치환하면 총 3비트 크기의 2진수가 되고, 이것을 다시 1비트짜리 8진수로 바꾸면 한 글자만으로 권한들을 표현할 수 있음.
ex)
rwxrwxrwx = 111/111/111 = 777
rwxrw-r-- = 111/110/100 = 764
ㄴ 권한 변경
파일의 접근 권한을 변경함.
chmod [옵션] 권한 파일(디렉토리)
+ 옵션 : -R (하위 디렉토리까지 모두 변경)
ㄴ chmod 기호 모드 vs 숫자 모드
1. 기호 모드
chmod (사용자 카테고리 문자) + (연산자 기호) + (접근 권한 문자) 파일
사용자 카테고리 문자는 u, g, o, a(전체, all)이 있음.
연산자 기호는 +(권한 부여), -(권한 제거), =(권한 설정)이 있음.
접근 권한 문자는 r, w, x가 있음.
ex)
chmod u-w test.txt : test.txt 소유자의 쓰기 권한 제거
2. 숫자 모드
chmod (권한 숫자) 파일
권한을 숫자로 표현하는 방법을 적용해서, 변경하고자 하는 값으로 대입해서 권한을 변경하면 됨.
ex)
chmod 444 test.txt : 권한을 444로 변경함.
※ 파일의 기본 접근 권한은 664, 디렉토리의 기본 접근 권한은 775임.
ㄴ 기본 접근 권한 확인 및 변경
umask [옵션] [마스크 값]
+ 옵션 : -S (마스크 값을 문자로 출력)
마스크 값은 파일 생성시 부여하지 않을 권한을 지정해놓은 값임.
ex)
umask 077 : 그룹과 기타 사용자에게 아무 권한도 안줌
ㄴ 숫자 모드 앞에 추가된 숫자
4??? : 4가 붙으면 SetUID라고 하며, 해당 파일이 실행되는 동안에는 파일을 실행시킨 사용자의 권한이 아닌 파일 소유자의 권한이 적용됨.
2??? : 2가 붙으면 SetGID라고 하며, 파일 소유 그룹의 권한으로 실행됨.
1??? : 1이 붙으면 스티키비트라고 하며, 디렉토리에 설정함. 스티키 비트가 설정되어 있으면 이 디렉토리에는 누구나 파일을 생성 가능함.
* 프로세스 관리
프로세스 : 실행 중인 프로그램
프로세스 번호(PID) : 각 프로세스는 고유한 번호를 가짐. 1번은 system이고, 2번은 kthreadd임.
- 프로세스 종류
ㄴ 데몬
특정 서비스를 제공하기 위해 존재.
ㄴ 고아
자식 프로세스가 실행 중인데 부모 프로세스가 먼저 종료되었을 때 자식 프로세스를 이르는 말.
ㄴ 좀비
자식 프로세스가 실행을 종료했는데 프로세스 테이블 목록에 남아있는 경우 자식 프로세스를 이르는 말.
많아지면 프로세스 테이블 용량이 부족해져서 정상적인 프로세스가 실행되지 않을 수 있음.
- 프로세스 확인
ps [옵션]
ㄴ 옵션
<유닉스 옵션>
-e (실행중인 모든 프로세스 정보 출력), -f (자세한 정보 출력), -u (특정 사용자에 대한 모든 프로세스 정보 출력), -p (특정 프로세스 정보 출력)
<BSD 옵션>
-a (터미널에서 실행시킨 프로세스 정보 출력), -u (프로세스 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보 출력), -x (시스템에서 실행 중인 모든 프로세스 정보 출력)
<GNU 옵션>
--pid PID 목록 : 목록으로 지정한 특정 PID 정보 출력
- 프로세스 정보 검색
pgrep [옵션] [패턴]
ㄴ 옵션 : -x (정확히 일치하는 프로세스 출력), -n (패턴을 포함한 가장 최근 프로세스 출력), -u (특정 사용자에 대한 모든 프로세스 출력)
- 시그널
프로세스에 무언가 발생했음을 알리는 메시지
미리 정의된 상수를 사용함.
시그널을 받은 프로세스는 기본적으로 종료됨.
ㄴ 알아두면 좋은 시그널
1) SIGHUP : 터미널과 연결이 끊김을 알리는 시그널. 설정을 reload 시킬 수 있음.
2) SIGINT : 사용자가 ctrl+c 입력시 발생하는 시그널.
9) SIGKILL : 강제로 종료시키는 시그널.
12) SIGUSR2 : 사용자가 자신의 프로그램에서 정의하고 보내는 사용자 정의 시그널.
15) SIGTERM : 프로세스에게 종료 요청을 보내는 시그널.
18) SIGCONT : 일시 중지한 후 다시 실행하도록 지시하는 시그널.
19) SIGSTOP : 강제로 중지시키는 시그널.
ㄴ 시그널 전송
kill 명령어를 사용하면 시그널을 특정 프로세스에게 전송 가능함.
kill [-시그널] PID
- 프로세스 종료하기
pkill CMD(명령 이름) : 해당 이름으로 실행 중인 프로세스를 종료.
killall CMD : 해당 이름으로 실행 중인 모든 프로세스를 한 번에 종료함. 소유하고 있어야 함.
- 프로세스 관리
top : 현재 실행중인 프로세스 정보를 주기적으로 출력
- 프로세스 제어
한 터미널에서 여러 프로세스를 실행하고 관리함. 대부분의 유닉스 쉘과 리눅스 쉘에 포함하여 제공함.
작업 제어 도구가 관리하는 프로세스를 작업(job)이라고 함.
- 포그라운드 작업(Foreground Job)
사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 프로세스를 포그라운드 프로세스라 하며, 작업 제어에서는 포그라운드 작업이라고 함.
ex) sleep 100
- 백그라운드 작업(Background Job)
백그라운드 방식으로 명령 실행시 명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 사용자가 다른 작업을 계속할 수 있음.
한 터미널에서 여러 프로세스를 동시에 실행 가능함.
백그라운드 방식으로 처리되는 프로세스를 백그라운드 프로세스, 작업 제어에서는 백그라운드 작업이라고 함.
명령 마지막에 &(앰퍼샌드) 추가하면 됨.
ex) sleep 100 &
- 작업 제어
작업 전환, 작업 일시 중지, 작업 종료를 의미함.
작업 전환 : 포그라운드, 백그라운드 작업 간 전환
- 작업 목록 보기
백그라운드 작업을 모두 보여줌. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여줌.
jobs [%작업 번호]
ㄴ%작업 번호 : %번호 (해당 번호의 작업 정보 출력), %+ 또는 %% (작업 순서가 +인 작업 정보 출력), %- (작업 순서가 -인 작업 정보 출력)
ㄴ 작업 순서
+ : 가장 최근에 접근한 작업
- : + 작업 바로 전에 접근한 작업
공백 : 그외 작업
- 작업 전환 명령
ctrl+z 또는 stop %작업번호 : 포그라운드 작업을 중지 (종료X)
bg %작업번호 : 백그라운드 작업으로 전환
fg %작업번호 : 포그라운드 작업으로 전환
- 작업 종료
ctrl+c : 포그라운드 작업은 대부분 종료됨.
PID 검색해서 kill 명령을 사용할 수도 있음.
- 로그아웃 후에도 백그라운드 작업 유지
원래는 터미널이 종료되거나 사용자가 로그아웃하면 백그라운드 작업이 종료됨. 로그아웃 이후에도 작업이 완료될 때까지 실행해야 한다면 해당 명령어를 사용함.
nohup 명령&
* 파일 아카이브와 압축
파일과 디렉토리를 묶어 하나의 아카이브 파일을 생성 가능함. tar 명령어를 사용함.
tar 기능 [옵션] [아카이브 파일] [파일명]
ㄴ 기능
c : 새로운 tar 파일 생성
t : tar 파일 내용 출력
x : tar 파일에서 원본 파일 추출
ㄴ 옵션
f : 아카이브 파일이나 테이프 장치를 지정함. 파일명을 '-'로 지정하면 tar 파일 대신 표준 입력에서 읽어들임.
v : 처리하고 있는 파일의 정보를 출력함.
j : bzip2로 압축하거나 해제함. (.bz2 확장자 사용)
z : gzip으로 압축하거나 해제함. (.gz 확장자 사용)
- 아카이브 생성하기
tar cvf [아카이브 파일] [파일명]
- 아카이브 내용 확인하기
tar tvf [아카이브 파일] [파일명]
- 아카이브 풀기
tar xvf [아카이브 파일] [파일명]
- 아카이브 생성하면서 압축하기
tar czvf [아카이브 파일] [파일명]
tar cjvf [아카이브 파일] [파일명]
'Major Review (학부) > Linux OS' 카테고리의 다른 글
02. 리눅스 이해(2) (0) | 2023.10.25 |
---|---|
02. 리눅스 이해(1) (0) | 2023.10.25 |
01. 리눅스 기초 (1) | 2023.10.25 |