2013-04-10 4 views
1

Я нашел эту линию в проекте:PHP, что делает эта команда оболочки?

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' отправить вывод ошибки в том же месте, что и вывод; '

+0

Речь идет о перенаправлении вывода и ввода. В AskUbuntu есть хорошее объяснение. http://stackoverflow.com/questions/10508843/what-is-dev-null-21 –

ответ

2

Весь синтаксис, о котором идет речь, является синтаксисом bash. Вы можете начать here, чтобы узнать больше.

Однако, вот небольшое пояснение:

> /dev/null 

означает, что вывод будет перенаправлен в/DEV/нуль, что означает, что выход из программы будет выброшен

2>&1 

средств что stderr перенаправляется на stdout. Поскольку stdout выброшено ошибки будут выброшены тоже.

< /dev/null 

означает, что/dev/null передается по протоколу программы - что на самом деле ничего.

& 

в конце строки означает, что программа должна работать в фоновом режиме, что делает EXEC возвращение сразу

+0

Спасибо за подробный ответ :) – rinchik

1

/DEV/нулем является черной дырой и, кажется, и результаты посланных STDOUT (стандартным обычно экран) и STDERR (стандартная ошибка) в черную дыру. Итак, в итоге, он ничего не делает.

+0

Спасибо большое! +1! – rinchik