2014-11-28 2 views
-1

У меня есть один сервер, который запускает задания cron правильно. Это информация на этом сервере:Cron не работает 12.0.4, но делает 12.0.5

Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-32-родовое x86_64)

crontab -l

* * * * * (sleep 15 ; sudo /var/crons/NextQueueItemParallel.sh) * * * * * (sleep 45 ; sudo /var/crons/NextQueueItemParallel.sh)

Сервер, который не запускающего в crons:

Ubuntu 12.04.4 LTS (GNU/Linux 3.16.5-x86_64-linode46 x86_64)

crontab -l

* * * * * (sleep 30 ; sudo /var/crons/ParseLogs.sh)

Я запустить скрипт вручную, и это работает. Я проверил путь правильно, и поставить этот отладочный код, чтобы увидеть, был ли он вызывался:

echo 1 >> /var/crons/test php /var/www/crons/ParseLogFiles.php

Я запустить его вручную, и получить 1, приложенным к концу испытания, но не отображается на сам. Я установил правильные услуги cron и anacron и попробовал решения, изложенные здесь:

php cron job not running | http://growingventuresolutions.com/blog/ubuntu-cron-isn-t-running-some-things-check.html | Cron Job Doesn't Run

EDIT 1:

Я обновил кронтаб на машине, которая в настоящее время не работает, выдавая sudo crontab -e и следующая строка теперь присутствует (я проверил путем закрытия и повторного открытия):

* * * * * (sleep 30 ; /var/crons/ParseLogs.sh) (с последующим новой строки или два)

Этот файл состоит из следующих:

echo 1 >> /var/crons/test php /var/www/crons/ParseLogFiles.php

I tail/var/crons/test (tail -f /var/crons/test), но ничего не вижу и скрипт не запускается. Когда я запускаю оба этих файла вручную (путем копирования строки), он фактически запускается.

EDIT 2:

Я не имел права на исполнение, поэтому он работал, когда я запустил его вручную, но не на хрон. Я выпустил следующую команду chmod +x /var/crons/ParseLogs.sh, и она сразу же начала работать. Если вы просматриваете это, и все остальное работает, проверьте это! Спасибо всем, кто помог!

+2

Это не проблема программирования. [unix.se] может быть лучше спросить. Проверьте их справочный центр. –

ответ

0

Мне нужно было chmod +x /var/crons/ParseLogs.sh для того, чтобы crontab смог его выполнить. Выполнение этого вручную, очевидно, обошло это ограничение, поскольку поставщик облачных вычислений создал учетную запись по умолчанию с правами root.

1

Я предполагаю, что на одном из серверов есть опция requiretty config для sudo.

Предполагая, что Ubuntu использует те же настройки, как Debian вверх по течению, проверьте /etc/sudoers или файл в директории /etc/sudoers.d/ что-то вроде:

Defaults requiretty 

Если вы нашли его, удалите его.

Если вы управляете сервером, другим вариантом может быть перемещение задач cron либо в crontab корневого пользователя, либо в каталог /etc/cron.d (формат файлов в этом каталоге указывает, что пользователь должен запускаться как)

+0

'cat/etc/sudoers | grep requiretty' не возвращает строк. У меня есть контроль над сервером, но я, очевидно, не специальный системный администратор. Я понял, что cron запущен как пользователь, который добавил его, поэтому я подумал, что это будут коренные пользователи crontab. Как я точно знаю, что это за вкладка cron? –

+1

Если вы используете 'crontab -e', он отредактирует crontab текущего пользователя, да. Если вы выполняете это как root, вам не нужно использовать sudo при вызове сценариев. – Stephen

+0

Извините, я так долго реагировал! Я обновляю сообщение с дополнительной информацией. Спасибо, что ответили мне так много до сих пор! –

Смежные вопросы