반응형
파이썬의 os 모듈의 popen 함수를 통해 자식 프로세스를 만들고 해당 프로세스를 핸들링 하지 않고, Sleep을 걸어두면 해당 시간 동안 좀비 프로세스를 만들 수 있다.
import os
import time
cmd = os.popen('ps -ef --no-headers').read()
time.sleep(1000)
$ ps -ef | grep 7733
user+ 7733 6238 0 14:02 pts/27 00:00:00 python test.py
user+ 7734 7733 0 14:02 pts/27 00:00:00 [sh] <defunct>
os.popen을 하다보면 위와 같이 좀비프로세스를 생성하는 시나리오를 자주 만날 수 있는데, 이 경우 아래와 같이 해당 프로세스를 명시적으로 close해주는 방식으로 없앴을 수 있다.
import os
import time
process = os.popen('ps -ef --no-headers')
data = process.read()
process.close()
time.sleep(1000)
$ ps -ef | grep 7733
user+ 7733 6238 0 14:02 pts/27 00:00:00 python test.py
위와 같이 해주면 자식 프로세스를 명시적으로 kill 하기 때문에 좀비 프로세스가 생성되지 않는다.
반응형
'Python' 카테고리의 다른 글
[python] 파이썬 스크립트 백그라운드 수행 (Windows) (0) | 2022.01.24 |
---|---|
[python] 파이썬 스크립트 백그라운드 수행 (linux) (0) | 2022.01.24 |
[python] 가상환경 venv 생성시 나타나는 The virtual environment was not created successfully 에러 해결법 (0) | 2021.12.12 |
[python] byte 단위 변환 코드(byte ->kb, mb, gb, tb, pd, eb) (0) | 2021.10.28 |
[python] 소수점 반올림, 올림, 내림하는 코드 (0) | 2021.10.28 |