如何_user_
重定向PID
以及stdout
的{{1}}和stderr
(而不是子shell)它产生了文件?
即。 sudo
密码请求(sudo
)以及通常由[sudo] password for _user_: _
发送到当前shell stdout
和stderr
的任何错误都应重定向到任何适当的文件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
cmd
和stdout
的{{1}}重定向可访问的文件。这不是问题。
编辑:
@JohnKugelman建议运行stderr
会导致sudo -n
向sudo
发出错误消息并导致死亡,以防需要passwd。这照顾:
- 重定向stderr
,因为已经没有了
- 需要存储stdout
的PID,因为该过程自行消失。
主要问题仍然存在: 如何将sudo
' sudo
重定向到档案?
答案 0 :(得分:2)
将sudo的stderr重定向到file:
sudo -n cmd -- &> /path/of/the/file