79 votes

Que dois-je faire si je reçois l'erreur "There are stopped jobs" ?

Je suis souvent confronté à ce type de situation.

Par exemple, chaque fois que j'essaie d'ouvrir un fichier dans l'application emacs con sudo les droits d'utilisation :

sudo emacs tet.c &

Au lieu de me demander le mot de passe, Ubuntu démarre tout simplement emacs sans aucune emacs ou toute sortie sur le terminal (sauf pour le pid) voient l'image (si je n'utilise pas '&' alors il me demandera le mot de passe) :

enter image description here

J'ai deux questions à ce sujet :

  1. Que dois-je faire si je reçois l'erreur "There are stopped jobs" ? Comment puis-je identifier tous ces travaux arrêtés et les tuer ? Une fois que j'aurai vidé le terminal, je n'aurai plus les pids de ces processus arrêtés.

  2. Pourquoi Ubuntu/emacs se comporte-t-il ainsi ? Pourquoi ne me demande-t-il pas le mot de passe ?

97voto

Radu Rădeanu Points 156862

There are stopped jobs Le message est très, très loin pour être une erreur. Il s'agit simplement d'une notification vous indiquant que vous tentez de quitter le Shell, mais que vous avez un ou plusieurs travaux/programmes suspendus (dans votre cas emacs que vous avez mis en arrière-plan en utilisant & à la fin de votre commande). Le système ne vous permet pas de sortir du Shell et de tuer les travaux, sauf si vous le voulez. Vous pouvez faire deux choses en réponse à ce message :

  • utiliser jobs pour vous dire quel(s) travail(s) vous avez suspendu(s)
  • vous pouvez choisir d'ajouter le(s) travail(s) au premier plan en utilisant fg comando
  • si vous ne vous souciez pas de savoir si le(s) travail(s) sera(ont) terminé(s), vous pouvez simplement taper exit à nouveau ; en tapant exit une seconde fois, avec ou sans intervention jobs entraînera l'arrêt de tous les travaux suspendus.

Pour répondre à la deuxième question, je vous dirai que ni Ubuntu ni emacs ne se comportent ainsi. C'est un comportement normal lorsque vous mettez une application à exécuter en arrière-plan. Dans ce cas sudo demande le mot de passe, mais il est demandé en arrière-plan, donc vous ne pouvez pas voir ce fait. Pour le voir, vous devez ramener le travail au premier plan en utilisant fg commandement :

radu@Radu: ~ $ sudo emacs tet.c &
[1] 7732
radu@Radu: ~ $ # now sudo emacs run in background so you can't see nothing about what's happening
radu@Radu: ~ $ fg
[sudo] password for radu:

Après cela, vous pouvez taper Ctrl + Z pour remettre le travail en arrière-plan si vous le souhaitez. Ensuite, vous pouvez exécuter à nouveau la commande 'fg' pour ramener le travail au premier plan et ainsi de suite.

25voto

kenorb Points 8840

Vous avez reçu le message, car le système vous avertit des travaux actifs associés à votre Shell actuel.

Vous pouvez lister ces travaux en cours/arrêtés en exécutant : jobs ,

Vous pouvez alors faire l'une des choses suivantes :

  • déplacer le dernier travail au premier plan par : fg (opposé à bg pour le contexte),
  • exécuter disown pour supprimer ces travaux de votre Shell actuel sans les tuer,
  • forcer la déconnexion en tuant ces tâches en appuyant sur Ctrl+D deux fois, comme si vous aviez tapé exit / logout deux fois,
  • tuer ces travaux manuellement en les exécutant : kill $(jobs -p) (ajouter -9 pour la force)
  • si vous les désavouez, et que vous voulez toujours tuer tous les processus arrêtés, essayez :

    kill $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')


Pour répondre à la question sur sudo il ne vous demandera pas le mot de passe, car il faut que le terminal soit actif pour recevoir le mot de passe de la part de l'utilisateur. entrée standard et en s'exécutant en arrière-plan, le Shell n'attend pas la fin de la commande, vous n'avez donc pas la possibilité d'interagir avec la commande.

Dans ce cas, vous avez 3 possibilités :

  • exécuter la commande sans passer en arrière-plan ( & ),

  • lire le mot de passe à partir de l'entrée standard au lieu du périphérique terminal par sudo -S par exemple

    echo mypass | sudo emacs tet.c
  • configurer sudo pour ne pas demander le mot de passe par : visudo commande et édition sudoers fichier. Voir : Activer NOPASSWD pour l'utilisateur

10voto

santhosh kumar Points 101

Lorsque vous rencontrez il n'y a plus d'emplois erreur :

  1. Typ jobs --> vous verrez les travaux avec le statut arrêté
  2. puis tapez exit --> vous pouvez sortir du terminal

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