search
LoginSignup
66
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

pythonスクリプトをdaemonにする[systemd編]

実行環境

  • 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!"が書き込まれていればよい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
66
Help us understand the problem. What are the problem?