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

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

私は2つの完全に別々のプロセスであるapacheとtomcatを起動する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 はサービスを開始した直後にサービスを終了します。

システムがロックされているので、私ができる他のアクションがあるかどうか疑問に思います。ユニットファイルと両方のスクリプトに対する完全な編集権限がありますが、新しいサービスを作成したりシステムディレクトリに触れることはできません。

関連情報