6 linux bash shell background-process
我很想知道当进程具有输入/输出重定向以在后台运行进程时,代码中使用'&'运算符是否有所不同
在后台运行流程方面,这些代码行之间有什么区别?如果有,我如何确定差异将是什么?
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
Run Code Online (Sandbox Code Playgroud)
这里有两种用途&.一个是所谓的控制操作员.每个命令都由一个控制操作符终止,例如&,;或<newline>.它们之间的区别是,;和<newline>在前台运行的命令,并&做它的背景.
setsid python script.py < /dev/zero & > log.txt &
setsid python script.py & < /dev/zero > log.txt
Run Code Online (Sandbox Code Playgroud)
因此,这两行实际上分别执行两个命令.第一个相当于两个命令:
setsid python script.py < /dev/zero &
> log.txt &
Run Code Online (Sandbox Code Playgroud)
第二个相当于:
setsid python script.py &
< /dev/zero > log.txt
Run Code Online (Sandbox Code Playgroud)
如果你想知道,是的,> log.txt并且< /dev/zero > log.txt都是合法的命令.缺少命令名称,他们只是处理重定向:每个都创建一个名为的空文件log.txt.
setsid python script.py < /dev/zero &> log.txt &
Run Code Online (Sandbox Code Playgroud)
这个版本与&>一个版本不同& >.&>没有空格是bash中的一个特殊重定向操作符,它重定向stdout和stderr.
setsid python script.py < /dev/zero > log.txt &
Run Code Online (Sandbox Code Playgroud)
最终版本与前一版本类似,只是它只将stdout重定向到log.txt.stderr继续前往终点站.
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |