web-dev-qa-db-fra.com

Comment puis-je utiliser SSH pour exécuter une commande sur une machine à unix distante et quitter avant que la commande se termine?

Comment puis-je utiliser SSH pour exécuter une commande sur une machine UNIX et quitter avant que la commande se termine?

Par exemple, si je tape

ssh localhost 'sleep 60 &'

ssh se bloque sur mon terminal jusqu'à ce que le sommeil se termine, même si le sommeil est exécuté à l'arrière-plan.

17
Richard Hoskins

SSH a un commutateur -F qui fait exactement la même chose que l'utilisation de NOHUP sur votre client, mais permettant à SSH de demander un mot de passe. Utilisez-le comme ça:

ssh localhost -f 'command'

mais: ssh vivra toujours en arrière-plan, donc si vous éteignez le client avant la fin de la commande sur le serveur, elle sera abandonnée. Si vous souhaitez que la connexion SSH soit fermée après avoir exécuté la commande, vous pouvez utiliser l'écran du côté serveur:

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

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 simplement le paramètre SSH'S -F:

ssh -f localhost 'sleep 60'
6
neu242

Ou après vous être connecté à l'aide de ssh, démarrez screen Si vous souhaitez revenir plus tard, examiner la progression ou la sortie.

2
Arjan