У меня есть это в crontab. (в / и т.д.)
Я отредактировал файл как корень.
Сценарий хорошо работает, когда выполнено автономный, но не в crontab.
@daily root /home/andy/bin/Backup_18_04.sh
Чтобы определить, есть ли проблемы в каком-либо скрипте в 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