J'ai un programme sous l'écran. En fait, lorsque je me déconnecte de la session et que je vérifie netstat, je peux voir que le programme est toujours en cours d'exécution (ce que je veux):
udp 0 0 127.0.0.1:1720 0.0.0.0:* 3759/ruby
Je souhaite maintenant rattacher la session à celle qui exécute ce processus. Je lance donc un nouveau terminal et tape screen -r
$ screen -r
There are several suitable screens on:
5169.pts-2.teamviggy (05/31/2013 09:30:28 PM) (Detached)
4872.pts-2.teamviggy (05/31/2013 09:25:30 PM) (Detached)
4572.pts-2.teamviggy (05/31/2013 09:07:17 PM) (Detached)
4073.pts-2.teamviggy (05/31/2013 08:50:54 PM) (Detached)
3600.pts-2.teamviggy (05/31/2013 08:40:14 PM) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Mais comment savoir quelle est la session exécutant le processus que j'ai créé?
Maintenant, l'un des documents que j'ai rencontrés disait:
"Lorsque vous utilisez une fenêtre, tapez Ca A pour lui donner un nom. Ce nom sera utilisé dans la liste des fenêtres et vous aidera à vous rappeler ce que vous faites dans chaque fenêtre lorsque vous commencez à utiliser beaucoup de fenêtres. "
Le fait est que lorsque je suis dans une nouvelle session d’écran, j’essaie d’appuyer sur les touches Ctrl + A et rien ne se passe.
la source
screen -r
suivi du nombre 1, 2, 3 ... dans cette liste d'écrans.Réponses:
Il y a deux niveaux de "listes" impliqués ici. Premièrement, vous avez la "liste de fenêtre" dans une session individuelle, ce à quoi sert ctrl-A A, et deuxièmement, il y a une "liste de session" qui correspond à ce que vous avez collé dans votre question et qui peut également être visualisé
screen -ls
.Vous pouvez personnaliser les noms de session avec le
-S
paramètre, sinon il utilise votre nom d’hôte (teamviggy), par exemple:(ctrl-A d se détacher)
(ctrl-A d se détacher)
En prime, vous pouvez utiliser une abréviation non équivoque du nom que vous passez
-S
plus tard pour vous reconnecter:(Je suis reconnecté à la
myprogramrunningunderscreen
session)la source
ctrl-A a
etctrl-A shift-A
. Ce dernier m'a incité àSet window's title to:
. Assurez-vous que vous appuyez sur shift pour le deuxième A.-S
, vous devez au moins utiliser une abréviation non ambiguë du nom suivant le numéro d'identification et un point dans le nom complet de la session d'écran lors de la reprise, contrairement à la méthode automatique. noms de session générés, où vous pouvez inclure l’ID et le point.J'ai eu un cas où
screen -r
pas réussi à se rattacher. Ajout du-d
drapeau pour qu'il ressemble à cecia travaillé pour moi. Il a détaché l'écran précédent et m'a permis de le rattacher. Voir la page de manuel pour plus d'informations.
la source
Un moyen facile est de simplement vous reconnecter à un écran arbitraire avec
Ensuite, une fois que vous exécutez screen, vous pouvez obtenir une liste de tous les écrans actifs en appuyant sur
Ctrl-A "
(c.-à-d. Control-A suivi d'un guillemet double). Ensuite, vous pouvez simplement sélectionner les écrans actifs un par un et voir ce qu’ils exécutent. Nommer les écrans facilitera évidemment l'identification du bon.Juste mes deux cents
la source
J'ai tendance à utiliser le combo suivant lorsque j'ai besoin de travailler sur plusieurs machines dans plusieurs clusters:
Cela crée la nouvelle session d’écran où je peux construire l’environnement.
C’est ce que j’utilise par la suite pour me rattacher à cette session d’écran. Les astuces sont que si la session est attachée ailleurs, elle détache cet autre affichage. De plus, s'il n'y a pas de session pour une raison étrange, comme si quelqu'un redémarrait mon serveur sans que je le sache, il en crée une. Finalement. si plusieurs sessions existent, il utilise la première.
Un grand bravo à https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen-instructions pour cette astuce il y a quelque temps.
MODIFIER:
Voici également quelques explications utiles
man screen
sur les paramètres cryptiquesil y a plus avec
-D
alors assurez-vous de vérifierman screen
la source
La sortie de
screen -list
est formatée commepid.tty.host
. Les pids peuvent être utilisés pour obtenir le premier processus enfant avecpstree
:Vous obtiendrez une liste comme celle-ci
la source
ou
la source