他のアプリケーションに基づくアプリケーションの開始と終了

他のアプリケーションに基づくアプリケーションの開始と終了

私はUbuntu 20.04を使用しており、Quodlibet(音楽アプリ)とconkyを同時に起動するためのbashスクリプトを探しています。編集:アイデアは、.desktopランチャーでshスクリプトを使用することです。

  1. Quodlibetの起動
  2. 2秒後にconkyを開始
  3. Quodlibetが閉じている場合は、conkyを閉じてください。

私はいくつかのテストをしましたが、Quodlibetの終わりを認識しなかったので、私は以下のスクリプトがうまくいかないと思います。 Quodlibetを閉じても、Conkyはまだ実行中です。

#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT

quodlibet &
sleep 2 &&
conky &

wait

編集:スタンドアロン.shソリューション

@berndbausch ありがとうございます。

#!/bin/bash
quodlibet & QUODPID=$!
sleep 3 &&
conky & CONKYPID=$!

wait $QUODPID
kill $CONKYPID

編集:カスタムランチャーの使用

@xhienne この回答で説明したように、exec=setsid /path/to/script.sh.desktopファイルとスクリプトで使用するとうまくいきます。

ベストアンサー1

子プロセスではなく、現在のシェルでQuodlibetを起動します。

#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT

(sleep 2 && conky) &

quodlibet

.desktop[更新] グラフィック環境のファイルからこのスクリプトを実行したいとおっしゃいました。 @fra-sanは、このように実行されているすべてのプロセスが親プロセスのプロセスグループを継承できるため、そのkill 0実行プログラムプロセスと(おそらく)起動されたすべてのプロセスを終了できることに気づきました。これは確かにあなたが望むものではありません。

解決策は、setsid新しいプロセスグループが専用に作成されるようにスクリプトを起動することです。

setsid /path/to/script.sh

おすすめ記事