web-dev-qa-db-fra.com

Lancer la commande en arrière-plan sur SSH

Problème:

Je veux canaliser la sortie de docker logs -f (pour tous les conteneurs) dans une autre commande et la laisser fonctionner sur le serveur distant. J'ai déjà trouvé exécutez une commande Nohup sur SSH, puis déconnectez mais je n'ai pas réussi à adopter la solution à ce cas d'utilisation.

Qu'est-ce que j'ai déjà essayé:

ssh server << EOF
for cont in `docker ps -q`; do
        docker logs -f $cont 2>&1 | bunyan | /var/opt/go-logsink/go-logsink connect 2>&1 &
done
EOF

Version Nohup: Nohup "docker logs -f $cont 2>&1 | bunyan | /var/opt/go-logsink/go-logsink connect"

L'exécution de cette boucle dans une session d'écran fonctionne, mais je souhaite automatiser l'appel après un déploiement et cela ne fonctionne pas. Aussi, j'ai essayé d'appeler Nohup "<command>" dans la boucle et je le vois en train de créer le processus. Lors de la déconnexion de ssh, les processus sont supprimés.

Question:

Comment exécuter cette boucle afin de créer des processus qui restent en vie après la fermeture de la session SSH.

2
Sascha

Screen ou tmux peuvent être ce que vous cherchez, en préservant des sessions actives indépendamment de SSH.

1
SYN