需要帮助理解bash命令

use*_*729 2 php bash

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

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*off 7

2>&1 将stderr重定向到stdout,并$! "扩展到最近执行的后台(异步)命令的进程ID".

那么,这是发生了什么:

  1. 您将stderr和stdout发送$cmd到名为的文件$outputfile.如果没有2>&1,您将无法读取文件中的stderr输出.
  2. 以下&表示进程在后台运行.
  3. 然后将$cmd(通过$!)获得的PID附加到结尾$pidfile.