Intereting Posts
Как убить приложение, которое захватывает ввод с клавиатуры для уничтожения приложения? lsusb не перечисляет имена устройств размещение кавычки после поиска строки Есть ли какая-либо программа для получения пароля GPG из GUI Как заставить команду NIC приступить к загрузке в RHEL 7 tr аналог для символов Unicode? GConf-WARNING **: клиент не смог подключиться к демону D-BUS: не удалось выполнить автозапуск, когда setuid Ошибка входа в диспетчер дисплея X, вход в консоль + startx работает Как определить стандартное расширение имени файла Как включить два сетевых интерфейса как для Интернета в ubuntu12.04 Удалите слова (буквы, за которыми следует пробел) из определенного столбца xbindkeys / xkb map ctrl ярлык Любое шифрование диска, которое блокируется в течение некоторого времени после нескольких неудачных попыток? Отключение монитора как root, без xset Сделать веб-сервер перезагружать переменные среды системы

Centos – фоновые процессы

У меня есть машина, где запуск tcpdump на интерфейсе Wi-Fi требует привилегий sudo. Так что, если я запускаю фоновую работу, как,

sudo tcpdump -i wlp8s0 'port 80' & 

(Я знаю, что делать это бессмысленно, так как я не получаю никаких результатов, но давайте рассмотрим это)

Таким образом, фоновый процесс, который запускается с областью без полномочий пользователя, когда я должен убить его, я обычно делаю,

kill% 1 ### 1 – номер фонового задания

но это говорит, операция не допускается.

Итак, я делаю,

sudo kill% 1

но это работает так, как будто он должен убить фоновое задание, запущенное пользователем root (что не так).

Я должен был на самом деле получить идентификатор процесса задания и убить его этим.

Любая идея о том, как начать задание в области sudo с пользователем без полномочий root и завершить его обычным способом вместо того, чтобы жестоко его убить?

Вы можете использовать

 sudo kill "$!" 

убить самую последнюю запущенную фоновую работу.

Было бы еще проще, если бы вы начали работу с

 sudo tcpdump ... & pid="$!" 

затем

 sudo kill "$pid" 

убил бы конкретную работу.

Сам процесс sudo запускается как вы, но он передает все сигналы дочернему процессу (в данном случае tcpdump ), что означает, что вам нужно будет иметь соответствующие разрешения, чтобы сигнализировать о его уничтожении.

Из руководства sudo (в системе Ubuntu):

Если подключаемый модуль ведения журнала ввода-вывода настроен или если политика безопасности явно запрашивает его, создается новый псевдотерминал («pty»), а второй процесс sudo используется для передачи сигналов управления заданиями между существующим pty пользователя и новым pty команда запускается. Этот дополнительный процесс позволяет, например, приостановить и возобновить команду.

[…]

Когда команда запускается как дочерний элемент процесса sudo, sudo будет передавать полученные сигналы команде. Сигналы SIGINT и SIGQUIT передаются только тогда, когда команда выполняется в новом pty или когда сигнал был отправлен пользовательским процессом, а не kernelм.