Comment puis-je mettre un processus d'arrière-plan après son exécution avec un CTRL+Z?
La question est spécial parce que certaines touches comme CTRL+Z, a cessé de travailler.
J'ai essayé de mettre le processus d'arrière-plan en tapant la commande:
- trouver /
- CTRL+Z
- bg
Cependant, je peux encore voir la sortie standard (stdout). La seule différence à ne faire que la première étape, c'est que la commande " CTRL+Z ne fonctionne plus. C'est plutôt méchant quand je n'avez pas enregistré d'emplois et de mon disque dur est plus de 100 GO. Donc
comment puis-je mettre le processus à l'arrière-plan?
[Détails]
Je suis l'aide de la quatrième version de Bash sur Mac.
[Crux Répondre par Nicolas Riley]
Le problème est vraiment que je ne comprends pas les "ramifications" de l'exécution de processus d'arrière-plan. Je ne comprends pas pourquoi le commnands, telles que CTRL+Z, ne fonctionnent pas de processus d'arrière-plan. J'étais encore capable de tuer le processus dans un autre shell avec la commande:
ps -ej | awk '! /grep/&& /find/{print $2}' | xargs kill -9
OriginalL'auteur Léo Léopold Hertz 준영 | 2009-04-28
Vous devez vous connecter pour publier un commentaire.
^Z
ne fonctionne pas parce que le premier plan emploi est maintenant sur la coque, et des coquilles n'avez pas l'habitude de répondre àSIGTSTP
. (Si vous ne voulez vraiment de suspendre un non-shell de connexion,suspend
travaille habituellement.)Le problème semble être vous ne comprenez pas les conséquences d'un travail en cours en arrière-plan. Rediriger la sortie standard est sans rapport.
En fait, il est difficile de ce que vous voulez faire. Si vous voulez arrêter de
find
de course, ensuitefg
et de l'utiliser^C
ou^\
(qui, par défaut, envoyerSIGINT
etSIGQUIT
respectivement).Si vous voulez garder
find
cours d'exécution, mais de supprimer de sa sortie, alors la solution la plus simple je pense est d'utiliserbg ; disown ; exit
. Qui arrêtera la coquille de tuer son processus enfant (find
) et quittez le shell; en supposant que c'est au niveau le plus haut de la fenêtre du Terminal, vous verrez un peu plus la production et defind
va continuer à courir (mais vous n'aurez aucun moyen d'interagir avec elle).Assurez-vous. Le principal effet de la semi-finition d'un processus, c'est que votre (y compris des signaux, comme ^Z) n'interagissent plus avec ce processus; ils interagissent avec le parent shell à la place. À moins que le processus est écrit pour vérifier si il est dans le fond et faire quelque chose de différent, la production va encore émanent de ce processus.
Riley: je vous Remercie!
Vous pouvez même sauter le
fg
étape et utiliser directementkill %
(peut-être en lui donnant-INT
ou-QUIT
si vous le souhaitez, et de changer de%1
ou dans d'autres selon ce que d'autres travaux sont en cours d'exécution, voirjobs
de sortie pour plus de détails).OriginalL'auteur Nicholas Riley
- Je utiliser le désavouer.
Vous pouvez utiliser le désavouer après vous ^Z:
renier est un bash builtin, je crois. Pas sûr au sujet des solutions de rechange pour d'autres shells.
Pour de plus amples informations, voir mon équivalent réponse sur le Serveur Faute.
OriginalL'auteur Jeremy Visser
Vous pouvez définir le fonctionnement d'une clé différente avec stty sur tout système UNIX.
fera Q suspendre votre clé à la place de CTRL-Z.
+1 pour les frais de commande.
Vous n'avez pas utiliser Q, Pax.
OriginalL'auteur Charlie Martin
La semi-finition un processus ne mettra pas fin à la sortie du terminal, c'est pourquoi vous voyez toujours de sortie et la sortie peut contenir des caractères de contrôle qui peut farcir vos réglages TTY (
cat
ing fichiers binaires est une bonne façon de le faire).Si vous voulez le travail à exécuter en arrière-plan, le faire droite:
puis examiner la
/tmp/out
fichier quand il est terminé.Non, @Jeremy, parce que c'est de position. Ma version dirige la sortie standard vers le fichier stderr à la même place que la sortie standard stdout (le fichier). Votre suggestion directe stderr à la même place que la sortie standard stdout (le terminal), puis la sortie standard vers le fichier. Et j'ai rarement ignorer des questions, je serais plutôt d'éduquer.
+1 pour ton commentaire 🙂
OriginalL'auteur paxdiablo
J'ai l'habitude de faire ce genre de chose avec nohup. Comme ceci:
nohup trouver /> /tmp/myresults.txt &
nohup permet de s'assurer que le processus ne s'arrête pas, même si la console s'en va (le souhaitez, vous fermez la fenêtre ou de perdre votre SSH ou autre). La ">" envoie la sortie vers un fichier plutôt que de la console, et "&" met le travail en arrière-plan.
Pourquoi voudriez-vous utiliser l'écran avec nohup? l'écran a une détacher fonction intégrée. (C-a, C-d)
OriginalL'auteur Evan P.
Je vais supposer que vous êtes à l'aide d'une variante de Linux ou UNIX et, éventuellement, le shell bash. Auquel cas:
CTRL-Z envoie le
SIGTSTP
signal au processus de premier plan. Vous devriez être en mesure de faire la même chose avec la commande kill en spécifiantkill -s SIGTSTP [pid]
.OriginalL'auteur zombat
Je sais que dans Ubuntu 9.04, vous pouvez commencer le processus avec un & après pour l'exécuter en arrière-plan. Par exemple, "sudo gedit /boot/grub/menu.lst &" va lancer un éditeur de texte modifiant le fichier de configuration de GRUB dans le fond.
OriginalL'auteur
kill-STOP your_pid_here
à partir d'une autre fenêtre de la console?
http://tombuntu.com/index.php/2007/11/23/how-to-pause-a-linux-process/#comment-132413
OriginalL'auteur rogerdpack