Как отправить в фон рабочий процесс, запущенный с sudo?

есть ли какая-либо единственная, встроенная команда, которая работает через это волшебство...?

Чтобы быть педантичными, нет, Вы не можете предположить, что такая команда существует.

Существует много различных реализаций Unix, и у каждого есть его различные причуды. POSIX, общий знаменатель (и самая близкая вещь к стандарту через Нельды) не указывает такую опцию для grep.

Как упомянуто в других ответах, реализации GNU grep имеет нестандартную опцию, которая делает то, что Вы хотите. В то время как эта конкретная реализация могла бы быть распространена в системах Linux, Вы не можете принять его доступность ни на каком Unix, даже некоторые системы Linux.

Наконец, я должен упомянуть, что это - философия Unix для одобрения комбинации нескольких примитивных программ по использованию одного большого монолитного исполняемого файла, пытающегося сделать все сразу.

В Вашем случае, проверяя файловую систему и соответствуя regexp в потоке две отдельных задачи. Только нормально рассматривать каждого в отдельной программе.

5
03.07.2013, 09:12
3 ответа

Я предполагаю, что настоящая проблема вот состоит в том, что командой, которую Вы пытаетесь выполнить, является Emacs. При выполнении Emacs, поскольку корень почти никогда не является хорошей идеей. Emacs также переопределяет много нажатий клавиш, таким образом, C-z не мог бы работать просто по этой причине. Если root уже зарегистрирован, emacs мог бы запуститься графически на rootдисплей. И т.д., и т.д.

Взгляд на использование sudo: метод от Бродяги для редактирования использования файлов sudo от Emacs. Например, для редактирования /etc/motd, сделать C-x C-f и введите путь как /sudo:root@localhost:/etc/motd.

2
27.01.2020, 20:34

Если бы я понимаю Ваш вопрос, следующее работало просто великолепно для меня на CentOS 6.4, который я ожидал бы быть очень похожим на SLC6:

команда initital
$ sudo sleep 300
^Z
[1]+  Stopped                 sudo sleep 300
фон
$ bg
[1]+ sudo sleep 300 &

$ jobs
[1]+  Running                 sudo sleep 300 &

$ ps -eaf|grep sudo
root     25752 25669  0 09:53 pts/0    00:00:00 sudo sleep 300
sam      25755 25669  0 09:53 pts/0    00:00:00 grep sudo
уничтожьте задание (Ctrl+C)
$ fg
sudo sleep 300
^C

$ ps -eaf|grep sudo
sam      25758 25669  0 09:53 pts/0    00:00:00 grep sudo
Информация об ОС
$ uname -a
Linux mungr 2.6.32-358.6.1.el6.x86_64 #1 SMP Tue Apr 23 19:29:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release 
CentOS release 6.4 (Final)
5
27.01.2020, 20:34
  • 1
    , Что является странным, то, что ^Z после начальной команды ничего не делает. –  Barth 02.07.2013, 18:27

CTRL-Z отправляет сигнал SIGTSTP к процессу.

Так самый простой способ сделать это:

sudo kill -TSTP <pid>

от другой оболочки.

4
27.01.2020, 20:34

Теги

Похожие вопросы