J'essaye d'utiliser un script shell pour démarrer une commande. Je me fiche de savoir si / quand / comment / pourquoi cela se termine. Je veux que le processus démarre et s'exécute, mais je veux pouvoir revenir immédiatement à mon shell ...
100
nohup
,&
etdisown
, cliquez ici pour défiler à la quatrième réponse .Réponses:
Vous pouvez simplement exécuter le script en arrière-plan:
Notez que c'est différent de mettre l'
&
intérieur de votre script, qui ne fera probablement pas ce que vous voulez.la source
&
est à l'intérieur du script et que vous n'en avez paswait
, la commande d'arrière-plan sera supprimée à la fermeture du script.myscript
modifie l'environnement du terminal, ex. c'est une commande d'initialisation du terminal qui n'est pas nécessaire immédiatement et qui peut être retardée, va-t-elle encore modifier l'environnement du terminal?Tout le monde a juste oublié
disown
. Voici donc un résumé:&
met le travail en arrière-plan.disown
supprime le processus du contrôle des tâches du shell, mais il le laisse toujours connecté au terminal.SIGHUP
(si le shell reçoit unSIGHUP
, il envoie également unSIGHUP
au processus, ce qui provoque normalement la fin du processus).nohup
déconnecte le processus du terminal, redirige sa sortie versnohup.out
et le protègeSIGHUP
.SIGHUP
.&
(comme travail d'arrière-plan).la source
disown
sur Debian ou OS X. Je pensais que c'était un programme, mais il me semble que je me trompe. Qu'Est-ce que c'est?ne raccroche pas lorsque vous fermez le terminal. la sortie par défaut va à nohup.out
Vous pouvez combiner cela avec un arrière-plan,
et débarrassez-vous de la sortie,
vous pouvez également
disown
une commande. de typecmd
,Ctrl-Z
,bg
,disown
la source
tail nohup.out
, cela affichera les 10 dernières lignes de la sortie de la commande. J'utilise ceci pour les travaux de sauvegarde rsync pour voir dans quel fichier il se trouve actuellement.jobs
.Alternativement, après avoir lancé le programme, vous pouvez appuyer sur Ctrl-Z qui arrête votre programme, puis tapez
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)
la source
screen -m -d $command$
lance la commande dans une session détachée. Vous pouvez utiliserscreen -r
pour attacher à la session commencée. C'est un outil formidable, extrêmement utile également pour les sessions à distance. En savoir plus surman screen
.la source