私はsystemdを使ってサービスを作成する方法を学んでいます。次のエラーが発生します。
.service: Start request repeated too quickly.
これ以上サービスを開始できません。昨日も引き続き働いていました。私は何が間違っていましたか?
(root@Kundrum)-(11:03:19)-(~)
$nano /lib/systemd/system/swatchWATCH.service
1 [Unit]
2 Description=Monitor Logfiles and send Mail reports
3 After=syslog.target network.target
4
5 [Service]
6 Type=simple
7 ExecStart=/usr/bin/swatch --config-file=/home/kristjan/.swatchrc --input-record-separator="\n \n " --tail-file=/var/log/snort/alert --daemon
8 Restart=on-failure
9 StartLimitInterval=3
10 StartLimitBurst=100
11
12 [Install]
13 WantedBy=multi-user.target
StartLimitInterval
StartLimitBurst
修正しようとした後に追加しました。
私のシステムはDebian 9.8 Stretch allアップデートです。
答え1
まず、カスタムサービスであれば、パッケージが提供するファイル/etc/systemd/system
に属します。/lib/systemd
第二に、サービスがクラッシュする可能性があり、systemdはサービスを繰り返し再起動しようとするため、クラッシュした理由を特定する必要があります。サービスログを確認してください。
journalctl -e -u swatchWATCH
主な問題にはいくつかの追加の詳細があるかもしれません。
journalctl -e
最後に、CLIで直接実行できることを確認してください。
/usr/bin/swatch --config-file=/home/kristjan/.swatchrc --input-record-separator="\n \n " --tail-file=/var/log/snort/alert --daemon
オプションを使用しています--daemon
。これは通常システムのバグです。 Systemd はユーザーのデーモン化を実行します。このオプションを削除してみてください。
すべての方法が失敗した場合は、昨日の仕事を始めてから何が変わったのかを見てください。
答え2
"systemd[1]: SERVICE: 起動要求が早すぎる繰り返される" の簡単な解決策は次のとおりです。
systemctl reset-failed SERVICE
systemctl start SERVICE
systemctl status SERVICE
関連する引用は以下で提供されます。手動システム制御:
リセット失敗[モード...]
...速度制限カウンタを0にリセットし始めます。したがって、デバイスの起動制限(設定どおり
StartLimitIntervalSec=/StartLimitBurst=
)に達し、デバイスが再起動を拒否した場合は、このコマンドを使用して再起動できるようにします。 」
答え3
私の場合、エラーメッセージが少し誤解を招く可能性があります。失敗の理由は、マシン間の複製によるものです。ライン
User=my_user
私のサービス構成ファイルは/etc/systemd/system/infinite_script.service
犯人でした。
新しいシステムはこのユーザーを認識しません。変更するとUser=root
問題が解決しました。