需要帮助理解bash命令

时间:2010-03-12 12:15:47

标签: php bash

它实际上是php和bash的组合:

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

我不明白2>&1 & echo $!的用途是什么?

1 个答案:

答案 0 :(得分:7)

2>&1 redirects stderr to stdout$! "Expands to the process ID of the most recently executed background (asynchronous) command".

所以,这就是发生的事情:

  1. $cmd的stderr和stdout发送到名为$outputfile的文件。如果您没有2>&1,则无法读取文件中的stderr输出。
  2. 以下&表示处理runs in the background
  3. 然后,您将$cmd的PID(通过$!获得)附加到$pidfile的末尾。