Systemd サービスは 2 つのプロセスのうち 1 つだけを起動しますが、OS の再起動時にのみ起動します。

Systemd サービスは 2 つのプロセスのうち 1 つだけを起動しますが、OS の再起動時にのみ起動します。

私には、apache と tomcat という 2 つの完全に別のプロセスを開始する systemd ユニット ファイルがあります (コメントする前に、2 つの別のユニット ファイルを作成する必要があることはわかっていますが、このサーバーの権限は厳重にロックされています)。SSH セッションを介してサービスを開始すると、すべてが正常に開始および停止します。ただし、サーバーを再起動すると、apache のみが再起動し、systemd はすべて正常であると主張します。tomcat ログを確認すると、プロセスは開始されたように見えますが、ある時点でプロセスが停止します。

この動作の違いの原因は何でしょうか? このサービスは開始する前に何か他のものを待機する必要がありますか?

ユニットファイル:

[Unit]
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/home/opiusr/appstart.sh
ExecStop=/home/opiusr/appstop.sh

[Install]
WantedBy=multi-user.target

どちらのスクリプトも、次のような内容を含むラッパーです。

/bin/su - opiusr -c "/home/opiusr/bin/start_tomcat -s" >> $LOG_FILE
/bin/su - opiusr -c "/home/opiusr/bin/start_apache -s" >> $LOG_FILE

これらのスクリプトは、Tomcat と Apache の起動および停止スクリプトを単純にラップし、追加のログ記録を行います。

編集: 非常によく似たこの回答を見たことがあります: Systemd は起動後すぐにサービスを終了します

システムはかなりロックダウンされているので、何か他のことができるのではないかと思っています。ユニット ファイルと 2 つのスクリプトへの完全な編集アクセス権はありますが、新しいサービスを作成したり、システム ディレクトリを変更したりすることはできません。

関連情報