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.
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'
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'
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.