리눅스 좀비 프로세스 죽이기



리눅스를 운영하다 보면 가끔씩 좀비 프로세스가 생길때가 있다.


아래 예제는 사실상 좀비 프로세스는 아니다. addconn 부모가 pluto 이고 pluto 는 ipsec 데몬에서 호출된 실행파일이다.



[root@conoha ~]# ps aux | grep Z

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root     14923  0.0  0.0      0     0 ?        Z    Apr11   0:00 [addconn] <defunct>

root     22986  0.0  0.0 112648   956 pts/0    R+   17:50   0:00 grep --color=auto Z


defunct 로 표시되는 것은 부모 프로세스를 kill 해야 죽는다.


pstree 명령어로 부모 프로세스를 알아보자.


[root@conoha ~]# pstree -pu

systemd(1)─┬─NetworkManager(13132)─┬─dhclient(13137)

           │                       ├─{NetworkManager}(13133)

           │                       └─{NetworkManager}(13135)

           ├─abrt-watch-log(641)

           ├─abrtd(620)

           ├─agetty(661)

           ├─agetty(662)

           ├─atd(654)

           ├─auditd(597)───{auditd}(606)

           ├─crond(652)

           ├─dbus-daemon(628,dbus)

           ├─firewalld(13217)───{firewalld}(13574)

           ├─httpd(17181)─┬─httpd(18200,apache)

           │              ├─httpd(18204,apache)

           │              ├─httpd(18205,apache)

           │              ├─httpd(18206,apache)

           │              ├─httpd(18207,apache)

           │              ├─httpd(18208,apache)

           │              └─httpd(21746,apache)

           ├─irqbalance(643)

           ├─lsmd(639,libstoragemgmt)

           ├─lvmetad(484)

           ├─master(1838)─┬─pickup(22907,postfix)

           │              └─qmgr(1856,postfix)

           ├─mysqld_safe(15498,mysql)───mysqld(15671)─┬─{mysqld}(15673)

           │                                          ├─{mysqld}(15674)

           │                                          ├─{mysqld}(15675)

           │                                          ├─{mysqld}(15676)

           │                                          ├─{mysqld}(15677)

           │                                          ├─{mysqld}(15678)

           │                                          ├─{mysqld}(15679)

           │                                          ├─{mysqld}(15680)

           │                                          ├─{mysqld}(15681)

           │                                          ├─{mysqld}(15682)

           │                                          ├─{mysqld}(15684)

           │                                          ├─{mysqld}(15685)

           │                                          ├─{mysqld}(15686)

           │                                          ├─{mysqld}(15687)

           │                                          ├─{mysqld}(15688)

           │                                          ├─{mysqld}(15689)

           │                                          ├─{mysqld}(15697)

           │                                          └─{mysqld}(15698)

           ├─ntpd(651,ntp)

           ├─pluto(14890)─┬─_pluto_adns(14922)

           │              ├─addconn(14923)

           │              └─{pluto}(14897)

           ├─polkitd(770,polkitd)─┬─{polkitd}(777)

           │                      ├─{polkitd}(779)

           │                      ├─{polkitd}(781)

           │                      ├─{polkitd}(782)

           │                      └─{polkitd}(784)

           ├─pptpd(14619)

           ├─qemu-ga(642)

           ├─rngd(621)

           ├─rsyslogd(627)─┬─{rsyslogd}(636)

           │               └─{rsyslogd}(637)

           ├─smartd(619)

           ├─sshd(1269)───sshd(22915)───bash(22917)───pstree(23049)

           ├─systemd-journal(471)

           ├─systemd-logind(622)

           ├─systemd-udevd(491)

           ├─tuned(1271)─┬─{tuned}(1454)

           │             ├─{tuned}(1458)

           │             ├─{tuned}(1461)

           │             └─{tuned}(1468)

           ├─wpa_supplicant(772)

           └─xl2tpd(14894)


14923의 부모 프로세스 ID 는 14890 이다.


kill -9 14890 명령어로 좀비 프로세스가 사라져야 하나 위의 pluto는 죽여도 다시 살아난다.


[root@conoha ~]# find / -name pluto

/run/pluto

/etc/sysconfig/pluto

/etc/pam.d/pluto

/var/log/pluto

/usr/libexec/ipsec/pluto


pluto 가 ipsec 서비스 관련 프로세스임을 알았다.


ipsec을 종료시키고 확인해보자.


[root@conoha ~]# systemctl stop ipsec.service

[root@conoha ~]# pstree

systemd─┬─NetworkManager─┬─dhclient

        │                └─2*[{NetworkManager}]

        ├─abrt-watch-log

        ├─abrtd

        ├─agetty

        ├─atd

        ├─auditd───{auditd}

        ├─crond

        ├─dbus-daemon

        ├─firewalld───{firewalld}

        ├─httpd───7*[httpd]

        ├─irqbalance

        ├─login───bash

        ├─lsmd

        ├─lvmetad

        ├─master─┬─pickup

        │        └─qmgr

        ├─mysqld_safe───mysqld───18*[{mysqld}]

        ├─ntpd───ntpd

        ├─polkitd───5*[{polkitd}]

        ├─qemu-ga

        ├─rngd

        ├─rsyslogd───2*[{rsyslogd}]

        ├─smartd

        ├─sshd───sshd───bash───pstree

        ├─systemd-journal

        ├─systemd-logind

        ├─systemd-udevd

        ├─tuned───4*[{tuned}]

        └─wpa_supplicant


이제 사라졌다.





블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,