Question Rattachez ou créez une session d'écran nommée? (ou sessions d'écran persistantes)


En gros, j’ai une session d’écran à distance, sur laquelle je souhaite me rattacher automatiquement. Actuellement, je le fais avec la commande suivante (en tant que signet iTerm ou alias)

ssh host -t screen -x thesessionname

Cela fonctionne bien, mais si la session meurt pour une raison quelconque, j'aimerais qu'elle soit recréée lors de ma prochaine connexion. le -R drapeau pour screen est presque parfait:

ssh host -t screen -R -S thesessionname

..mais si la session est déjà attachée, une deuxième session est faite (comme -R recherche simple pour la première session détachée, si aucune n’est trouvée, elle en crée une nouvelle)

Y at-il un moyen de faire la -R Recherchez également les sessions attachées et créez-en une nouvelle si thesessionname n'existe pas?

Si ce n'est pas facilement faisable, comment pourrais-je recréer automatiquement la session d'écran quand elle meurt? Peut-être qu'un script exécuté par cron recherche la session nommée, en le créant s'il ne devait pas exister?


23
2017-07-09 16:13


origine




Réponses:


Dites à l'écran d'être un peu plus persistant pour essayer:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

Donc, combinez les deux et vous devriez avoir votre solution ("-DR" est équivalent à "-D -R"):

screen -DR <yoursession> 

De plus, il est utile de savoir que vous pouvez afficher les sessions en cours avec:

screen -ls

27
2017-07-09 16:17



Parfait, screen -x -R -S main C'est ce que j'ai fini par utiliser (fonctionne de la même manière sans le détachement forcé), merci! - dbr
Parfois, vous voulez utiliser sceen -r <yoursession>, donnera une erreur quand il est déjà attaché (au lieu de créer une nouvelle session). - danger89


Quelques bonnes options. Tout d'abord, mon préféré:

screen -x -R

Cela s'attachera à la première session d'écran disponible (partage si une autre connexion est connectée), et s'il n'y a aucune session d'écran du tout, démarrez-en une nouvelle.

screen -d -RR

Les documents pour cela disent "Rattachez une session et, si nécessaire, détachez-la ou créez-la. Utilisez la première session si plus d'une session est disponible." Fondamentalement, le double-R fait en sorte que la première session soit attachée.

screen -D -RR

"Attachez ici et maintenant. Peu importe ce que cela signifie, faites-le." Détachera et déconnectera à distance toutes les autres sessions attachées et se joindra à la première session. Fondamentalement, fait tout ce qu'il faut pour attacher une session existante et en crée une nouvelle s'il n'y a rien.

Le tout premier (-x -R) est le moins susceptible de causer des problèmes (ne détache pas votre autre connexion), mais il est simplement lié à quelque chose s'il y a quelque chose à attacher et crée quelque chose s'il n'y a rien à attacher.


11
2017-07-09 17:01



Ce sont toutes des options pratiques / utiles, mais aucune d’entre elles ne répond à la question initiale, qui était de se (re) connecter à une session. de nom. - Daniel


j'utilise

screen -dRRS sessname

Je ne veux pas que toute ma connexion sur l'autre shell soit supprimée, comme -D fait, et je ne veux certainement pas le mode multi-attach de -x.


4
2017-07-09 17:12