우분투 공부하기 - 프로세스
우분투: 프로세스 관리하기
프로세스 관리하기
리눅스는 실행 중인 프로그램을 적절히 제어하여 다중작업(multi tasking)을 지원합니다.
리눅스 프로세스
프로세스는 실행중인 프로그램을 나타내는 개념
역할 | |
---|---|
PID(Process ID) | 프로세스 시작시 할당되는 유일한 프로세스 식별번호 |
UID(User ID) | 프로세스를 소유하는 사용자 계정을 식별하는 번호, 프로세스에 대한 사용자 권한을 알수 있음 |
GID(Group ID) | 그룹 식별 번호, 프로세스가 속해 있는 그룹을 알려줌 |
파일 디스크립터(file descriptor) | 프로세스가 읽기/쓰기 위해서 어떤 파일을 열고 있는지 파일의 어떤 위치에 있는지르 기록 |
현재 실행중인 프로세스 확인
➜ ~ ps
PID TTY TIME CMD
7913 pts/4 00:00:00 zsh
14642 pts/4 00:00:00 ps
-a
옵션은 다른 사용자의 프로세스 상태도 표시
-x
옵션은 화면에 보이지 않는 프로세스까지 모두 표시
-ax
로 두 옵션을 함께 사용하면 현재 실행중인 모든 프로세스 표시
➜ ~ ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1322 4.4 0.6 374456 23988 tty7 Rsl+ 13:57 8:57 /usr/lib/xorg/Xorg
root 2108 0.0 0.0 17216 484 tty1 Ss+ 13:57 0:00 /sbin/agetty --nocl
hong 7913 0.0 0.1 48560 6216 pts/4 Ss 16:40 0:00 /usr/bin/zsh
-u
옵션은 프로세스를 사용한 사용자가 누구인지 그리고 프로세스의 실행 시간을 표시
-aux
옵션을 사용하면 프로세스의 시스템 자원 사용률을 확인
➜ ~ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 185372 3740 ? Ss 13:56 0:03 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 13:56 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 13:56 0:00 [kworker/0:0H]
-aux
옵션으로 확인할 수 있는 프로세스 정보의 각 필드
- USER: 소유자 이름
- PID: 식별번호
- %CPU: CPU 점유율
- %MEM: 메모리 점유율
- VSZ/RSS: 실제 메모리 사용량
- TTY: 프로세스가 시작되고 있는 터미널
- STAT: 현재상태
- START: 시작시간
- TIME: 총 사용 시간
- COMMAND: 프로세스를 실행한 명령 행
프로세스의 상태를 나타내는 STAT 항목에는 5가지가 있습니다.
- R(Runable): 실행 대기 상태
- S(Sleeping): 수면 상태
- D(in Dark wait): 입출력을 기다리는 상태
- T(sTopped): 멈춰 있거나 흔적이 남아 있는 상태
- Z(zombie): 완전히 죽은 상태
-ef
옵션은 PID로 정렬되어 있는 프로세스 목록을 출력
➜ ~ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 13:56 ? 00:00:03 /sbin/init splash
root 2 0 0 13:56 ? 00:00:00 [kthreadd]
root 4 2 0 13:56 ? 00:00:00 [kworker/0:0H]
-ef
옵션으로 확인할 수 있는 프로세스 정보의 각 필드
- PPID: 부모 프로세스의 PID
- C: 프로세스의 CPU 점유 상태
- TTY: 프로세스가 시작되고 있는 터미널
-ef
옵션은 부모 프로세스와의 관계를 파악하는데 사용됩니다.
실시간으로 메모리 점유율, CPU 점유율을 확일할 때는 ps -aux
보다 top
명령어가 더 유용
top - 17:45:41 up 3:48, 2 users, load average: 0.65, 0.46, 0.52
Tasks: 236 total, 1 running, 185 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.9 us, 1.8 sy, 0.0 ni, 95.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3952716 total, 1656336 free, 1153320 used, 1143060 buff/cache
KiB Swap: 3998716 total, 3001340 free, 997376 used. 2324416 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1322 root 20 0 374420 24316 13260 S 5.0 0.6 9:20.43 Xorg
1375 root 20 0 2539044 7768 1372 S 4.3 0.2 10:42.58 nosintgdmn
3913 hong 20 0 1249168 45604 29608 S 4.3 1.2 12:17.77 compiz
7902 hong 20 0 794924 81276 54228 S 2.7 2.1 0:05.37 /usr/bin/x-term
1168 root 20 0 682176 29964 25504 S 1.0 0.8 0:41.46 nosmain
5285 hong 20 0 1548312 291128 104052 S 0.7 7.4 25:24.85 chrome
프로세스 종료하기
실행중인 프로세스를 종료하는 명령어는 kill
입니다. kill
은 사용자가 프로세스에 일정한 신호를 보내서 프로세스를 종료합니다. 신호에는 종류가 여러가지 있는데 kill -l
명령어를 사용해 신호의 종류 파악
➜ ~ kill -l
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
프로세스를 어디서 실행?
프로세스는 포그라운드 또는 백그라운드에서 실행됩니다. 명령을 실행하여 프로세스가 종료될 때까지 기다리는 포그라운드. 기다리지 않는 백그라운드가 있습니다.