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):
J'ai deux questions liées à ceci:
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.
Pourquoi Ubuntu/emacs se comportent-ils de la sorte? Pourquoi ne me demande-t-il pas le mot de passe?
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, emacs
que 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:
jobs
pour vous indiquer le ou les travaux que vous avez suspendusfg
name__exit
name__; Si vous saisissez une autre fois exit
avec ou sans une commande jobs
name__, 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, Sudo
demande 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 fg
name__:
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.
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: jobs
name__,
Ensuite, vous pouvez effectuer l’une des opérations suivantes:
fg
name__,disown
pour supprimer ces travaux de votre shell actuel sans les détruire,exit
name __/logout
deux fois,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 Sudo
name__, 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:
&
),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 visudo
et de l'édition du fichier sudoers
name__. Voir: Activer NOPASSWD
pour l'utilisateur
Lorsque vous rencontrez il y a des travaux arrêtés erreur:
jobs
name __--> vous verrez les travaux avec le statut arrêtéexit
name __--> vous pouvez sortir du terminal