Quel est l'effet de CTRL + Z sur une application unix \ Linux

85

J'étais curieux et confus quant au comportement exact de CTRl + Z.

Je sais, si un processus s'exécute en avant-plan et que l'on appuie sur ctrl + z, il passe en arrière-plan.

Mais qu'est-ce qui se passe exactement.

Est-ce qu'il continue à faire son travail ou est-il suspendu et arrêté là où il était?

Et si cela s'arrête à ce moment-là, et quelle est la signification de job d'arrière-plan.

Kumar Alok
la source
7
Ctrl-Z n'envoie pas de processus en arrière-plan, il le suspend.
Wooble

Réponses:

70

Un "job d'arrière-plan" est juste un travail qui n'interagit pas avec l'utilisateur - il ne contrôle pas le terminal et il fait juste ce qu'il veut (généralement en silence). Un travail de premier plan est l'inverse, il détient le contrôle du terminal pour interagir avec l'utilisateur.

Control-Z suspend le processus de premier plan le plus récent (le dernier processus à interagir avec le terminal) (à moins que ce processus ne prenne des mesures pour ignorer la suspension, comme le font normalement les shells). Cela vous ramènera généralement dans votre shell, à partir duquel vous pourrez généralement entrer la commande bgpermettant de déplacer le processus suspendu en arrière-plan (en le laissant continuer de s'exécuter) ou fgde le ramener au premier plan.

mah
la source
1
pour annuler un processus en arrière-plan en fgidentifiant d'abord le travail en le lançant, jobs puis en indiquant si son% 1, puis le fb %1 processus sera repris
Scott Stensland
fg %1pasfb %1
ahonnecke le
55

Appuyez sur Ctrl + Z envoie le TSTPsignal à votre processus. Cela arrête l'exécution (le noyau ne programme plus de temps processeur) et le processus attend un CONT pour continuer le traitement.

Vous pouvez émuler / reproduire ceci via kill -TSTPet kill -CONT(car vous killenverrez un signal nommé à votre processus, malgré le nom!)

Le shell a la fonctionnalité pour «mettre en arrière» le processus, mais c'est une relation entre le shell et le processus. Le processus lui-même n'a pas vraiment le concept de «fond» ou «premier plan».

Voir ici pour plus d'informations.

Brian Agnew
la source
2
^Zenvoie SIGTSTP, pas SIGSTOP
William Pursell le
@ WilliamPursell - ah! C'est noté. Maintenant changé. Thx
Brian Agnew le
15

Considérez cette commande, qui prend env. 4,5 secondes sur mon ordinateur portable:

echo 2^10000000 | bc -lq | wc -c

Lorsque vous appuyez sur Ctrl+ Z, le calcul est suspendu. Vous avez la possibilité de reprendre le calcul en avant-plan à l'aide de fg, ou de le reprendre en arrière-plan avec bg. Ce dernier est plus ou moins équivalent à exécuter:

echo 2^10000000 | bc -lq | wc -c &
Bolo
la source
9

Un processus est suspendu et arrêté lorsque vous appuyez sur ctrl + z. Avec fg, vous pouvez déplacer le travail suspendu au premier plan. Avec bg, vous pouvez l'exécuter en arrière-plan.

Voir http://linuxreviews.org/beginner/jobs/ pour plus d'informations.

alexclooze
la source