관리 메뉴

NineTwo meet you

[리눅스 기초] 프로세스 제어 및 작업 관리 본문

CS/리눅스

[리눅스 기초] 프로세스 제어 및 작업 관리

NineTwo 2020. 7. 28. 22:21
반응형

프로세스

프로세스는 실행된 프로그램을 의미합니다. 


프로세스 종류

항목 설명
부모 프로세스 다른 프로세스를 생성 할 수 있는 프로세스
자식 프로세스 부모 프로세스로부터 만들어지는 프로세스
데몬 프로세스 일반적으로 사용자가 직접 실행시키지 않고 파일이름 끝에 d를 붙여서 사용
커널에 의해 구동되며 백그라운드에서  특정 서비스를 구성하기 위해 구동
고아 프로세스 자식 프로세스는 작업이 종료되면 부모 프로세스로 돌아가는데 돌아가기 전 부모 프로세스가 종료된 경우를 의미
init프로세스가 해당 프로세스가 종료될 수 있게 도움
좀비 프로세스 자식 프로세스가 종료를 위해 프로세스 리스트라 불리는 목록에서 종료 승인을 대기 하고 있는 상태의 프로세스
시스텝에 존재하는 리소스를 반납하지 않은 상태로리스트에  남아있는 프로세스를 의미

프로세스 확인

ps

ps [옵션]

ps 명령어 필드

필드 의미
PID PID를 의미
TTY 현재 터미널을 의미
TIME 해당 프로세스가 사용하는 CPU 시간
CMD 실행된 명령 이름
옵션 설명
-f 상세한 정보를 출력
일반적으로 verbose라 불리는 코드
PPiD와STIME등의 추가정보 확인 가능
-e 시스템상의 모든 프로세스 정보 출력

ps -f 필드

필드 설명
UID 프로세스의 소유자ID
PID 프로세스의 ID번호
PPID 부모 프로세스의 ID번호
C 스케쥴링을 위한 CPU사용량
오래된 값으로 의미가 없는 필드
STIME 프로세스의 시작 시간
TTY 프로세스를 위한 단말기 제어
터미널 번호가 없이 ?로 출력되는 프로세스는 터미널에서 시작되지 않은 프로세스를 의미(데몬 프로세스)
TIME 프로세스에 대한 누적 실행 시간
CMD 명령, 옵션, 아규먼트

pstree

부모 프로세스와 자식 프로세스의 관계를 트리 형태로 표현하는 리눅스에서 사용하는 명령어다.

ptree

ptree [옵션]

pstree와 마찬가지로 부모와 자식 프로세스의 관계를 트리 형태로 표현하지만 리눅스에서 사용하는 명령어로

프로세스의 이름만 출력하는 pstree와 다르게 UID도 같이 출력한다.

ptree 옵션

옵션 설명
-n PID를 기준으로 정렬해서 출력
-a 아큐먼트까지 같이 출력
-p  PID를 같이 출력
-u 사용자이름 특정 사용자에 대한 정보만 출력
-h 현재 프로세스를 진하게 표시

특정 프로세스의 검색

ps -ef | grep [옵션] [옵션에 해당하는 조건 ex) 패턴 , UID, 특정 터미널 ,...]

pgrep옵션

옵션 설명
-x 패턴과 정확하게 일치하는 PID정보 출력
-n 패턴을 포함하고 가장 최근에 생성된 PID정보 출력
-U uid UID가 일치하는 특정 사용자에 대한 정보 출력
-I PID와 프로세스 이름출력
-t term 특정 터미널과 관련한 프로세스 정보 출력

시그널

메모리에 존재하는 프로그램인 프로세스에 뭔가 발생했음을 알리기 위해 사용하는 것이 시그널이다.

시그널 목록을 확인하기 위해서는 kill -l 명령어를 사용해 모든 시그널의 종류와 시그널 이름을 확인할 수 있다.

#kill -l 
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

자주 사용하는 시그널

시그널 번호 시그널 이름 동작
1 SIGHUP 프로세스 종료없이 프로그램 초기화
2 SIGINT ctrl+c 했을 때 발생
9 SIGKILL 프로세스의 무조건 종료
11 SIGSEGV 프로세스가 잘못된 메모리 참조 시 발생
14 SIGALRM 알람 발생
15 SIGTERM 프로세스의 종료지만 일부는 이 시그널을 무시
18 SIGCONT  멈춘 프로세스 동작 시킴
19 SIGSTOP  프로세스 중단
20 SIGTSTP ctrl+z 했을 때 발생하며 프로세스 중단

작업 관리

작업(job)은 쉘이 관리하는 프로세스다.

쉘이 작업을 동작시키거나 조작할 수 있다.

작업마다 작업 ID 번호를 할당한다.

 

작업 상태

포그라운드(Foreground) 작업 터미널에서 명령어를 실행하고 실행이 종료될 때까지 터미널 화면을 사용해 동작하는 작업
백그라운드(Background) 작업 명령어를 실행하면 터미널을 사용하지 않고 동작하는 작업
정지된(Stopped) 작업 포그라운드에서 ctrl + Z를 눌렀을 때나 백그라운드에서 stop명령어를 입력해 정지한 작업

작업 관리 명령어

명령어 설명
jobs 현재 동작 중이거나 백그라운드에서 정지 중인 모든 작업 출력
bg %n 작업 ID가 n인 작업을 백그라운드에서 동작시킴
fg %n 작업 ID가 n인 작업을 포그라운드에서 동작시킴
ctrl + Z 포그라운드 작업을 정지 시킨 후 정지된 작업으로 백그라운드에 위치시킴
stop %n 백그라운드에서 동작 중이던 작업 ID가 n인 작업을 정지시킴

 

반응형
Comments