操作系统为ubuntu12.04
。我编写了一个python程序main.py
,并希望轻松运行它。所以我创建了以下名为run.sh
的shell脚本。
#!/bin/bash
python main.py & >/dev/null 2>&1
执行此命令chmod u+x run.sh
。
然而,当我./run.sh
时,python程序的输出仍然存在于终端中。
但这可以奏效:./run.sh >/dev/null 2>&1
。但这种方式违背了我的初衷,因为它使用起来太复杂了。
我想知道为什么会发生这种情况。我怎样才能实现我的意图?
答案 0 :(得分:4)
如果你想在后台运行脚本,试试这个:
python main.py >/dev/null 2>&1 &
答案 1 :(得分:1)
在&
和>/dev/null
之间有一个空格,因此Python进程在后台运行,而不会对其应用输出重定向。如果删除&
,则不会输出。由于&>
是有效的bash,它也足以删除空格,但你可能并不是那个意思。