2013-04-10 139 views
1

我发现这条线在一期工程:PHP这个shell命令做什么?

exec('php '.$myPath."/somefile.php bah blha blha --myparam=$param > /dev/null 2>&1 < /dev/null &";) 

是什么意思行?

我知道它运行somefile.php与参数myparam,但有以下几个部分:/dev/null 2>&1 < /dev/null &bah blha blha

+0

'/ dev/null'发送输出到/ dev/null; '2>&1'将错误输出发送到输出的相同位置; ' 2013-04-10 19:10:29

+0

这是关于重定向输出和输入的。 AskUbuntu有很好的解释。 http://stackoverflow.com/questions/10508843/what-is-dev-null-21 – 2013-04-10 19:13:27

回答

2

所有有问题的语法都是bash语法。你可以开始here了解更多。

但是,来了一点解释:

> /dev/null 

意味着输出重定向到/ dev/null的什么手段,程序的输出将被扔掉

2>&1 

手段该stderr被重定向到stdout。由于stdout被抛弃错误也将被丢弃。

< /dev/null 

意味着/ dev/null通过管道连接到程序的标准输入 - 实际上什么都没有。

& 

在该行的结束意味着,该计划应在后台运行,是什么使高管立即返回

+0

谢谢你的详细解答:) – rinchik 2013-04-10 19:38:06

1

的/ dev/null是一个黑洞,它似乎都发送到标准输出结果(标准通常是你的屏幕)和STDERR(标准错误)到黑洞。总之,它什么都不做。

+0

非常感谢! +1! – rinchik 2013-04-10 19:37:48