Как _user_
перенаправлять PID
, а также stdout
и stderr
из sudo
(а не из суб-оболочки он нерестится) в файл?Перенаправление _sudo_ «s PID, потоки вывода в файл
I.e. запрос sudo
PASSWD ([sudo] password for _user_: _
) и любая ошибка обычно отправляется на текущий оболочечному stdout
и stderr
по sudo
должны быть перенаправлены на любой соответствующий файл /path/foobar
, в духе:
{sudo-process} &> >(tee /path/foobar > /dev/null)
или
{sudo-process} 2>&1 | tee /path/foobar &>/dev/null)
насколько stdout
и stderr
обеспокоены. В моем случае использования PID
также необходим для автоматического удаления процесса sudo
из внешнего скрипта с соответствующими привилегиями.
Под «текущей оболочкой» подразумевается оболочка, в которой живет процесс sudo
. Самый дальний я получил возможность программы askpass
(см. Опцию -A
в man 8 sudo) и возможность использования plugins
, которая может быть или не быть актуальной. У меня нет опыта с этим. Вы можете помочь?
Примечание: Я НЕ смотря при перенаправлении вывода из оболочки, порожденного sudo
в файл. Как и в:
$ sudo cmd &> /path/foobar
или $ sudo sh -c 'cmd &> /path/foobar'
в зависимости от того, /path/foobar
файл с соответствующим разрешением на запись, то есть доступным для перенаправления cmd
«s из stdout
и stderr
. Это не проблема.
РЕДАКТИРОВАТЬ:
@JohnKugelman предполагает, работает sudo -n
, который вызывает sudo
испускать сообщение об ошибке stderr
и умереть, в случае, требуется PASSWD. Это позаботится:
- перенаправление stdout
, так как его больше нет.
- необходимость хранить sudo
PID, так как процесс умирает сам по себе.
Основной вопрос остается: как перенаправить sudo
«s stderr
в файл?
С какой целью? Возможно, 'sudo -n' будет лучше:« Параметр '-n' запрещает sudo запрашивать у пользователя пароль. Если для запуска команды требуется пароль, sudo отобразит сообщение об ошибке и выйдет." - [sudo (8)] (http://linux.die.net/man/8/sudo) –
@JohnKugelman: Спасибо. Я читал этот вариант именно в этот момент. Это позаботится о PID 'sudo', поскольку его больше не нужно хранить. Однако основная проблема остается: * перенаправление 'stderr' процесса' sudo' в файл, ** без присмотра **.* – Cbhihe