Я сталкиваюсь с этим типом ситуации много раз.
Например, каждый раз, когда я пытаюсь открыть некоторый файл в emacs
с sudo
использование прав:
sudo emacs tet.c &
Вместо того, чтобы просить у меня пароль только запускается Ubuntu emacs
процесс ни с кем emacs
окно или любой вывод на терминале (за исключением pid) видят изображение (если я не буду использовать '& то ', затем это попросит у меня пароля):
У меня есть два вопроса, связанные с этим:
Что я должен сделать, когда я получаю ошибку что 'Существуют остановленные задания'? Как я определяю все такие остановленные задания и уничтожаю их? После того как я очищаю терминал, у меня не будет pids этих остановленных процессов.
Почему Ubuntu/emacs ведет себя как это? Почему это не просит у меня пароль?
There are stopped jobs
сообщение должно далеко, далеко быть ошибкой. Это - просто уведомление, говоря Вам, что Вы пытаетесь выйти от оболочки, но у Вас есть одно или несколько приостановленных заданий/программ (в Вашем случае emacs
который Вы загнали в фоновом использовании &
в конце Вашей команды). Система не позволяет Вам, чтобы выйти от оболочки и уничтожить задания, если Вы не значите для. Можно сделать несколько вещей в ответ на это сообщение:
jobs
команда, чтобы сказать Вам, какое задание (задания) Вы приостановилиfg
командаexit
снова; ввод exit
во второй раз с или без вмешательства jobs
команда приведет к завершению всех приостановленных заданий.Для ответа на второй вопрос я скажу Вам что не Ubuntu или emacs, ведущий себя как это. Это - нормальное поведение при помещении приложения для выполнения в фоне. В этом случае sudo
просит пароль, но спрашивает в фоне, таким образом, Вы не видите этот факт. Для наблюдения его необходимо возвратить задание в приоритетном использовании fg
команда:
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:
После этого можно ввести Ctrl+Z для помещения снова задания в фон, если Вы хотите. Затем можно выполнить снова 'fg' команду для возвращения задания на переднем плане и так далее.
Вы получили сообщение, потому что система предупреждает Вас об активных заданиях, связанных с Вашей текущей оболочкой.
Можно перечислить, они выполнять/останавливать задания путем выполнения: jobs
,
Затем можно выполнить одно из следующих действий:
fg
(противоположность bg
для фона),disown
удалить эти задания из Вашей текущей оболочки, не уничтожая их,exit
/logout
дважды,kill $(jobs -p)
(добавьте -9
для силы)если Вы отрицаете их, и Вы хотите все еще уничтожить все остановленные процессы, попробовать:
kill $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')
Отвечать на вопрос о sudo
, это не попросит у Вас пароля, поскольку это требует, чтобы иметь активный терминал для получения пароля из стандартного входа, и путем выполнения его фон, оболочка не ожидает команды для окончания, таким образом, у Вас нет возможности взаимодействовать с командой.
В этом случае у Вас есть 3 возможности:
&
),считайте пароль из стандартного входа вместо оконечного устройства sudo -S
например.
echo mypass | sudo emacs tet.c
настройте sudo для не просьбы пароль: visudo
команда и редактирование sudoers
файл. См.: Включить NOPASSWD
для пользователя
Когда Вы встречаетесь существуют остановленные задания ошибка:
jobs
-> Вы будете видеть задания с остановленным состоянием exit
-> можно выйти из терминала