デフォルトでは、カメラを開き、ビデオストリームでいくつかのタスクを実行するアプリケーション(OSはUbuntu 16.04)があります。システムサービスによって管理されます。
[Unit]
Description=My Application
After=network.target
StartLimitInterval=0
[Service]
Type=simple
Restart=always
RestartSec=5
User=myuser
WorkingDirectory=/opt/foo/
ExecStart=/opt/foo/myapplication
[Install]
WantedBy=multi-user.target
その後、デスクトップエントリがあり、サービスを停止し、パラメータを使用してアプリケーションを再実行できます。
[Desktop Entry]
Name=Myapp
Type=Application
Exec=/opt/foo/launcher.sh
Terminal=true
Path=/opt/foo/
Categories=None;
これは私のランチャーです:
#!/bin/bash
service myservice stop
/opt/foo/myapplication --debug
この方法は機能しますが、デスクトップエントリで起動されたアプリケーションを閉じるとサービスを再起動する方法が見つかりません。ランチャーの終了時にサービスの再起動を追加しようとしましたが、アプリケーションが実行されている端末を閉じると、思ったことはすべて終了するため、機能しません。どうすればいいですか?
ベストアンサー1
以下のユニットファイルを作成できます/etc/systemd/system/myprocess.service
。
[Unit]
Description=My Process
[Service]
ExecStart=/bin/myprocess
Restart=always
[Install]
WantedBy=multi-user.target
次に、デスクトップポータルでランチャーを作成して実行します。
systemctl start myprocess.service
ただし、実行可能エントリから手動で起動できるように、起動時にサービスを有効にしないでください。
編集する:
デバッグモードでも実行する必要がある場合は、--debug
このパラメーターを使用して別のサービスユニットを作成する必要があります。次のスクリプトを指す別のデスクトップアイテムを作成できます(代表的なアイデアのみ)。
systemctl stop myprocess.service // to stop previous service
systemctl start processwithdebug.servce // to debug