GNU/Linux >> Tutoriels Linux >  >> Linux

Faire une commande de longue durée sur ssh

Solution 1 :

Le meilleur moyen est d'utiliser screen (sur le serveur) pour démarrer une session pour exécuter la commande, puis déconnectez l'écran afin qu'il continue à fonctionner et que vous puissiez faire d'autres choses, ou simplement vous déconnecter du serveur. L'autre option consiste à utiliser nohup en combinaison avec & donc vous auriez nohup <command> &

Solution 2 :

Vous pouvez également utiliser disown si vous avez déjà commencé le processus sans screen ou nohup

Solution 3 :

Les réponses existantes peuvent bien fonctionner, mais j'avais besoin de quelque chose pour BusyBox (un shell et un ensemble d'outils pour un matériel minimal comme les routeurs domestiques). Mon système n'a pas screen , dtach , at , disown , ou même nohup ! Donc grâce à tbc0 sur SO (lien), j'ai trouvé ce bijou. Il revient immédiatement mais le processus serveur continue de s'exécuter :

ssh myserver 'sleep 100 >&- 2>&- <&- &'

Ou, si plusieurs commandes sont nécessaires :

ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'

Explication :

  • >&- - fermer la poignée de sortie standard
  • 2>&- - fermer stderr
  • <&- - fermer stdin
  • & - mettre le processus en arrière-plan

Cela n'utilise aucun programme externe et devrait fonctionner sur ksh, ash, Bourne shell, bash, etc.


Linux
  1. Comment trouver des connexions SSH actives sous Linux

  2. Caractère spécial '#' dans la commande Perl Ssh ?

  3. La commande de mise en veille à l'aide de la commande d'écran ne s'affiche pas dans Ps ?

  4. SSH - Comment inclure la commande -t dans le fichier ~/.ssh/config

  5. Commande Linux pour attendre qu'un serveur SSH soit opérationnel

Commande SSH

Comment transmettre un mot de passe à la commande SSH sous Linux

Commande d'écran sur Linux expliquée

Rechercher du texte sur la sortie du terminal ?

Oring avec True dans une commande sur Ssh ?

Comment utiliser la commande screen sous Linux