スクリプトを作成してから、systemdでスクリプトを制御したい場合や、何らかの理由でスクリプトが強制終了されたときにスクリプトを自動的に再起動したい場合があります。
システム化 Linuxでは、管理可能なサービスを構成するのに役立ちます。
この記事では systemdサービスを作成する方法を紹介します。
systemdサービスを作成する
一般的に
以下の手順に従ってください:
- 実行中のLinuxサービスはパス/etc / systemd / systemにあります。
cd /etc/systemd/system
- [servicename.service]という名前のファイルを作成します そして、以下を追加します
[Unit]
Description=<description_about_your_service>
[Service]
User=<user_such_as_root>
WorkingDirectory=<directory_of__your_script such as /home/unixcop>
ExecStart=<script_which_needs_to_be_executed>
Restart=always
[Install]
WantedBy=multi-user.target
注 :太字を置き換えます 上記の値と、作成する新しいサービスの値。
サービスユニット .serviceを含むファイルです サフィックスには、 systemdによって管理されているプロセスに関する情報が含まれています 。これは、3つの主要なセクションで構成されています。
- [ユニット] :このセクションには、サービスの説明など、ユニットのタイプに特に関係のない情報が含まれています
- [サービス] :ユニットの特定のタイプ(この場合はサービス)に関する情報が含まれています
- [インストール] :このセクションには、ユニットの設置に関する情報が含まれています
仮想環境を含むPython固有のプロジェクトの場合
- 上記と同じ手順に従いますが、次を追加します
[Unit]
Description=<description_about_your_project>
[Service]
User=<user_such_as_root>
WorkingDirectory=<path/to/your/project/directory/containing/the/python/script>
ExecStart=Path of virtualenv and your script file name
#Example for ExecStart=/home/user/.virtualenv/bin/python main.py
#replace /home/user/.virtualenv/bin/python with your virtualenv and main.py with your script name
Restart=always
[Install]
WantedBy=multi-user.target
または
[Unit]
Description=<description_about_your_project>
[Service]
User=<user_such_as_root>
WorkingDirectory=<path to your project directory>
ExecStart=/bin/bash -c 'cd /home/unixcop/project/ && source venv/bin/activate && python test.py'
#replace /home/unixcop/project/ with your Path, venv/bin/activate with your source and test.py with your script name
[Install]
WantedBy=multi-user.target
- サービスファイルのリロードが完了したら、新しいサービスを含めます。
sudo systemctl daemon-reload
- 新しいサービスを開始します
sudo systemctl start [your_new_service].service
- 新しいサービスのステータスを確認します(例:unixcop.serviceと呼ばれる私の新しいサービス)
sudo systemctl status unixcop.service
- 再起動するたびにサービスを有効にする
sudo systemctl enable unixcop.service
- 再起動するたびにサービスを無効にするには
sudo systemctl disable unixcop.service
結論
以上です
Linuxで新しいsystemdサービスを作成する方法を説明しました
ありがとう!!