n秒後にsystemdにサービス状態を確認するよう強制します。

n秒後にsystemdにサービス状態を確認するよう強制します。

私は(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サービスを停止または再起動しても引き続き使用できます。

おすすめ記事