Supposons que gedit
est le programme que vous voulez exécuter de manière détachée (alias "désowned", "disentangled", "decoupled"). Il existe différentes façons de procéder, selon ce que vous voulez faire exactement :
Programme déjà en cours d'exécution
Disown :
disown -h
est la solution si vous voulez faire cela avec un programme déjà en cours d'exécution (c'est-à-dire si vous avez oublié de nohup
il). Vous devez d'abord l'arrêter en utilisant Ctrl + Z . Ensuite, vous pouvez mettre en arrière-plan en utilisant bg [jobId]
(par exemple bg 1
). Vous pouvez obtenir une liste des travaux en cours avec leur JobId en utilisant la méthode suivante jobs
. Après cela, vous pouvez le découpler du terminal en utilisant disown -h %[jobId]
. Exemple de session de terminal :
$ gedit
^Z
[1]+ Stopped gedit
$ jobs
[1]+ Stopped gedit
$ bg 1
[1]+ gedit &
$ disown -h %1
$ exit
Le programme n'a pas encore commencé
nohup
nohup
n'est pas toujours présent sur toutes les machines. Si vous savez à l'avance que vous voulez découpler, vous pouvez utiliser :
nohup gedit &
Peut-être voudrez-vous rediriger la sortie de Shell ainsi que votre programme une pseudo source d'entrée, donc : nohup ./myprogram > foo.out 2> bar.err < /dev/null &
. Vous voudriez rediriger la sortie pour ne pas être gêné par elle ou pour l'utiliser plus tard. L'entrée nulle peut aider à prévenir les problèmes dans ssh et autres.
Sous-coque :
Vous pouvez obtenir un effet similaire en
$ (geany >/dev/null 2>&1 &)
Les parenthèses ouvrent un nouveau sous-shell pour exécuter gedit. Le site >/dev/null 2>&1
redirige la sortie Shell vers nulle part (suppression de la sortie). Et le &
à la fin met le processus en arrière-plan.
Multiplexage des terminaux
De même, le multiplexage des terminaux utilisant écran o byobu . En fait, vous exécutez le programme dans un terminal qui lui est propre. Je peux vraiment recommander byobu pour d'autres raisons aussi. Vous trouverez ci-dessous une liste de raccourcis de byobu qui pourraient vous être utiles pour vos premiers pas :
Utile :
-
F2 Créer une nouvelle fenêtre
-
F3 Passer à la fenêtre suivante
-
F4 Passer à la fenêtre précédente
-
F6 Se détacher de la session et se déconnecter
-
Shift-F6 Se détacher de la session, mais ne pas se déconnecter
-
F7 Entrer dans le mode de défilement/recherche
-
Ctrl-F5 Reconnectez les sockets ou agents SSH/GPG.
Moins utile :
-
Shift-F2 Diviser l'écran horizontalement
-
Ctrl-F2 Diviser l'écran verticalement
-
Shift-F3 Déplacer le focus sur le prochain split
-
Shift-F4 Déplacer le focus sur le split précédent
-
Shift-F5 Réduire tous les splits
-
F5 Rafraîchir toutes les notifications d'état
-
F8 Renommer la fenêtre actuelle
-
F9 Lancez le menu de configuration de Byobu
-
F12 Touche d'échappement de GNU Screen
-
Alt-Pageup Faites défiler l'historique de cette fenêtre
-
Alt-Pagedown Faites défiler l'historique de cette fenêtre
-
Ctrl-a-! Activez ou désactivez toutes les combinaisons de touches de Byobu.
Le démon 'at' et autres
at
est un petit outil très utile pour exécuter une commande à une heure programmée. Il peut être "mal utilisé" pour détacher une commande du Shell :
echo './myprogram myoption1 myoption2' | at now
Vous pouvez également vous pencher sur setsid
y start-stop-daemon
mais les autres méthodes devraient suffire.