Linux 为什么输出重定向在这种情况下不起作用?
操作系统是Linux 为什么输出重定向在这种情况下不起作用?,linux,bash,shell,Linux,Bash,Shell,操作系统是ubuntu12.04。我编写了一个python程序main.py,希望能够轻松地运行它。因此,我创建了以下shell脚本,名为run.sh #!/bin/bash python main.py & >/dev/null 2>&1 并执行此命令chmod u+x run.sh #!/bin/bash python main.py & >/dev/null 2>&1 但是,当I/run.sh时,python程序的输出仍在
ubuntu12.04
。我编写了一个python程序main.py
,希望能够轻松地运行它。因此,我创建了以下shell脚本,名为run.sh
#!/bin/bash
python main.py & >/dev/null 2>&1
并执行此命令chmod u+x run.sh
#!/bin/bash
python main.py & >/dev/null 2>&1
但是,当I/run.sh
时,python程序的输出仍在终端中。但这是可行的:
/run.sh>/dev/null 2>&1
。但这种方式违背了我的初衷,因为它太复杂了,无法使用
我想知道为什么会发生这种情况。如何实现我的目标?如果要在后台运行脚本,请尝试以下操作:
python main.py >/dev/null 2>&1 &
在
&
和/dev/null
之间有一个空格,因此Python进程在后台运行,而不会应用输出重定向。如果删除&
,将不会有输出。因为&>
是有效的bash,所以删除空格也就足够了,但您可能不是这个意思。您所说的“轻松运行”是什么意思?在后台运行它?是否放弃任何输出/错误文本?这两个?还有什么吗?@MarcoS这两个问题。那么你得到的两个答案都是解决方案。请接受一个,或者解释为什么不…:-)&>的含义是什么?