web-dev-qa-db-fra.com

Que dois-je faire lorsque le message d'erreur "Il y a des emplois arrêtés"?

Je fais face à ce type de situation plusieurs fois.

Par exemple, chaque fois que j'essaie d'ouvrir un fichier dans emacs avec Sudo droits en utilisant:

Sudo emacs tet.c &

Au lieu de me demander le mot de passe, Ubuntu démarre simplement le processus emacs sans aucune fenêtre emacs ni aucune sortie sur le terminal (à l'exception du pid) voir l'image (si je n'utilise pas '&', il me demandera le mot de passe):

enter image description here

J'ai deux questions liées à ceci:

  1. Que dois-je faire quand je reçois une erreur indiquant qu'il y a des emplois arrêtés? Comment identifier tous ces emplois arrêtés et les tuer? Une fois le terminal effacé, je n'aurai plus de pids de ces processus arrêtés.

  2. Pourquoi Ubuntu/emacs se comportent-ils de la sorte? Pourquoi ne me demande-t-il pas le mot de passe?

57
Null pointer

Le message There are stopped jobs is far, far away est 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, emacsque vous avez mis en arrière-plan à l'aide de & à la fin de votre commande). Le système ne vous permet pas de quitter Shell et de supprimer les travaux à moins que vous ne le vouliez. Vous pouvez faire plusieurs choses en réponse à ce message:

  • utilisez la commande jobspour vous indiquer le ou les travaux que vous avez suspendus
  • vous pouvez choisir d'ajouter le ou les travaux au premier plan à l'aide de la commande fgname__
  • si vous ne voulez pas que le ou les travaux se terminent, vous pouvez simplement taper à nouveau exitname__; Si vous saisissez une autre fois exitavec ou sans une commande jobsname__, toutes les tâches suspendues sont interrompues.

Pour répondre à la deuxième question, je vous dirai que ni Ubuntu ni emacs ne se comportent de la sorte. Ce comportement est normal lorsque vous mettez une application à exécuter en arrière-plan. Dans ce cas, Sudodemande un mot de passe, mais demande en arrière-plan, vous ne pouvez donc pas voir ce fait. Pour le voir, vous devez ramener le travail au premier plan à l'aide de la commande fgname__:

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 remettre le travail en arrière plan si vous voulez. Ensuite, vous pouvez exécuter à nouveau la commande 'fg' pour ramener le travail au premier plan, etc.

71
Radu Rădeanu

Vous avez reçu le message, car le système vous avertit des tâches actives associées à votre Shell actuel.

Vous pouvez répertorier ces travaux en cours/arrêtés en exécutant: jobsname__,

Ensuite, vous pouvez effectuer l’une des opérations suivantes:

  • déplacer le dernier travail au premier plan de: fgname__,
  • lancez disownpour supprimer ces travaux de votre shell actuel sans les détruire,
  • forcer la déconnexion en tuant ces tâches en appuyant sur Ctrl+D deux fois, comme si vous tapiez exitname __/logoutdeux fois,
  • éliminez ces travaux manuellement en exécutant: kill $(jobs -p) (ajoutez -9 pour forcer)
  • 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 Sudoname__, elle ne vous demandera pas le mot de passe, car elle nécessite un terminal actif pour pouvoir recevoir le mot de passe de entrée standard , et en l'exécutant en arrière-plan, le shell ne N'attendez pas que la commande se termine, vous n'avez donc pas la possibilité d'interagir avec la commande.

Dans ce cas, vous avez 3 possibilités:

  • lancer la commande sans passer en arrière-plan (&),
  • lisez le mot de passe depuis l'entrée standard à la place du terminal avec Sudo -S p. ex.

    echo mypass | Sudo emacs tet.c
    
  • configurez Sudo pour ne pas demander le mot de passe à l'aide de la commande visudoet de l'édition du fichier sudoersname__. Voir: Activer NOPASSWDpour l'utilisateur

15
kenorb

Lorsque vous rencontrez il y a des travaux arrêtés erreur:

  1. typejobsname __--> vous verrez les travaux avec le statut arrêté
  2. puis tapez exitname __--> vous pouvez sortir du terminal
5
santhosh kumar