좀비 프로세스: Difference between revisions
From IT Wiki
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[분류:운영체제]][[분류:리눅스]] | [[분류:운영체제]][[분류:리눅스]] | ||
;부모 프로세스가 종료 되었는데도 불구하고 종료되지 않고 계속 남아있는 프로세스 | ;부모 프로세스가 종료 되었는데도 불구하고 종료되지 않고 계속 남아있는 프로세스 | ||
== 원인 == | == 원인 == | ||
* 부모 프로세스의 오류로 인하여 종료한 자식 프로세스의 종료가 적절히 이루어지지 않음 | * 부모 프로세스의 오류로 인하여 종료한 자식 프로세스의 종료가 적절히 이루어지지 않음 | ||
* 커널 오류에 의한 비정상적인 상태 | * 커널 오류에 의한 비정상적인 상태 | ||
== 좀비 프로세스 파악 == | |||
* top 명령어를 통해 좀비 프로세스의 수, 좀비 프로세스를 확인할 수 있다. | |||
* 개수: 두번째줄 마지막에 1 zombie를 통해 개수 확인 | |||
* 프로세스: 프로세스 목록 중 두번째 S(Status)가 Z로 표시된 프로세스 확인 | |||
<pre class='shell'> | |||
[root@itwiki ~]# top | |||
top - 22:01:31 up 97 days, 17:08, 1 user, load average: 0.00, 0.00, 0.00 | |||
Tasks: 118 total, 3 running, 114 sleeping, 0 stopped, 1 zombie | |||
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st | |||
Mem: 1048576k total, 990160k used, 58416k free, 180060k buffers | |||
Swap: 2031608k total, 48520k used, 1983088k free, 203936k cached | |||
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | |||
1 root 15 0 10368 544 512 S 0.0 0.1 0:00.12 init | |||
2 root RT -5 0 0 0 Z 0.0 0.0 0:03.16 migration/0 | |||
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 | |||
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 | |||
</pre> | |||
* 아래와 같은 명령어를 통해 간단히 개수만 확인할 수도 있다. | |||
<pre class='shell'> | |||
[root@itwiki ~]# top -b -n 1 | grep zombie | |||
Tasks: 139 total, 1 running, 136 sleeping, 0 stopped, 2 zombie | |||
</pre> | |||
* ps와 grep명령어를 통해 프로세스를 특정해서 조회할 수 있다. | |||
<pre class='shell'> | |||
[root@itwiki ~]# ps -ef | grep defunct | grep -v grep | |||
root 17107 21899 0 Feb25 ? 00:00:00 [myagent] <defunct> | |||
testuser 21207 21205 0 Feb26 ? 00:00:00 [check_service.sh] <defunct> | |||
</pre> | |||
== 좀비 프로세스 죽이기 == | |||
* 아래 명령어를 통해 일괄적으로 좀비 프로세스를 죽일 수 있다. | |||
<pre class='shell'> | |||
ps -ef | grep defunct | awk '{print $3}' | xargs kill -9 | |||
</pre> |
Latest revision as of 23:03, 17 February 2020
- 부모 프로세스가 종료 되었는데도 불구하고 종료되지 않고 계속 남아있는 프로세스
원인[edit | edit source]
- 부모 프로세스의 오류로 인하여 종료한 자식 프로세스의 종료가 적절히 이루어지지 않음
- 커널 오류에 의한 비정상적인 상태
좀비 프로세스 파악[edit | edit source]
- top 명령어를 통해 좀비 프로세스의 수, 좀비 프로세스를 확인할 수 있다.
- 개수: 두번째줄 마지막에 1 zombie를 통해 개수 확인
- 프로세스: 프로세스 목록 중 두번째 S(Status)가 Z로 표시된 프로세스 확인
[root@itwiki ~]# top top - 22:01:31 up 97 days, 17:08, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 118 total, 3 running, 114 sleeping, 0 stopped, 1 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1048576k total, 990160k used, 58416k free, 180060k buffers Swap: 2031608k total, 48520k used, 1983088k free, 203936k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 10368 544 512 S 0.0 0.1 0:00.12 init 2 root RT -5 0 0 0 Z 0.0 0.0 0:03.16 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
- 아래와 같은 명령어를 통해 간단히 개수만 확인할 수도 있다.
[root@itwiki ~]# top -b -n 1 | grep zombie Tasks: 139 total, 1 running, 136 sleeping, 0 stopped, 2 zombie
- ps와 grep명령어를 통해 프로세스를 특정해서 조회할 수 있다.
[root@itwiki ~]# ps -ef | grep defunct | grep -v grep root 17107 21899 0 Feb25 ? 00:00:00 [myagent] <defunct> testuser 21207 21205 0 Feb26 ? 00:00:00 [check_service.sh] <defunct>
좀비 프로세스 죽이기[edit | edit source]
- 아래 명령어를 통해 일괄적으로 좀비 프로세스를 죽일 수 있다.
ps -ef | grep defunct | awk '{print $3}' | xargs kill -9