控制操作员
有两种用途&
这里。一种是所谓的控制操作员。每个命令都由控制操作符终止,例如&
, ;
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 继续转到终端。