quitte la fenêtre tmux sans quitter le programme Terminal

81

OK je suis nouveau à cela. J'ai installé tmuxpour exécuter une expérience de plusieurs jours. Après avoir tapé, tmux new -s namej'ai eu une nouvelle fenêtre avec une bannière verte en bas. Je compile et exécute le programme java. Maintenant, je ne sais pas comment sortir de la fenêtre (tout en la laissant en marche). Le curseur bash (ou autre) ne répond pas car le programme java est toujours en cours d'exécution. Ma solution jusqu'ici consiste à quitter complètement le programme Terminal et à le rouvrir à nouveau. Des idées sur la façon de quitter la fenêtre tmux sans quitter tout le programme Terminal?

seteropere
la source
2
man tmux | less -p detach
jasonwryan

Réponses:

147

Détacher de la session actuellement attachée

Session

Ctrl+ b dou Ctrl+b :detach

Écran

Ctrl+ a Ctrl+ dou Ctrl+a :detach

Ruban Savvy
la source
Vous devez ensuite exécuter tmux attachpour entrer dans la session ouverte à nouveau après vous reconnecter.
Besi
1
J'ai toujours fait ENTER ~ .Cela semble plus agréable.
Thomas Eding le
8

Les réponses précédentes sont incomplètes, je crois. La :detachseule chose à faire est de fermer les fenêtres qui affichent l’activité tmux. Cependant, tmux lui-même fonctionne toujours en arrière-plan, comme vous pouvez le voir en lançant ps:

myuser 1799 0.0 0.0 2500052 4632 ?? Ss 21Feb16 0:48.39 tmux new-session -s Dev

En fait, même si vous quittez Terminal et que vous le redémarrez, tous les processus tmux sont toujours exécutés en arrière-plan.

Pour réellement tuer le processus tmux lui-même, vous devez faire:

tmux kill-session [-t session_name]

ou simplement:

kill -9 1799

JESii
la source
5
À mon avis, il serait plus logique de commenter les lacunes de certaines réponses dans cette réponse particulière et de laisser votre message en tant que réponse complète et contenue sans demander aux lecteurs de connaître les réponses précédentes et de les analyser ensuite.
Techraf
2
Je pense qu'OP voulait spécifiquement que le processus d'arrière-plan (Java, dans son cas) continue de fonctionner, donc le tuer serait contre-productif. Plus intéressant serait de ré-attacher plus tard au processus détaché avec tmux attach-session.
ThomasH
L'utilisation kill -9est absolument la mauvaise façon de le faire. Cela envoie un SIGKILLsignal qui ne permettra pas au processus de se nettoyer après lui-même, ce qui peut poser de graves problèmes avec des ressources en suspens. SIGKILLne devrait être utilisé que lorsqu'un processus a déjà été demandé poliment de nettoyer et de fermer via un processus SIGTERMsimilaire ou similaire et, pour quelque raison que ce soit, qu'il refuse de le faire; même dans ce cas, il faut toujours éviter d’envoyer SIGKILLs’ils le peuvent. Cette réponse implique (à tort) qu'il devrait s'agir d'une des premières choses qu'une personne devrait faire pour arrêter un processus en arrière-plan, tel qu'un serveur tmux.
eestrada