задание cron на centOS 6.5

задание cron на centOS 6.5

Я использовал эти 2 ссылки для вставки новой записи в crontab.

Красная Шапка

убунту

Я создал новый файл bash и переместил его в /usr/bin. Этот файл sh имеет права на выполнение для пользователя root и группы admin. Файл bash просто выводит строку в файл журнала, а затем вызывает программу java. Я протестировал файл sh вручную как root. Он работает нормально. Моя запись в crontab выглядит так...

 @hourly      /usr/bin/foo.blah.sh

Он должен запускаться в начале каждого часа. Оператор echo не выводится в файл журнала, поэтому я не думаю, что crond вообще его вызывает. Кроме того, когда я визуально отслеживаю процессы в "top", задание никогда не появляется. Я запустил "service crond status", чтобы убедиться, что демон cron запущен. В документации сказано, что перезапуск демона не нужен. Что еще я могу делать неправильно?

решение1

Вы на самом деле не говорите, где находится запись crontab, но основываясь на вашем комментарии, который crontab -lвыводит no crontab for root, я рискну предположить, что вы добавили файл в один из каталогов /etc/cron.*, который содержит файлы, соответствующие различным заданиям cron. Этот ответ предполагает, что это так.

Эти файлы имеют формат, который немного отличается от пользовательского crontab, который вы редактируете через crontab -e. В частности,они включают поле имени пользователянепосредственно перед командой, которая не включена в пользовательский файл crontab (который, по крайней мере, в моей системе хранится в /var/spool/cron/crontabs, но, пожалуйста, не злоупотребляйте этой информацией; точное местоположение — это детали реализации демона cron, который вы используете, и вам следует использовать документированные интерфейсы для управления этими файлами).

Как результат,тебе следует измениться

@hourly      /usr/bin/foo.blah.sh

к

@hourly user /usr/bin/foo.blah.sh

где userимя учетной записи пользователя, от имени которой будет запускаться скрипт. После этого он должен нормально работать.

Я настоятельно рекомендую вам не запускать задания cron, если rootтолько вы не обязаны это делать; выполнение чего-либо в качестве суперпользователя всегда представляет угрозу безопасности. Если возможно, дайте скрипту его собственную учетную запись с ограниченным доступом. (Это принцип наименьших привилегий; наименьшее, то есть то, что требуется для выполнения его работы.) Как правило, вы должны размещатьсистемные локальные файлы в /usr/localчтобы избежать конфликтов с системным менеджером пакетов; кроме того, чтобы избежать путаницы, не помещайте в каталог bin то, для работы чего требуются права root, вместо этого используйте sbin.

решение2

Раньше при добавлении скриптов в cron я всегда начинал строку с sh, вот так:

@hourly    sh /usr/bin/foo.blah.sh

Связанный контент