PythonスクリプトをUbuntuのサービスとして実行する方法について説明します。これにより、スクリプトはシステム起動時に自動的に開始され、常に実行され続けます。
Pythonスクリプトの作成
まず、サービスとして実行したいPythonスクリプトを作成します。以下に、30秒ごとに”hello!”というメッセージをログファイルに書き込む簡単なスクリプトの例を示します。
#!/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)
このスクリプトを/opt/hello.py
というパスに保存します。そして、スクリプトに実行権限を付与します。
$ sudo chmod 0755 /opt/hello.py
サービスファイルの作成
次に、このスクリプトをサービスとして実行するためのsystemdサービスファイルを作成します。
/etc/systemd/system/hello.service
[Unit]
Description=hello daemon
[Service]
ExecStart=/opt/hello.py
Restart=always
Type=simple
[Install]
WantedBy=multi-user.target
サービスの有効化と開始
最後に、作成したサービスを有効化し、開始します。
$ sudo systemctl enable hello.service
$ sudo systemctl start hello.service
これで、PythonスクリプトはUbuntuのサービスとして実行され、システム起動時に自動的に開始されます。
確認
サービスが正しく動作しているか確認するには、以下のコマンドを実行します。
$ sudo systemctl status hello.service
また、/tmp/hello.log
ファイルを確認して、”hello!”というメッセージが書き込まれていることを確認します。
以上が、UbuntuでPythonスクリプトをサービス化する方法です。これにより、Pythonスクリプトをバックグラウンドで常に実行させることが可能になります。