Honnêtement, je ne peux pas croire que je ne trouve pas de solution à ce problème en ligne. Je suis tombé sur quelques choses qui semblent similaires, mais rien qui fait vraiment ce que je veux ...
J'essaie d'utiliser un script shell pour lancer une commande. Je ne me soucie pas si/quand/comment/pourquoi cela se termine. Je veux que le processus commence et s'exécute, mais je veux pouvoir revenir immédiatement à mon shell ...
J'espère que c'est assez clair, je manque probablement juste quelque chose d'incroyablement stupide
Vous pouvez simplement exécuter le script en arrière-plan:
$ myscript &
Notez que cela diffère de l'insertion du &
dans votre script, qui ne fera probablement pas ce que vous voulez.
Nohup cmd
ne raccroche pas lorsque vous fermez le terminal. la sortie par défaut va à Nohup.out
Vous pouvez combiner cela avec le backgrounding,
Nohup cmd &
et se débarrasser de la sortie,
Nohup cmd > /dev/null 2>&1 &
vous pouvez aussi disown
une commande. tapez cmd
, Ctrl-Z
, bg
, disown
Tout le monde a juste oublié disown
. Alors voici un résumé:
&
met le travail en arrière-plan.
disown
supprime le processus du contrôle de travail du shell, mais le laisse toujours connecté au terminal.
SIGHUP
(si le shell reçoit une SIGHUP
, il envoie également une SIGHUP
au processus, ce qui entraîne normalement son arrêt).Nohup
déconnecte le processus du terminal, redirige sa sortie sur Nohup.out
et le protège de SIGHUP
.
SIGHUP
envoyée.&
(comme tâche d’arrière-plan).Sinon, une fois le programme en cours d'exécution, vous pouvez appuyer sur Ctrl-Z, ce qui arrête votre programme et tapez
bg
qui met votre dernier programme arrêté en arrière-plan. (Utile si vous avez commencé quelque chose sans '&' et que vous le voulez toujours dans le fond sans le redémarrer)
screen -m -d $command$
démarre la commande dans une session détachée. Vous pouvez utiliser screen -r
pour vous connecter à la session démarrée. C'est un outil formidable, extrêmement utile également pour les sessions à distance. Lire plus à man screen
.