通过输入/输出重定向在后台运行进程

2024-02-18

我很想知道当进程具有输入/输出重定向以在后台运行进程时,在代码中使用“&”运算符是否会产生影响

这些代码行在后台运行进程方面有什么区别/有什么区别。如果有,我如何确定差异是什么?

setsid python script.py < /dev/zero &> log.txt &

setsid python script.py < /dev/zero & > log.txt &

setsid python script.py < /dev/zero > log.txt &

setsid python script.py & < /dev/zero > log.txt

控制操作员

有两种用途&这里。一种是所谓的控制操作员。每个命令都由控制操作符终止,例如&, ; or <newline>。他们之间的区别在于; and <newline>在前台运行命令并&在后台执行。

setsid python script.py < /dev/zero & > log.txt &
setsid python script.py & < /dev/zero > log.txt

因此,这两行实际上各执行两个命令。第一个相当于两个命令:

setsid python script.py < /dev/zero &
> log.txt &

第二个相当于:

setsid python script.py &
< /dev/zero > log.txt

如果你想知道,是的,> log.txt and < /dev/zero > log.txt都是合法的命令。由于缺少命令名称,它们只是处理重定向:每个命令都会创建一个名为的空文件log.txt.

重定向

setsid python script.py < /dev/zero &> log.txt &

这个版本带有&>与带有的不同& >. &>没有空格是特殊的重定向运算符在 bash 中,重定向 stdout 和 stderr。

setsid python script.py < /dev/zero > log.txt &

此最终版本与前一个版本类似,只是它仅将 stdout 重定向到log.txt。 stderr 继续转到终端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过输入/输出重定向在后台运行进程 的相关文章

随机推荐