61
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-12-03

実行環境

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

61
74
1

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
  3. You can use dark theme
What you can do with signing up
61
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?