web-dev-qa-db-fra.com

Comment puis-je mettre en arrière-plan le processus en cours d'exécution sous Linux?

J'ai une commande qui télécharge des fichiers à l'aide de git sur un serveur distant à partir du shell Linux et cela prendra plusieurs heures.

Comment puis-je mettre ce programme en cours en arrière-plan? Pour que je puisse toujours travailler sur Shell et que ce processus soit également terminé?

98
user825904

Suspendez le processus avec CTRL + Z puis utilisez la commande bg pour le reprendre en arrière-plan. Par exemple:

sleep 60
^Z  #Suspend character shown after hitting CTRL+Z
[1]+  Stopped  sleep 60  #Message showing stopped process info
bg  #Resume current job (last job stopped)

Plus d'informations sur le contrôle des tâches et l'utilisation de bg dans la page de manuel bash:

CONTRÔLE DE TRAVAIL
Taper le caractère suspendre (généralement ^ Z, Control-Z) pendant l'exécution d'un processus provoque son arrêt et son contrôle. à bash. [...] L'utilisateur peut ensuite manipuler l'état de ce travail, en utilisant la commande bg pour le poursuivre en arrière-plan, [...]. A ^ Z prend effet immédiatement et a pour effet supplémentaire de supprimer la sortie en attente et la tête de type.

bg [ jobspec ...]
Reprendre chaque tâche suspendue en spécifiant un travail en arrière-plan, comme si elle avait été lancée avec &. Si jobpec n'est pas présent, la notion de Shell concernant le travail actuel est utilisé.

EDIT

Pour démarrer un processus où vous pouvez même tuer le terminal et qu'il continue à fonctionner

Nohup [command] [-args] > [filename] 2>&1 &

par exemple.

Nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &

Pour ignorer simplement la sortie (pas très sage), changez le nom du fichier en /dev/null

Pour que le message d'erreur soit défini sur un autre fichier, remplacez &1 par un nom de fichier.

188
Ed Heal