Supposons que gedit
est le programme que vous souhaitez exécuter en mode détaché (ou "désapprouvé", "démêlé", "découplé"). Selon ce que vous voulez faire exactement, il y a différentes façons:
Programme en cours d'exécution
Désavoué:
disown -h
est la voie à suivre si vous souhaitez le faire 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 avec Ctrl + Z . Ensuite, vous pouvez mettre entre parenthèses en utilisant bg [jobId]
(par exemple, bg 1
). Vous obtenez une liste des travaux en cours avec leur ID de travail en utilisant 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 que vous souhaitez découpler au préalable, vous utiliserez:
nohup gedit &
Peut-être voudrez-vous également rediriger la sortie du shell et donner à 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 ennuyé par elle ou pour l'utiliser plus tard. L'entrée nulle peut aider à prévenir les hickups dans SSH, par exemple.
Sous-shell:
Vous pouvez obtenir un effet similaire en
.
$ (geany >/dev/null 2>&1 &)
Les crochets ouvrent un nouveau sous-shell dans lequel exécuter gedit. Le >/dev/null 2>&1
redirige la sortie du shell vers nulle part (suppression de la sortie). Et le &
à la fin met le processus en arrière-plan.
Multiplexage des terminaux
Multiplexez également les terminaux en utilisant screen ou byobu . Vous exécutez essentiellement 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 boybu qui pourraient vous être utiles pour vos premiers pas:
Utile:
-
F2 Créer une nouvelle fenêtre
-
F3 Passer à la fenêtre suivante
-
F4 Aller à la fenêtre précédente
-
F6 Détacher de la session et vous déconnecter
-
Shift-F6 Détachez de la session, mais ne vous déconnectez pas
-
F7 Entrer en mode de défilement / recherche
-
Ctrl-F5 Reconnectez tous les sockets ou agents SSH / GPG
Moins utile:
-
Maj-F2 Fractionner l'écran horizontalement
-
Ctrl-F2 Fractionner l'écran verticalement
-
Maj-F3 Déplace le focus sur le prochain partage
-
Shift-F4 Déplace le focus sur le groupe précédent
-
Maj-F5 Réduire tous les fractionnements
-
F5 Actualiser toutes les notifications d'état
-
F8 Renommer la fenêtre en cours
-
F9 Lancez le menu de configuration de Byobu
-
F12 Touche d'échappement de l'écran GNU
-
Alt-Pageup Revenez dans l'historique de cette fenêtre
-
Alt-Pagedown faire défiler l'historique de cette fenêtre
-
Ctrl-a -! Active ou désactive toutes les liaisons de clé de Byobu
Le démon "at" et d'autres
at
est un petit outil très utile pour exécuter une commande à une heure programmée. Il peut être "abusé" de détacher une commande du shell:
echo './myprogram myoption1 myoption2' | at now
Vous pouvez aussi regarder dans setsid
et start-stop-daemon
, mais les autres méthodes devraient suffire.