systemd スタイルは、プロセスの実行状態を非同期に保ちます。

systemd スタイルは、プロセスの実行状態を非同期に保ちます。

現在、私のサービスファイルには次の問題があります。

[Unit]
Description=XYZ Service
[Service]
User=root
Group=root
TimeoutStartSec=900
Type=simple
KillMode=process
ExecStart=/bin/bash -lc '/xyz/run.sh start'
ExecReload=/bin/bash -lc '/xyz/run.sh autorecover'
ExecStop=/bin/bash -lc '/xyz/run.sh restart'
PIDFile=/xyz/bin/dgs.pid
StandardOutput=journal
Restart=always
StartLimitInterval=60s
RestartSec=45s
[Install]
WantedBy=multi-user.target

service xyz start -->を実行すると起動機能が実行されますが、service xyz status -->を実行するとまだ有効になっていると表示されます。

ベストアンサー1

この問題は、systemdサービス管理者がプロセスの開始を待機し続けているときに発生します。私は通常、次のような場合にこれを見ます。

  • ExecStartPre=歩く
  • Type=notify存在するがExecStart=sd-notify を呼び出さない

私は通常それを使用しませんがPIDFile=Type=forkingあなたが使用するときそれは通常一緒に行きますType=simple。これが私を疑うようにすることですPIDFile=

man systemd.serviceもちろんPIDFile

サービスの開始後、サービス管理者はこのファイルからサービス基本プロセスのPIDを読み取ります。

欠落しているPIDFileの問題を再現することはできませんが、systemdサービス管理者がそのPIDFile=単位を1つの単位と見なす前に、基本プロセスのPIDがいっぱいになるのを待っていると疑われますactivated。追跡するPIDを決定する際にいくつかの問題が発生しました。プロセスのType=simplePIDがファイルに書き込まれていない可能性があります。

おすすめ記事