私は(hekaのための)システム化されたサービスを持っていますが、それは私に少し頭痛を与えます。
問題は、hekaデーモンが起動直後に終了しても、「start」が正常に返されることです。たとえば、設定ファイルが間違っていると、これが発生します。プロセスが開始され、構成を確認した後、見つかった内容が満足できない場合は終了します。この場合、Systemd は正常に返されます。
初期化後にsystemdにプログラムの状態を確認するように強制する方法はありますか?プロセスが始まってからn秒間眠りますか?
スクリプトは次のとおりです。
[Unit]
Description=Heka event/metric/log collection and routing daemon
After=network.target auditd.service
ConditionPathExists=!/etc/heka/hekad_not_to_be_run
[Service]
EnvironmentFile=-/etc/default/heka
Type=simple
PIDFile=/var/run/hekad.pid
ExecStart=/usr/bin/hekad -config=/etc/heka
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
StandardError=inherit
[Install]
WantedBy=multi-user.target
Alias=heka.service
ベストアンサー1
複数の ExecPostStart コマンドを一緒に接続できます。メインExecStartが失敗しても、追加して保存できます。-/(systemd.service:タイプ=)。このような:
ExecStart=-/usr/bin/hekad -config=/etc/heka
ExecStartPost=/bin/sleep 3
ExecStartPost=/bin/kill -0 $MAINPID &>/dev/null
これにより、たとえばMAINPID
サービスを停止または再起動しても引き続き使用できます。