実行環境
- ubuntu 18.04-LTS
はじめに
こちらのブログ記事を参考にpythonスクリプトをdaemon化しようと試みたが、forkしたプロセスがゾンビプロセスになってしまい、正しくdaemon化できなかった。
そこで、Systemdを使ってさくっと自作コマンドをサービス化してみるを参考に、systemdのserviceを設定してみた。
##手順
- テスト用pythonスクリプト
/opt/hello.py
を用意する。
#!(shebang)
を忘れずに!
/opt/hello.py
#!/usr/bin/env python3
import time
def main():
filepath = "/tmp/hello.log"
log = open(filepath,'a')
log.write("hello!\n")
if __name__ == '__main__':
while True:
main()
time.sleep(30)
pythonスクリプトに権限を付与する。
$ sudo chmod 0755 /opt/hello.py
- service設定ファイル
/etc/systemd/system/hello.service
を作成する。
/etc/systemd/system/hello.service
[Unit]
Description = hello daemon
[Service]
ExecStart = /opt/hello.py
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
- 後は通常のserviceと同じように起動すればよい。
$ sudo systemctl enable hello.service
$ sudo systemctl start hello.service
# 確認は以下のコマンドで
$ sudo systemctl status hello.service
-
hello.py
の動作確認
$ cat /tmp/hello.log
hello.log
に"hello!"が書き込まれていればよい。