将_sudo_的PID,stderr和stdout重定向到文件

时间:2016-04-26 15:22:03

标签: bash shell sudo io-redirection

如何_user_重定向PID以及stdout的{​​{1}}和stderr(而不是子shell)它产生了文件?

即。 sudo密码请求(sudo)以及通常由[sudo] password for _user_: _发送到当前shell stdoutstderr的任何错误都应重定向到任何适当的文件sudo,本着以下精神:  /path/foobar
 {sudo-process} &> >(tee /path/foobar > /dev/null)
至于{sudo-process} 2>&1 | tee /path/foobar &>/dev/null)stdout。在我的用例中,还需要stderr来使用适当的privis从外部脚本无人值守地杀死PID进程。

当前的shell",我指的是sudo进程所在的shell。 我得到的最远的是可能的sudo计划(请参阅man 8 sudo中的选项askpass)以及使用可能相关或不相关的-A的可能性。我根本没有经验。 你能帮忙吗?

注意:我将 重定向从plugins生成的shell的输出到文件。如:中 sudo$ sudo cmd &> /path/foobar
取决于$ sudo sh -c 'cmd &> /path/foobar'是否是具有相应写入权限的文件,即/path/foobar cmdstdout的{​​{1}}重定向可访问的文件。这不是问题。

编辑:
@JohnKugelman建议运行stderr会导致sudo -nsudo发出错误消息并导致死亡,以防需要passwd。这照顾:
- 重定向stderr,因为已经没有了 - 需要存储stdout的PID,因为该过程自行消失。

主要问题仍然存在: 如何将sudo' sudo重定向到档案?

1 个答案:

答案 0 :(得分:2)

将sudo的stderr重定向到file:

sudo -n cmd -- &> /path/of/the/file