Que dois-je faire lorsque j'obtiens l'erreur "Il y a des travaux arrêtés"?

36

Je fais face à ce type de situation à plusieurs reprises.

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

sudo emacs tet.c &

Au lieu de me demander le mot de passe, Ubuntu ne lance que emacs process sans aucune fenêtre emacs ni aucune sortie sur le terminal (sauf pour le pid). Voir l'image (si je n'utilise pas '& amp; me demandera le mot de passe):

J'ai deux questions à ce sujet:

  1. Que dois-je faire quand je me trompe en disant: "Il y a des travaux stoppés"? Comment puis-je identifier tous ces emplois arrêtés et les tuer? Une fois que j'ai effacer le terminal Je n'aurai pas de pids de ces processus arrêtés.

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

posée Null pointer 09.03.2014 - 06:40
la source

3 réponses

47

There are stopped jobs message est loin, loin une erreur. C'est juste une notification vous indiquant que vous essayez de sortir du shell, mais 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 quitter le shell et de tuer les travaux à moins que vous ne vouliez dire. Vous pouvez faire certaines choses en réponse à ce message:

  • utilisez la commande jobs pour vous indiquer quel (s) travail (s) vous avez suspendu
  • vous pouvez choisir d’ajouter les tâches au premier plan en utilisant la commande fg
  • si vous ne vous souciez pas de savoir si le travail se terminera, vous pouvez simplement taper exit à nouveau; Si vous tapez exit une deuxième fois avec ou sans une commande jobs intermédiaire, tous les travaux suspendus seront interrompus.

Pour répondre à la deuxième question, je vous dirai que pas Ubuntu ou emacs se comportent comme ça. Ceci est un comportement normal lorsque vous mettez une application à exécuter en arrière-plan. Dans ce cas, sudo demande un mot de passe, mais demande 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 la commande fg :

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

Après cela, vous pouvez taper Ctrl + Z pour remettre le job 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.

    
réponse donnée Radu Rădeanu 09.03.2014 - 08:50
la source
9

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

Vous pouvez répertorier ces travaux en cours d'exécution / arrêtés en exécutant: jobs ,

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

  • déplace le dernier travail au premier plan de: fg ,
  • exécutez disown pour supprimer ces tâches de votre shell actuel sans les tuer,
  • forcez la déconnexion en supprimant ces tâches en appuyant deux fois sur Ctrl + D , en tapant exit / logout deux fois,
  • tuez ces travaux manuellement en exécutant: kill $(jobs -p) (ajoutez -9 pour forcer)
  • si vous les reniez et que vous voulez toujours tuer tous les processus arrêtés, essayez:

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

Pour répondre à la question sur sudo , il ne vous demandera pas le mot de passe, car il nécessite un terminal actif pour recevoir le mot de passe de entrée standard , et en exécutant l'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 entrer en arrière-plan ( & ),
  • lire le mot de passe de l’entrée standard au lieu du terminal par sudo -S e.g.

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

réponse donnée kenorb 20.02.2016 - 14:02
la source
4

Lorsque vous rencontrez des travaux interrompus :

  1. tapez jobs - & gt; vous verrez les travaux avec le statut arrêté
  2. , puis tapez exit - & gt; vous pouvez sortir du terminal
réponse donnée santhosh kumar 18.05.2016 - 09:08
la source

Lire d'autres questions sur les étiquettes