수면서비스 입니다
import time
bufsize = 0
f = open("/home/user/sleep-log", "w", bufsize)
try:
f.write("going for a deep sleep......")
time.sleep( 1000000000)
except:
import traceback; f.write(traceback.format_exc())
finally:
f.write("that is surprising.. final block just ran")
이것을 실행하기 위한 우분투 시작 작업이 있습니다.
description "sleeper"
author "saravana"
start on runlevel [2345]
stop on runlevel [!2345]
script
exec /usr/bin/python /home/user/a.py
end script
내가 그럴 때,
service sleeper start
service sleeper stop
로그 파일에는 다음이 포함됩니다.
going for a deep sleep.......
Finally
블록을 건너뜁니다. 정리 코드가 항상 실행되도록 하려면 어떻게 해야 합니까? conf 파일을 사용하여 수행할 수 있지만 post stop script
기존의 이유로 Python 파일에서 수행하고 싶습니다.
답변1
Upstart가 작업을 중지하면 SIGTERM
신호를 보냅니다. 기본적으로 SIGTERM
프로그램이 즉시 종료됩니다. 이는 실행이 나머지 코드를 통해 진행되지 않고 단지 중지됨을 의미합니다.
이 모듈을 사용하여 신호 처리기를 구현할 수 있으며 signal
사용법에 대한 세부 정보를 찾을 수 있습니다.여기. 이렇게 하면 신호를 받은 후 코드를 실행할 수 있습니다.