2012-07-03 3 views
3

У меня есть crontab файлы журнала сжатия.Cron не выполняет. Скрипты отлично работают

В crontab -e У меня есть корень -:

5 3 * * 6 find /toMyLogs -name "access*" -a ! -name '*.bz2' -ctime +7 -exec bzip2 -zv {} \; 
35 3 * * 6 find /toMyLogs -name "error*" -a ! -name '*.bz2' -ctime +7 -exec bzip2 -zv {} \; 

Пример из бревен являются:

$ ls -la /toMyLogs 
-rw-r--r-- 1 root  root  33317 Jul 2 19:04 error_1.log.2012-07-02 
-rw-r--r-- 1 root  root  12928 Jul 3 08:55 error_2.log.2012-07-03 

Если я выполнить команду вручную, это:

find /toMyLogs -name "access*" -a ! -name '*.bz2' -ctime +7 -exec bzip2 -zv {} \; 

это работает, но в cron не работает. Я сделал несколько мини-тестов с примерами файлов - не из журналов, а с помощью cron. Работал. Итак, cron окончательно работает.

У вас есть идеи, что происходит. Разрешения или время?

+0

Большинство вещей, которые могут пойти не так, должны привести к хронам отправки вам по почте с сообщением об ошибке. Правильно ли настроен ваш MTA? Попробуйте добавить задание '* * * * * echo hello' cron и посмотреть, получаете ли вы почту. Если нет, исправьте это первым. Крон без уведомления по почте является искалеченным cron. –

+0

По-видимому это - у меня очень ограниченный контроль над серверами - я вижу почту в '/ usr/mail/root', даже тот, у кого есть« echo hello ». Но я не нашел ** своих монах, это было выполнено в субботу! – Kani

ответ

1

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

Reasons why crontab does not work

+0

Я добавлю PATH к crontab, как 'PATH =/usr/sbin:/usr/bin' в моем случае. Тем не менее, я тестировал SAME oneliner с тестовыми файлами, и он работал, но не работает с файлами журнала с помощью cron. Онлайнер, используемый вручную, отлично работает:/ – Kani

+0

Так оно работает, когда вы запускаете его в командной строке, но не при выполнении через cron? Тогда это либо проблема среды, либо cron не работает. Попробуйте поместить свои команды в файл сценария и добавьте 'set -x' в начале его. Таким образом, вы должны получить почту с расширенными командами, когда cron запускает ее. –

+0

Хорошо, я выполнил все ваши рекомендации. Поместите его в скрипт, используйте PATH и т. Д. И работайте. Но я не знаю, в чем была ошибка:/Я думаю, это хорошая практика, чтобы следовать вашим указаниям. – Kani

1

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

ADD У меня был такая проблема с cron - причиной была в несовпадении абсолютных и относительных путях. Но здесь у вас есть абсолютное.

0

Вы планировали запуск сценариев один раз в неделю каждую субботу (6-й день недели) в 3:05 и 3:35.

Синтаксис выглядит хорошо. Возможной проблемой может быть bzip2. Убедитесь, что ваш crontab PATH содержит путь к программе.

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