systemctl デバイスの起動時に一部のテキストをエコーし​​ます。

systemctl デバイスの起動時に一部のテキストをエコーし​​ます。

私はこのsystemctlタスクを作成しました。

[Unit]
Description=Evercam Media
After=network.target

[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/opt/evercam_media
ExecStart=/opt/evercam_media/bin/evercam_media start
ExecStop=/opt/evercam_media/bin/evercam_media stop
Restart=always
RestartSec=5
Environment=LANG=en_US.UTF-8
SyslogIdentifier=evercam_media

[Install]
WantedBy=multi-user.target

うまくいきたいので、うまくいきますが、起動と停止時にいくつかのログを表示したいと思います。なぜなら、開始ジョブを開始または停止すると、ジョブが停止しているか待機中であることを示しますが、何も表示されないためです。追加できますか? 「開始済み」または「停止済み」などのログがいくつかありますか?

また、私がしていることの進行状況を見るとsystemctl status evercam_media.serviceこう言ってくれる。

● evercam_media.service - Evercam Media
   Loaded: loaded (/etc/systemd/system/evercam_media.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2017-11-07 10:53:40 CET; 1h 3min ago
  Process: 25830 ExecStop=/opt/evercam_media/bin/evercam_media stop (code=exited, status=0/SUCCESS)
  Process: 25692 ExecStart=/opt/evercam_media/bin/evercam_media start (code=exited, status=0/SUCCESS)
 Main PID: 25728 (code=exited, status=1/FAILURE)

アクティブ:失敗? ?

なぜ失敗せずに停止したと言わないのですか?どんな助けでも大変感謝します。ありがとうございます。

ベストアンサー1

systemdデバイスは非同期コマンド用に設定されType=forking使用されます。ExecStop=

これは、systemdが直後に基本プロセスを終了することを意味します。

/opt/evercam_media/bin/evercam_media 停止
やめる。Restart=always代わりに使用されますRestart=on-failure

に記載されているように文書:

通常、サービスのシャットダウンのみが必要になり(たとえば、終了シグナル形式をキューに追加します)、サービスがシャットダウンするのを待たないこの設定のコマンドを指定するだけでは不十分です。上記のように、コマンドが終了した直後にサービスの残りのプロセスが終了するため、完全に停止しない可能性がありますKillMode=KillSignal=したがって、指定されたコマンドは非同期操作ではなく同期操作でなければなりません。

この問題を解決するためにできることはいくつかあります。 1をTimeoutSec=返さない終了信号を使用または同期するevercam_media方法を見つけますExecStop=

ログメッセージの詳細については、フラグを参照してくださいevercam_media

おすすめ記事