Comment utiliser la commande d'écran pour éviter la terminaison de session SSH inattendue
- 2216
- 522
- Maëlle Perez
Problème de déconnexion SSH
Votre session de terminal peut être fermée en raison de divers problèmes de réseau pendant que vous êtes
exécuter un processus sur une machine distante, par exemple.:
# Écriture Échec: tuyau cassé
À la suite de ce réseau de déconnexion, votre session SSH Shell tuera également par inadvertance tous les processus d'enfants exécutés sous votre ssh
Session sur la machine distante.
Exécution d'une solution de session SSH ininterrompue
Utilisez le filtrer
commande pour enregistrer la session. Pendant que votre session SSH se déconnecte, la commande d'écran maintient votre processus distant en cours d'exécution. Considérez un exemple SSH suivant où nous essayons de SSH à partir d'un hôte local dix.1.1.2
enlever dix.1.1.15
héberger.
Commande d'écran Exemple SSH
Commençons par inscrire nos séances d'écran actuellement ouvertes:
Écran local> $ -List - Aucune socket trouvée dans / var / run / écran / s-lubos.
De ce qui précède filtrer
Sortie de commande Nous pouvons voir qu'actuellement, nous n'avons aucune session ouverte. Créons un nouveau filtrer
Session pendant que nous en même temps ssh
à un hôte distant. Ouvrez le nouveau terminal et entrez:
local> $ écran ssh root @ 10.1.1.15
Énumérez à nouveau nos séances d'écran:
Écran local> $ -List il y a un écran sur: 5646.pts-0.thebeast (13/05/15 16:49:30) (ci-joint) 1 prise dans / var / run / écran / s-lubos.
Ce qui précède filtrer
La sortie montre que nous avons une session attachée avec PID ID 5646
. Pour le moment, nous pouvons démarrer un processus sur un hôte distant comme pour un exemple, nous pouvons effectuer un ping simple:
Remote> # ping 8.8.4.4 ping 8.8.4.4 (8.8.4.4) 56 (84) octets de données. 64 octets de 8.8.4.4: ICMP_REQ = 1 TTL = 57 Time = 18.2 ms 64 octets de 8.8.4.4: ICMP_REQ = 2 TTL = 57 Time = 17.2 ms 64 octets de 8.8.4.4: ICMP_REQ = 3 TTL = 57 Time = 18.0 ms
À ce stade, nous pouvons simuler une déconnexion du réseau à un hôte distant en débranchant manuellement le câble réseau:
local> $ ping 10.1.1.15 ping 10.1.1.15 (10.1.1.15) 56 (84) octets de données. À partir de 10.1.1.2 icmp_seq = 9 hôte de destination inaccessible à partir de 10.1.1.2 icmp_seq = 10 hôte de destination inaccessible à partir de 10.1.1.2 ICMP_SEQ = 11 Hôte de destination inaccessible ^ C --- 10.1.1.15 Ping Statistics --- 13 paquets transmis, 0 reçus, +3 erreurs, 100% de perte de paquets, heure 12088 ms tuyau 3
À ce stade, nous avons perdu la connexion et notre ssh
La session se figera. Nous pouvons maintenant fermer la fenêtre du terminal avec déconnecté ssh
Session et énumérez nos écrans:
Écran local> $ -List il y a un écran sur: 5646.pts-0.thebeast (13/05/15 16:49:30) (détaché) 1 prise dans / var / run / écran / s-lubos.
Comme nous pouvons le voir, notre session d'écran est maintenant détachée. Ensuite, nous recréons une connexion réseau à un hôte distant:
local> $ ping 10.1.1.15 ping 10.1.1.15 (10.1.1.15) 56 (84) octets de données. 64 octets de 10.1.1.15: icmp_seq = 1 ttl = 64 Time = 0.951 ms 64 octets de 10.1.1.15: ICMP_SEQ = 2 TTL = 64 Time = 0.563 ms ^ c --- 10.1.1.15 Ping Statistics --- 2 paquets transmis, 2 reçus, 0% de perte de paquets, heure 1001 ms RTT min / avg / max / mDev = 0.563/0.757/0.951/0.194 MS
À ce stade, nous pouvons à nouveau réprimer notre session SSH distante précédemment ouverte:
local> $ écran -d -r 64 octets de 8.8.4.4: ICMP_REQ = 203 TTL = 57 Time = 18.2 ms 64 octets de 8.8.4.4: ICMP_REQ = 204 TTL = 57 Time = 18.1 ms 64 octets de 8.8.4.4: ICMP_REQ = 205 TTL = 57 Time = 18.1 ms 64 octets de 8.8.4.4: ICMP_REQ = 206 TTL = 57 Time = 18.4 ms 64 octets de 8.8.4.4: ICMP_REQ = 207 TTL = 57 Time = 18.1 ms ^ c --- 8.8.4.4 Ping Statistics --- 207 paquets transmis, 207 Reçu, 0% de perte de paquets, heure 206310ms RTT Min / AVG / MAX / MDEV = 17.231/18.369/23.795/0.571 ms
La sortie ci-dessus avec une perte de paquets de 0% est une preuve que même nous sommes déconnectés d'une session distante par une défaillance du réseau filtrer
La commande a tenu le processus distant en vie sans interruption.
Tutoriels Linux connexes:
- Comment propager un signal aux processus d'enfants à partir d'un bash…
- Comment tuer le processus par son nom
- Gestion de la liste des processus et terminaison automatique des processus
- Comment tuer le processus basé sur le numéro de port dans Linux
- Introduction aux tuyaux nommés sur Bash Shell
- Comment utiliser la commande killall sur Linux
- Guide de dépannage général GNU / Linux pour les débutants
- Une introduction à l'automatisation Linux, des outils et des techniques
- Comment lancer des processus externes avec Python et le…
- Commandes Linux de base
- « Elgg Social Networking Moteur Docker Image Deployment et Utilisation
- FATAL Le système de courrier postfix est déjà en cours d'exécution - Solution »