バックグラウンドでXvfbを起動するシステムスクリプトを作成しようとしています。
もちろん、コンソールでこれを行うときに「&」を追加することに問題はありません。
しかし、システムスクリプトを作成しようとしたときに手動で起動すると、
service xvfb start
このコマンドを実行した後にプロンプトが表示されないため、決してバックグラウンドで送信されないようです。
スクリプトは次のとおりです。
[Unit]
Description=Xvfb
After=tomcat.service
[Timer]
# Time to wait after booting before we run first time
OnBootSec=1min
[Service]
Type=forking
User=test
Group=test
ExecStart=/usr/bin/Xvfb :99
ExecStop=/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
他のタイプを使用する必要がありますか?
答え1
Type=forking
独自に分岐され、バックグラウンドで実行されるプロセス(レガシーデーモンとも呼ばれる)に適しています。これはsystemdを引き起こします。待つプロセスをバックグラウンドで終了させ、pidファイルまたは他の手段を介して子プロセスを追跡します。アプリケーションが終了しないため、systemdは待機し続けます。
代わりに、次を使用する必要があります。
Type=simple
独自の背景知識のないアプリケーションに適しています。これにより、systemdデーモンはプロセスを追跡しますが、systemctl
有効な背景からすぐに返されます。 Simpleはデフォルトタイプなので、必要に応じてType
フラグを完全に省略できます。