我用来将标准错误转储到文件的代码如下所示:
sudo COMMAND 2> FILENAME.txt
我希望能够通过获取其PID来杀死COMMAND进程,然后像这样使用KILL:
sudo COMMAND 2> FILENAME.txt &
PID=$!
sudo kill $PID
我的问题是,我是在杀死“命令”进程还是我将“转储错误归档到文件”进程?
如果我正在查杀“转储错误到文件”进程,我该如何终止实际的命令进程?
答案 0 :(得分:2)
将标准IO重定向到文件不是一个过程。您将终止sudo
进程,但进程应在退出时关闭文件句柄。也就是说,重定向发生在sudo
命令执行之前,因此如果您的用户帐户没有写FILENAME.txt
的权限,那么在执行命令之前shell将会出错。
答案 1 :(得分:2)
只有一个流程:sudo
。
sudo command
在子进程中为exec()
。$!
。 sudo
依次根据其配置设置权限,然后执行另一个exec()
以将自己替换为command
。
答案 2 :(得分:0)
每个进程在启动时都会从其父进程继承某些内容。其中一个是一组打开的文件句柄(在POSIX中,这至少包括标准输入,标准输出和标准错误,但其他也是可能的)。重定向操作符只是修改传递给新进程的文件句柄。