2010-07-08 4 views
361

J'utilise l'outil multiplexeur screen sur le shell de commande et ouvre beaucoup d'écrans. J'oublie alors quel ID de processus associe à quelle tâche.Comment attribuer un nom à un écran?

Je souhaite définir un nom pour un écran mais ne trouve pas d'option dans la page de manuel.

Actuellement, la liste des écrans ressemble à ceci:

There are screens on: 
    5422.pts-1.aws1 (Detached) 
    5448.pts-1.aws1 (Detached) 
    5027.pts-1.aws1 (Detached) 
3 Sockets in /var/run/screen/S-sb. 

Et je voudrais voir quelque chose comme ceci:

There are screens on: 
    5422.logCleanWorker (Detached) 
    5448.overNightLongTask(Detached) 
    5027.databaseOverNightLongTask (Detached) 
3 Sockets in /var/run/screen/S-sb. 

Comment puis-je faire cela?

+1

la question ressemble plus il est demander « comment renommer les sessions existantes » plutôt que « comment lancer de nouvelles sessions avec un nom ». Dans ce contexte, la la réponse actuellement choisie n'est pas vraiment appropriée La bonne réponse devrait plutôt être celle donnée par 'user164176' - http://stackoverflow.com/a/3309696/636762 –

+0

Les noms de vos sessions d'écran suggèrent que vous créiez une nouvelle session d'écran par une seule tâche (peut-être une seule commande) L'écran prend en charge [plusieurs fenêtres] (https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/#creating), donc vous un exécuter toutes ces tâches dans une seule session d'écran. – Melebius

Répondre

560

Pour créer un nouvel écran avec le nom foo, utilisez

screen -S foo 

Puis rattachez, exécutez

screen -r foo # or use -x, as in 
screen -x foo # for "Multi display mode" (see the man page) 
+15

Dans votre solution, vous expliquez comment en créer de nouveaux avec des noms corrects plutôt que de modifier ceux qui existent déjà. Il n'y en a aucun qui veut terminer la session s'il est possible de la garder. –

+10

Faites défiler jusqu'à la réponse de user164176 pour voir comment renommer les sessions existantes. – jlh

+0

la question ressemble plus à demander "comment renommer des sessions existantes" plutôt que "comment démarrer de nouvelles sessions avec un nom". Dans ce contexte, la réponse actuellement choisie n'est pas vraiment appropriée. La réponse correcte choisie devrait plutôt être celle donnée par 'user164176' - http://stackoverflow.com/a/3309696/636762 ci-dessous –

424

screen -S SESSIONNAME est bon pour démarrer une session avec un nom, mais si vous commencez une session et plus tard décider de le nommer, entrez le mode de commande (C-a :), puis entrez la commande sessionname SESSIONNAME.

+11

Ceci est la solution appropriée car elle se concentre sur le renommage de la session existante plutôt que d'en créer une nouvelle. –

+2

Une note rapide sur 'Ca:' syntax .... "Toutes les commandes d'écran sont préfixés par une touche d'échappement, par défaut' Ca' (c'est Control-a, parfois écrit '^ a'). Pour envoyer un littéral' Ca 'à l'écran des programmes, utilisez' Ca a', ce qui est utile lorsque vous travaillez avec un écran, par exemple 'Ca an' déplacera l'écran dans une nouvelle fenêtre sur l'écran. (ref: http://aperiodic.net/screen/quick_reference) –

+0

Très apprécié. Même si je sais que vous pouvez commencer avec un nom, je commence souvent sans nommer, alors j'aimerais pouvoir le faire plus tard. Merci! – Ketzak

1

Je suis un débutant à l'écran mais je trouve cela très utile lors de la restauration des connexions perdues. Votre question a déjà été répondue mais cette information pourrait servir de complément - j'utilise le mastic avec le gestionnaire de connexion de mastic et nommez mes écrans - "tab1", "tab2", etc. - comme pour moi l'image globale du 8-10 Les onglets sont plus importants que chaque nom d'onglet individuel. J'utilise le 8ème onglet pour se connecter à db, le 7 pour les journaux, etc. visualisation Alors, quand je veux refixer mes écrans j'ai écrit un emballage simple qui dit:

#!/bin/bash 
screen -d -r tab$1 

où le premier argument est le numéro d'onglet.

+0

Cela pourrait être mieux fait comme une fonction bash. –

8

L'écran d'utilisation de façon la plus facile avec le nom

screen -S 'name' 'application' 
  • Ctrl + un, d = sortie et laisser l'application ouverte

Retour à l'écran:

screen -r 'name' 

par exemple en utilisant le lynx avec écran

écran Créer:

screen -S lynx lynx 

Ctrl + un, d = sortie

plus tard, vous pouvez revenir avec:

screen -r lynx 
+15

Trois problèmes avec ceci. D'abord, plusieurs personnes ont déjà posté ceci. Deuxièmement, vous lui dites des choses d'utilisation d'écran de base qu'il connaît déjà. Troisièmement, vous n'avez pas répondu à la question, puisqu'il a demandé comment nommer une session d'écran déjà existante. –

43

Comme déjà mentionné, screen -S SESSIONTITLE fonctionne pour démarrer une session avec un titre (SESSIONTITLE), mais si vous démarrez une session et décidez plus tard de changer son titre. Ceci peut être accompli en utilisant la valeur par défaut des raccourcis clavier:

Ctrl + un, A

qui demande:

Set windows title to:SESSIONTITLE 

changement SESSIONTITLE par le retour en arrière et en tapant dans le titre de votre choix . Pour confirmer le changement de nom et lister tous les titres.

Ctrl + un, "

+31

Vous traitez les termes _session_ et _window_ comme interchangeables quand ils ne le sont pas. 'Ctrl + a',' A' ne définit pas le nom _session_ (SESSIONNAME'), il ne définit que le titre actuel de _window_. Les titres de fenêtres dans une session n'apparaissent pas dans la liste des sessions quand ils sont interrogés avec 'screen -list'. La question demande comment définir le nom _session_. – StvnW

+2

utile mais il change le titre de la fenêtre en cours, pas le nom de la session. – Znik

Questions connexes