448 votes

Comment reprendre un travail arrêté sous Linux ?

Comment reprendre un travail arrêté sous Linux ? J'utilisais emacs et j'ai accidentellement appuyé sur ctrl-z, ce qui m'a renvoyé à la console. Je peux le voir quand je tape 'jobs'.

[*****]$ jobs
[1]+  Stopped                 emacs test_queue.cpp

1 votes

Il s'agit en fait d'un flux de travail assez normal pour Vim, si vous voulez garder vos commandes dans votre historique bash, alors vous tapez Ctrl-z tapez vos commandes, puis reprenez. Bien entendu, vous pouvez exécuter des commandes sans quitter Vim via la fonction :! ed commande

519voto

Carl Vancil Points 41

La commande fg est ce que vous voulez utiliser. Vous pouvez également lui donner un numéro de travail s'il y a plus d'un travail arrêté.

79 votes

Pour référence, fg signifie "foreground" (premier plan). Vous pouvez également poursuivre le travail en arrière-plan avec "bg".

344voto

Majenko Points 31077

Les commandes générales de contrôle des tâches sous Linux sont les suivantes :

  • emplois - liste des emplois actuels
  • fg - reprendre le travail qui est le prochain dans la file d'attente
  • fg % [nombre] - reprendre l'emploi [numéro]
  • bg - Pousser le travail suivant dans la file d'attente en arrière-plan
  • bg % [nombre] - Pousser le [numéro] du travail en arrière-plan
  • tuer %[nombre] - Tuer le travail numéroté [numéro]
  • kill - [signal] % [numéro] - Envoyez le signal [signal] au numéro de travail [numéro].
  • désavouer %[numéro] - désavouer le processus (le terminal ne sera plus propriétaire), ainsi la commande sera vivante même après la fermeture du terminal.

C'est à peu près tout. Notez le % devant le numéro de job dans les commandes - c'est ce qui indique à kill que vous parlez de jobs et non de processus.

49 votes

J'évite "kill %1" parce qu'une erreur de frappe comme "kill 1" est vraiment très mauvaise :)

8 votes

@barrycarter C'est très vrai. J'ai l'habitude de faire un fg et un Ctrl-C ;)

7 votes

@barry : C'est pourquoi init dans Upstart ignore SIG{TERM,KILL} par défaut.

55voto

NickD Points 511

Vous pouvez également taper %<process_name> ; c'est-à-dire que si vous appuyez sur Ctrl-Z dans emacs, vous pouvez alors taper %emacs dans la console et le ramener au premier plan.

0 votes

Très bon à savoir

37voto

James Mertz Points 390

Juste pour ajouter aux autres réponses, bash vous permet de sauter le fg si vous spécifiez un numéro de travail.

Par exemple, ceux-ci sont équivalents et le CV du dernier emploi :

%
%%
fg
fg %

Ce sont les CV de l'emploi n°4 :

%4
fg 4

3 votes

Bien que ce soit plutôt cool, je trouve toujours plus facile de taper fg que % .

4 votes

% est génial, merci ! En tant que dactylo, je trouve que fg très irritant (même doigt). Mais c'est aussi le cas cd .

1 votes

Et vous pouvez le lancer en arrière-plan avec soit bg % ou simplement % & .

33voto

mahemoff Points 933

Si vous ne l'avez pas lancé depuis le terminal actuel, utilisez ps aux | grep <process name> pour trouver le numéro du processus (pid), puis le reprendre avec :

kill -SIGCONT <pid>

(Malgré le nom, kill est simplement un outil pour envoyer un signal au processus, permettant aux processus de communiquer entre eux. Un "kill signal" n'est qu'un des nombreux signaux standard).

Astuce supplémentaire : entourez le premier caractère du nom du processus avec [] pour empêcher la grep la commande elle-même apparaissant dans les résultats, par exemple pour trouver emacs processus, utilisation ps aux | grep [e]macs

5 votes

Cela fonctionne également si vous déshéritez un processus arrêté.

0 votes

Pouvez-vous aussi avoir accès à ses entrées/sorties telles qu'elles se présentent lorsque vous dites fg ?

0 votes

Il s'agit d'une approche beaucoup plus souple que de travailler avec un numéro de poste. Levez le pouce.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X