質問–systemdを使用してPythonスクリプトを自動実行する方法。 Pythonスクリプトを使用して独自のsystemdサービスを作成する方法。 systemdとして起動するようにPythonスクリプトを構成する方法。 systemctlを使用してPythonサービスを管理する方法は?
このチュートリアルを使用して、systemdでPythonスクリプトをシステムサービスとして実行します。 systemctlコマンドを使用して、スクリプトを簡単に開始、停止、または再起動できます。これにより、システムの起動時にPythonスクリプトを自動実行することもできます。
ステップ1–ダミーのPythonアプリケーション
まず、指定されたポートでリッスンするダミーのPythonスクリプトを使用しました。次のようにPythonファイルを編集します
sudo vi /usr/bin/dummy_service.py
ダミー用に次のコンテンツを追加します。要件に応じて独自のPythonスクリプトを使用できます。
Python123456789101112 | #!/ usr / bin / python3 import sockets =socket.socket(socket.AF_INET、socket.SOCK_STREAM)s.bind(( "localhost"、9988))s.listen(1)while True:conn、addr =s.accept()data =conn.recv(1024)conn.close()my_function_that_handles_data(data) |
ステップ2–サービスファイルの作成
次に、systemdのサービスファイルを次のように作成します。ファイルには.serviceが必要です / lib / systemd / system /の下の拡張子 ディレクトリ
sudo vi /lib/systemd/system/dummy.service
次のコンテンツを追加します。 Pythonスクリプトのファイル名と広告の場所を変更します。説明も更新してください。
[Unit] Description=Dummy Service After=multi-user.target [email protected] [Service] Type=simple ExecStart=/usr/bin/python3 /usr/bin/dummy_service.py StandardInput=tty-force [Install] WantedBy=multi-user.target
ステップ3–新しく追加されたサービスを有効にする
システムサービスがサービスに追加されました。 systemctlデーモンをリロードして、新しいファイルを読み取りましょう。 .serviceファイルに変更を加えた後は、毎回このデーモンをリロードする必要があります。
sudo systemctl daemon-reload
次に、システムの起動時にサービスを開始できるようにします。また、次のコマンドを使用してサービスを開始します。
sudo systemctl enable dummy.service sudo systemctl start dummy.service
ステップ4–新しいサービスの開始/開始/ステータス
最後に、次のコマンドでサービスのステータスを確認します。
sudo systemctl status dummy.service
以下のコマンドを使用して、サービスマニュアルを停止、開始、および再起動します。
sudo systemctl stop dummy.service #To stop running service sudo systemctl start dummy.service #To start running service sudo systemctl restart dummy.service #To restart running service