Comment puis-je utiliser ssh pour exécuter une commande sur une machine Unix distante et sortir avant que la commande ne soit terminée?

Comment puis-je utiliser ssh pour exécuter une commande sur une machine Unix et sortir avant que la commande ne soit terminée?

Par exemple, si je tape

ssh localhost 'sleep 60 &' 

Ssh se bloque sur mon terminal jusqu'à ce que le sommeil soit terminé, même si le sommeil est exécuté en arrière-plan.

SSH a un -f swtich qui fait exactement la même chose que l'utilisation de nohup sur votre client, mais permet à ssh de demander un mot de passe. Utilisez-le comme ça:

 ssh localhost -f 'command' 

Mais : SSH va encore vivre en arrière-plan, donc, si vous voulez réduire le client avant la commande et que le serveur a fini, il sera interrompu. Si vous souhaitez que la connexion ssh soit fermée après l'exécution de la commande, vous pouvez utiliser l'écran sur le côté serveur:

 ssh localhost -f 'screen -d -m sleep 60' 

Utilisez nohup, stdout / stderr redirection, et exécutez la commande en arrière-plan:

  nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null & 

EDIT: Ou même mieux, utilisez le paramètre s-s de ssh:

 ssh -f localhost 'sleep 60' 

Ou après la connexion en utilisant ssh , commencez l' screen si vous souhaitez revenir plus tard, pour regarder la progression ou la sortie.