BLOGTIMES
2020/12/25

pipenv で作ったプログラムを systemd でデーモン化する

  python  systemmanagemant 
このエントリーをはてなブックマークに追加

pipenv を使っで作った Python のプログラムを Systemd でデーモン化してみました。

基本的には /etc/systemd/system/ ディレクトリに .service ファイルを作って、起動すれば OK ということになりますが、問題は ExecStart の部分をどのようにするかということでしょうか。この部分を書くためには pipenv の場所などを調べる必要があるのですが、いちいちあれこれ悩まなくて済むように、.service ファイルの生成スクリプトを作ってみました。
daeon.py の部分は自分のスクリプト名に合わせて書き換えてください。

cat <<EOF >"$(basename $(pwd dirname)).service" [Unit] Description=Python Daemon With Pipenv After=network.target [Service] Type=simple Restart=always WorkingDirectory=`pwd` ExecStart=`pipenv run which pipenv` run python daeon.py User=`whoami` Group=`groups | cut -d ' ' -f 1` [Install] WantedBy=multi-user.target EOF

あとは .service ファイルにシンボリックリンクを張って、daemon を有効化してやれば OK。
慣れてくれば init.d と同じように簡単にデーモン化できますね。

sudo ln -s "$(basename $(pwd dirname)).service" /etc/systemd/system/ sudo sysetmctl daemon-reload sudo sysetmctl enable "$(basename $(pwd dirname)).service" sudo sysetmctl start "$(basename $(pwd dirname)).service" systemctl | grep "$(basename $(pwd dirname)).service"

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12191
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン