web-dev-qa-db-ja.com

端末を無視せずに複数のGUIプログラムを実行します

非常にシンプルな(しかし私にとっては便利な)bashスクリプトを作成しました。私が手動で開いていたいくつかのアプリケーションを開くだけです。コードは次のとおりです。

#!/bin/bash
netbeans &
mysql-workbench &
opera &
chromium-browser &

ターミナルを閉じると、スクリプトによって開かれたアプリケーションが実行され続けます。これは正常です、それが「&」の意味です。

私の質問は、これらのアプリケーションを自動的に実行し、自動的に閉じる方法はありますか?まだ端末に接続されている場合は閉じますが、アンパサンドを削除すると、最初のアプリケーションのみが実行されます。

ありがとう

7
Karim Mtl

これらの2つの関数は、.bashrcファイルから使用して、それらを起動および閉じることができます。単にlappおよびkappで呼び出します。

lapp(){
     netbeans &
     mysql-workbench &
     opera &
     chromium-browser &
}

kapp() {
    pkill 'netbeans|mysql-workbench|opera|chromium-browser'
}

#Or

kapp() {
    killall 'netbeans|mysql-workbench|opera|chromium-browser'
}

情報:

  • これらの関数を追加した後にsource .bashrcを実行することを忘れないでください

(ソース: man pkill

5
George Udosen

これらのコマンドがスクリプト用に開始された分岐したシェルではなく、現在のシェルで実行されるように、スクリプトをソースする必要があります。

. ./foo.sh

次に、これらのバックグラウンドプロセスは、シェルのジョブ制御の一部になります。

関数を使用する方が簡単かもしれません。たとえば、bashrcに次を追加します。

foo () {
    netbeans &
    mysql-workbench &
    opera &
    chromium-browser &
}

次に、bashからfooを実行すると、現在のシェルでコマンドが実行されます。

5
muru