Что мне делать, когда я получаю сообщение об ошибке "Есть остановленные задания"?
Я сталкиваюсь с такой ситуацией много раз.
Например, всякий раз, когда я пытаюсь открыть какой-либо файл в emacs с sudo использование прав:
sudo emacs tet.c &
Вместо того чтобы спрашивать у меня пароль, Ubuntu просто запускается emacs процесс без каких-либо emacs Окно или любой вывод на терминале (кроме pid), смотрите изображение (если я не использую '&', тогда он спросит у меня пароль):

У меня есть два вопроса, связанных с этим:
Что мне делать, когда я получаю сообщение об ошибке "Есть остановленные задания"? Как мне определить все такие остановленные работы и убить их? Как только я очищу терминал, у меня не будет пидов этих остановленных процессов.
Почему Ubuntu/ Emacs ведет себя так? Почему он не спрашивает у меня пароль?
3 ответа
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, - бежать
disownудалить эти задания из вашей текущей оболочки, не убивая их, - принудительно выйти из системы, убив эти задачи, дважды нажав Ctrl+D, так же, как и при наборе
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-> вы можете выйти из терминала