리눅스 좀비 프로세스 죽이기
리눅스를 운영하다 보면 가끔씩 좀비 프로세스가 생길때가 있다.
아래 예제는 사실상 좀비 프로세스는 아니다. 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
이제 사라졌다.
'LINUX' 카테고리의 다른 글
리눅스 인터넷 속도 테스트 팁 (0) | 2016.04.14 |
---|---|
리눅스 logrotate 장점 및 단점 (0) | 2016.04.13 |
아파치 로그에 ::1 안 쌓이게 하는 방법 (0) | 2016.04.11 |
MySQL Too many open files 에러 처리 방법 (0) | 2016.04.11 |
CentOS 7.x 아파치 2.4.x 다운로드 속도 제한하기 (0) | 2016.04.09 |