Je veux exécuter un script start.sh
sur un serveur distant qui exécute ceci:
nohup node server.js &
Naïvement, j'appelle SSH comme ceci:
ssh myserver <<EOF
./start.sh &
EOF
Cela démarre le script, mais laisse la session connectée. Je veux suivre cette étape avec d'autres commandes dans un script, donc ce n'est pas bon.
Comment puis-je SSH sur la machine distante, lancer une nohup
commande en arrière-plan, puis me déconnecter? Je suppose que je pourrais mettre le processus SSH en arrière-plan, mais cela ne semble pas correct.
la source
> /dev/null
.> /dev/null 2>&1
est de jeter toute sortie stdout / stderr en redirigeant vers le trou noir lolnohup command2 >> /path/to/command2.log 2>&1 &
dans un terminal puis ferme le terminal, le processus est perdu?Pourquoi ne pas simplement tmux ou screen et en finir? Par exemple:
C'est pratique si c'est quelque chose qui va tourner en boucle ou prendre du temps. Vous pouvez vous déconnecter de la session et celle-ci restera active.
la source
ne fonctionne pas en mode démon, votre session ssh reste connectée. La session Ssh reviendra dans 10 secondes, malgré l'utilisation de nohup.
La raison est que stdout et stderr distants sont toujours connectés à votre session. Il maintient la session ssh en vie, nohup ne l’aide pas.
Cette:
revient immédiatement. Il commence le processus à distance avec nohup et quitte immédiatement la session ssh.
la source
Forme plus courte:
Il semble que bash se déconnecte du terminal, donc aucun nohup n’est nécessaire. Je lance Ubuntu 14.04 x86_64, bash 4.3.11.
la source
nohup;
se contente de déposer une plainte concernant des arguments manquants.command 1; command 2; ...
script OP veut être exécuté. OP peut également utiliser un cas spécial de cette réponse:ssh myserver ./start.sh &>/dev/null &