‘kill -9’가 작동하지 않으면 어떻게합니까? 또는 새로운 프로세스를 시작하는 스크립트를 죽이는 방법? 어쨌든 나를 도와주지 않습니다.
나는 파이썬 스크립트가 다른 프로세스 ID가 자동으로 시작 동일한 포트를 사용하여 사망 할 때 사용을 sudo kill -9 <pid>
.
$ lsof -i :3002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 13242 ubuntu 3u IPv4 64592 0t0 TCP localhost:3002 (LISTEN)
$ sudo kill -9 13242
$ lsof -i :3002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 16106 ubuntu 3u IPv4 74792 0t0 TCP localhost:3002 (LISTEN)
$ sudo kill 16106
$ lsof -i :3002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 16294 ubuntu 3u IPv4 75677 0t0 TCP localhost:3002 (LISTEN)
좀비 프로세스가 아닙니다.
$ ps -Al
4 S 0 16289 1 0 80 0 - 12901 poll_s ? 00:00:00 sudo
4 S 1000 16293 16289 0 80 0 - 1100 wait ? 00:00:00 sh
0 S 1000 16294 16293 0 80 0 - 34632 poll_s ? 00:00:00 python
나는 sudo pkill -f <processname>
운없이 시도했다 . 죽고 싶지 않습니다.
최신 정보:
부모 프로세스는 sh
부모가 sudo
위의 표에서 언급 한 것과 같습니다. 이것들을 갑자기 죽이는 것이 안전한지 잘 모르겠습니다. 또한 이것은 공유 우분투 서버입니다.
답변
다른 프로세스 ID로 자동 시작 한다는 것은 다른 프로세스 임을 의미합니다. 따라서 자식 프로세스를 모니터링하는 부모 프로세스가 있으며, 하나가 죽으면 부모 프로세스가 다시 생성됩니다. 서비스를 완전히 중지하려면 상위 프로세스를 중지하는 방법을 찾으십시오. 그것을 죽이는 SIGKILL
옵션 코스 하나이지만, 아마 하나를 마우스 오른쪽 TM , 서비스 모니터가 제대로 종료 몇 가지 정리 작업을 수행해야 할 수도 있기 때문이다.
모니터 프로세스를 찾으려면 실제 리스너가 상위 (일반적으로 fork() + setsid()
콤보에 의해)에서 분리 될 수 있으므로 전체 프로세스 목록을 검사해야합니다 . 이 경우 출력이 ps faux
( procps
적어도 다른 구현에 따라 다를 수 있음) 다소 편리 하다는 것을 알았 습니다. 모든 프로세스를 계층 트리로 나열합니다. PID 랩 이없는 경우 ( wikipedia 참조 ) 모니터 PID는 리스너의 PID보다 작아야합니다 (물론 PID 랩 어라운드를 누르지 않는 한).
답변
프로세스의 수신 포트를 알고 있으면 플래그 fuser
와 함께 사용할 수 있습니다 -k
.
같은 것
fuser -k 3002/tcp