Запись Crontab не работает

У меня есть это в crontab. (в / и т.д.)

Я отредактировал файл как корень.

Сценарий хорошо работает, когда выполнено автономный, но не в crontab.

@daily          root    /home/andy/bin/Backup_18_04.sh
0
задан 14 August 2018 в 16:12

1 ответ

Чтобы определить, есть ли проблемы в каком-либо скрипте в crontab, мы должны проверить системный журнал с помощью команды

less -S /var/log/syslog

и найти строки CRON и найти соответствующие сообщения об ошибках.

Еще один способ упростить этот анализ - добавить явный файл журнала в определение cron, например:

@daily root /home/andy/bin/Backup_18_04.sh >/home/andy/backup.log 2>&1

Символ> перенаправляет весь вывод скрипта в файл, а 2> & amp ; 1 перенаправляет все сообщения об ошибках в один и тот же уже перенаправленный выходной файл (1 - это внутренний дескриптор, в котором все программы по умолчанию отправляют обычные сообщения, а 2 - для ошибок, поэтому 2> & 1 заставляет «канал» 2 подключаться к копия «канала» 1). ВАЖНО: определение строки должно заканчиваться символом новой строки.

Я предпочитаю использовать обычную систему CRON, настроенную через crontab -e; это только кажется сложным, потому что это имеет большую гибкость. Например, вы можете запускать сценарий ежедневно в 3:25, используя:

#MINUTE HOUR DAYOFMONTH MONTH DAYOFWEEK COMMAND
 25     3    *          *     *         /home/andy/bin/Backup_18_04.sh >/home/andy/backup.log 2>&1

Звездочки означают «все» для каждого поля, то есть «все дни всех месяцев в любой день недели в час 3 и минута 25 'cron выполняет скрипт и сохраняет его обычные сообщения и сообщения об ошибках, если они есть, в файле /home/andy/backup.log.

Слово @daily, которое вы использовали, эквивалентно 0 0 * * *, ежедневно в 0:00.

Кроме того, имя пользователя после указания времени используется только в / etc / crontab, а не в сценариях, созданных с помощью crontab -e (поскольку пользователь является создателем по умолчанию).

Два других важных аспекта - объявить сценарий исполняемым и указать, какой интерпретатор оболочки его обработает. Сделать исполняемый скрипт легко с помощью следующей команды:

chmod a+x /home/andy/Backup_18_04.sh

Чтобы указать интерпретатор оболочки, в самой первой строке скрипта должны быть символы фунта / восклицания #! и желаемый путь оболочки (это называется 'шебанг'), например:

 #!/bin/bash

Это приведет к обработке сценария интерпретатором оболочки Bash.

Подробнее о формате строки crontab читайте в соответствующем руководстве с помощью команды:

man 5 crontab
3
ответ дан 28 October 2019 в 03:59

Другие вопросы по тегам:

Похожие вопросы: