Ceci bloque toujours:
ssh host nohup cmd
Cela laisse encore la connexion ouverte:
ssh host nohup cmd &
Ceci bloque toujours:
ssh host nohup cmd
Cela laisse encore la connexion ouverte:
ssh host nohup cmd &
Réponses:
Essaye ça:
ssh host batch cmd
batch
dépend d'avoir un travail cron
/ at
système sur le système distant.
le &
dans votre exemple, détachera la commande ssh, mais pas votre programme distant.
Cela semble fonctionner:
ssh hôte distant 'tail -f / var / log / syslog & amp;' & amp;
ssh remote-host 'tail -f /var/log/syslog > /dev/null &' &
La première &
va détacher la commande pour l'hôte distant, et le second &
détachera la commande ssh elle-même
Dans mon exemple, la commande tail est toujours en cours d'exécution après la fermeture de la connexion.
modifier cela ne semble pas fonctionner comme tail
quitte peu après la fermeture de la connexion.
Cela peut être lié au fait qu'il écrit à STDOUT
qui relèvera probablement un tuyau cassé après la fermeture de la connexion
éditer 2 fonctionne bien lors de la redirection de la commande tail vers / dev / null ^ _ ^
Soyez prudent et n'écrivez pas dans stderr / stdout, ni de rediriger la sortie vers une destination locale
Ce problème est apparemment ancien (même plus long que votre question!). La solution consiste à rediriger stdout et stderr. L'exemple de livre de texte est la suivante:
ssh server 'sleep 20 & exit'
qui se bloque pendant 20 secondes. En utilisant bash, vous pouvez le réécrire pour:
ssh server 'sleep 20 >/dev/null 2>&1 & exit'
ce qui corrige le problème. Pour tcsh, vous utiliseriez quelque chose comme:
ssh server '(sleep 20 >/dev/null) >& /dev/null & exit'
Références