Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

実行環境

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

katsuNakajima
ソフトウェアエンジニア(Web、組み込みLinux、業務系) Rustが好きです。ある程度まとまった規模の情報はZennにも書いていきます。
https://zenn.dev/katsunakajima
itage
ITAGEは「IT」のAGENCYになることを夢、目標として進化、変化していきます。「It’s It Agency」
http://www.itage.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away