2010-05-01 6 views
0

У меня есть задание cron, выполняющее скрипт PHP каждые пять минут; скрипт PHP выполняет две команды bash в конце скрипта. Я знаю, что скрипт работает из-за файла журнала, к которому он присоединяется. Когда я запускаю скрипт PHP вручную через терминал Gnome Ubuntu, команды bash выполняются безупречно; однако, когда скрипт PHP запускается через cron, две команды bash не запускаются. Есть идеи?Команды Bash не выполняются при выполнении задания cron - PHP

$command = 'notify-send "' . count($infoleakPosts) . ' New Posts."'; 
`$command`; 

$command = 'firefox http://example.com'; 
`$command`; 

*/1 * * * * php /home/andrew/grab.php USERNAME PASSWORD # JOB_ID_1 
+0

Вы пытались добавить полный путь? – Cesar

+0

Вы имеете в виду полный путь уведомления-отправки и firefox? – basicxman

ответ

2

Обычно ваши cron-скрипты запускаются под другой учетной записью пользователя и, возможно, имеют другой путь к среде.

Попробуйте настроить командные строки для использования полного пути к команде, т.е. /path/to/notify-send "x New Posts".

Вы можете использовать which notify-send со своего обычного терминала, чтобы получить путь к вашему сценарию.

Вы также можете захватить выходные данные из своей команды, чтобы помочь отлаживать. Использование оператора backtick возвращает результат, поэтому вы можете назначить его переменной и/или сбросить ее.

$output = `$command`; 
error_log($output); 
1

, когда вы запускаете скрипт под хронами не имеет выходной терминал или X-витрины ENV-вар. Я подозреваю, что команды работают, но не работают.

+0

Yup, мне нужно было запустить его в X. Спасибо! – basicxman

0

комментарий на ответ выше о хронах: хроны будут запускать команды, как пользователь, чей кронтаб это. Поэтому, если вы настроите crontab, он будет запускать команды как вы. Он запускает несколько другой набор сценариев запуска оболочки для тех, которые вы получаете при входе в систему - он знает, что у него нет tty, и поэтому он выполняет только файл ~/.bashrc, а не набор файлов профилей. Проверьте справочные страницы для cron и bash для получения более подробной информации.