web-dev-qa-db-fra.com

Exécuter plusieurs programmes graphiques depuis un terminal sans les renier

J'ai fait un script bash très simple (mais utile pour moi). Tout ce qu'il fait est simplement d'ouvrir certaines applications que j'ouvrais manuellement. Voici le code:

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

Maintenant, lorsque je ferme le terminal, les applications ouvertes par le script continuent de s'exécuter. Ce qui est normal, c’est la raison pour laquelle le "&" est là.

Ma question est la suivante: existe-t-il un moyen de toujours exécuter ces applications automatiquement mais également de les fermer automatiquement? S'ils étaient toujours connectés au terminal, ils se fermeraient, mais lorsque je supprime l'esperluette, il ne lance que la première application.

Merci

7
Karim Mtl

Ces deux fonctions peuvent être utilisées à partir de votre fichier _.bashrc_ pour les lancer et les fermer. Appelez-les simplement avec lapp et 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'
}
_

Information:

  • n'oubliez pas d'exécuter _source .bashrc_ après avoir ajouté ces fonctions

(source: man pkill )

5
George Udosen

Vous devrez source le script pour que ces commandes soient exécutées dans votre shell actuel, au lieu du shell créé pour le script:

. ./foo.sh

Ensuite, ces processus d'arrière-plan feront partie du contrôle des tâches de votre shell.

Il pourrait être plus facile d'utiliser une fonction. Dans votre base, par exemple, ajoutez:

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

Ensuite, lorsque vous exécuterez foo à partir de bash, les commandes seront exécutées dans votre shell actuel.

5
muru