Debian 11用のsystemdサービスファイルを作成しました。常に実行する必要があるpython3スクリプトに使用されます。
[Unit]
Description=Printer service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=user1
WorkingDirectory=/home/user1/myproject
ExecStart=/home/user1/myproject/venv/bin/python3 /home/user1/myproject/myscript.py
[Install]
WantedBy=multi-user.target
スクリプトを再起動するのにどれくらいの時間がかかるのか分かりません。価値を追加する必要がありますかRestartSec
?どうやらこの指示を理解していないようです。スクリプトが完全にアクティブになるのに5秒かかると仮定すると、中断されますかRestartSec=1
?
StartLimitIntervalSec=0
また、特定の回数の失敗後にsystemdがサービスのアクティブ化を停止する速度に制限を設けていないため、付け加えました。何らかの理由でサービスが失敗した場合、systemdは永久に再起動しようとしますか?指定しないとどうなりますかUser
?
最後に、命令間に非互換性はありますか?
答え1
man systemd.service
説明する:
再起動時間=
サービスを再起動する前にスリープ時間を設定します(Restart =を使用して設定)。単位なしの秒単位値または「5min 20s」などの時間範囲値を使用します。デフォルトは100ミリ秒です。
サービスがダウンまたは失敗した時間です。スクリプトを起動するのに少し時間がかかっても、「アクティブ化」段階にあるので大丈夫です。
|----RestartSec------|
---------|-----------|--------------------|------------|----------
running stopping stopped starting running
man systemd.unit
説明する:
StartLimitIntervalSec=間隔、StartLimitBurst=バースト
Hive 開始速度制限。着工回数を超えました。飛び出す時間以内間隔その期間は再開できません。 StartLimitIntervalSec =を使用して確認間隔を設定し、StartLimitBurst =を使用して間隔ごとに許可される開始回数を設定します。
間隔時間範囲で、デフォルト単位は秒ですが、別の単位を指定することもできます。 systemd.time(5) をご覧ください。管理者構成ファイルのデフォルト値は DefaultStartLimitIntervalSec= です。すべての種類の速度制限を無効にするには、0に設定できます。。飛び出す管理者設定ファイルで DefaultStartLimitBurst= にデフォルト設定されている数値。
したがって、これがある場合、競合は発生しません。
Restart=always
RestartSec=1s
StartLimitIntervalSec=3s
StartLimitBurst=2
実行する作業は次のとおりです。
- デバイスが停止/エラーが発生した場合は、1秒待ってから再起動してください。
- デバイスが3秒以内に2回起動しない場合は、デバイスの再起動を中止してください。
あなたが持っているすべてなら:
Restart=always
その後、デフォルト値を使用します。つまり、次のことを意味します。
Restart=always
RestartSec=100ms
StartLimitIntervalSec=10s
StartLimitBurst=5
それからあなたの行動は次のようになります:
- デバイスが停止したら、100ミリ秒待ってから再起動してください。
- デバイスが10秒以内に5回起動しない場合は、デバイスの再起動を中止してください。
あなたのコメントによれば、「すべての種類の速度制限を無効にすることができます」と言われています。
Restart=always
StartLimitIntervalSec=0
それからあなたの行動は次のようになります:
- デバイスが停止したら、100ミリ秒待ってから再起動してください。
- 比率制限なし