Process 관리
process는 흔히 실행중인 프로그램을 뜻한다. file과는 다른 의미이다. file은 디스크 상에 존재하며 수동적이다.
process는 메모리에 있거나 cpu가 실행하는 상태를 의미한다
ps - 프로세스 상태 보기
F S UID PID PPID C STIME TTY TIME CMD
4 S 0 3971 3967 0 10:17 pts/3 00:00:00 -bash
4 R 0 11869 3971 0 10:17 pts/3 00:00:00 ps
S (sleep) : 프로세스가 cpu 자원을 기다리고 있는 상태
SW : 프로세스가 swap 영역에 내려와 있는 상태(스왑파티션에 있다)
(한정된 메모리 자원을 효율적으로 사용하기 위해 일부 프로세스가 swap 영역으로 내갈 수 있다)
SWN : swap 영역에 있는 프로세스중 cpu 자원을 할당받을 우선순위가 낮은 상태
T : 중단된 상태
R : Runable 또는 Running 상태
Z : Zombie 상태
주요옵션
-e : 모든 프로세스 출력
-f : 프로세스 소유자 및 부모 프로세스 정보까지 출력
-ef : -e와 -f 는 주로 같이 붙여서 많이 사용된다.
프로세스도 file system 처럼 계층구조로 되어 있다.
부모프로세스가 있고 그 아래에 자식 프로세스가 있는 구조이다.
PID : 커널이 식별하는 프로세스 식별자
프로세스가 생성되는 순서대로 번호가 할당되며 1번은 init 이다.
TTY : 프로세스가 어떤 터미널에서 실행되었는가 하는 정보
TIME : 프로세스가 cpu를 점유한 누적 시간
CMD : 프로세스 이름
kill - 프로세스를 죽이는 명령어
주요 signal
1) SIGHUP : 프로세스 재실행이다. 죽였다가 다시 실행하는것과 같다.
2) SIGINT : 현재 프로세스 강제종료. ctrl+c 를 사용한다.
9) SIGKILL : 가장 많이 사용되는 시그널로 프로세스 강제 종료이다. 프로세스가 어떤일을 하든 무조건 죽인다.
물론 죽일 수 없는 예외적인 프로세스도 존재한다. 예를 들면 init 프로세스
15) SIGTERM : 프로세스 종료.
이 시그널을 사용하면 프로세스가 종료되지 않을 수도 있다.강제종료가 아니기 때문이다.
20) SIGTSTP : 현재 프로세스 강제 중단. ctrl+z 사용
위에서 언급한 signal 외에 다른 signal 들은 잘 사용되지 않는다.
프로세스 갯수 = 사용자 수에 비례 ..
killall - 특정 이름의 프로세스들을 죽인다.
bc - 계산기
fg - foreground
bg - background
foreground 로 실행되고 있는 프로세스를 ctrl + z 로 중단한 후
jobs 로 상태를 확인한 뒤 bg %'job아이디' 명령어로 background 상태를 만들어 준다.
* 아래의 두 개의 퍼미션은 Process 에 대한 이해가 필요하다.
1. s(set UID) (4nnn n은 8진수) : --s-------
소유자 권한에 s 가 있으면 setUID 퍼미션이다.(실행하는 동안 소유자 권한을 갖는다)
setUID 퍼미션
보안과 관련되어 있는 퍼미션으로 이 퍼미션을 잘못관리하면 보안상 문제가 발생할 수 있다. 소유자 권한으로 파일을 실행할 수 있다.
2. s(set GID) (2nnn): ------s--- :
그룹 권한에 s 가 있으면 setGID 퍼미션이다.(실행하는 동안 그룹권한을 갖는다)
setGID 퍼미션
setGID 퍼미션의 개념은 setUID 퍼미션의 개념과 다르지 않다.
파일의 소유 그룹권한으로 실행할 수 있는 권한이다.
3. t(sticky bit) (1nnn): --------t :
3자권한에 t 가 있으면 sticky bit 퍼미션이다.(파일을 만들 수 있다. 그러나 파일소유자만 파일을 삭제할 수 있다)