Solution 1 :
Le meilleur moyen est d'utiliser screen
(sur le serveur) pour démarrer une session pour exécuter la commande, puis déconnectez l'écran afin qu'il continue à fonctionner et que vous puissiez faire d'autres choses, ou simplement vous déconnecter du serveur. L'autre option consiste à utiliser nohup
en combinaison avec &
donc vous auriez nohup <command> &
Solution 2 :
Vous pouvez également utiliser disown
si vous avez déjà commencé le processus sans screen
ou nohup
Solution 3 :
Les réponses existantes peuvent bien fonctionner, mais j'avais besoin de quelque chose pour BusyBox (un shell et un ensemble d'outils pour un matériel minimal comme les routeurs domestiques). Mon système n'a pas screen
, dtach
, at
, disown
, ou même nohup
! Donc grâce à tbc0 sur SO (lien), j'ai trouvé ce bijou. Il revient immédiatement mais le processus serveur continue de s'exécuter :
ssh myserver 'sleep 100 >&- 2>&- <&- &'
Ou, si plusieurs commandes sont nécessaires :
ssh myserver '(echo one; sleep 100; echo two; sleep 200) >&- 2>&- <&- &'
Explication :
>&-
- fermer la poignée de sortie standard2>&-
- fermer stderr<&-
- fermer stdin&
- mettre le processus en arrière-plan
Cela n'utilise aucun programme externe et devrait fonctionner sur ksh, ash, Bourne shell, bash, etc.