Нужна помощь в понимании команды bash - PullRequest
2 голосов
/ 12 марта 2010

На самом деле это сочетание php и bash:

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

Я не понимаю, для чего 2>&1 & echo $! существует?

1 Ответ

7 голосов
/ 12 марта 2010

2>&1 перенаправляет stderr на стандартный вывод и $! "Расширяет идентификатор процесса последней выполненной фоновой (асинхронной) команды".

Итак, вот что происходит:

  1. Вы отправляете как stderr, так и стандартный вывод $cmd в файл с именем $outputfile. Если вы не выполните 2>&1, вы не сможете прочитать вывод stderr в файле.
  2. Следующий & означает, что процесс выполняется в фоновом режиме .
  3. Затем вы добавляете PID $cmd (полученный через $!) к концу $pidfile.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...