Краткий обзор: у меня есть скрипт, который будет ежедневно делать резервные копии моего хранилища исходного кода из SVN в tarball на этот день. Я проверил сценарий, и он работает очень хорошо, пока я запускаю его как sudo, из-за владения выходным каталогом.
Итак, проблема в том, что я хочу запускать это ежедневно, поэтому я поместил ссылку на него в каталог /etc/cron.daily. Вот содержимое каталога.
thom@spenser:/etc/cron.daily$ ls -l
total 60
-rwxr-xr-x 1 root root 189 2011-09-14 02:21 apport
-rwxr-xr-x 1 root root 15535 2011-10-06 11:30 apt
-rwxr-xr-x 1 root root 314 2011-08-08 16:57 aptitude
lrwxrwxrwx 1 root root 24 2012-02-28 11:05 backup -> /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root 502 2011-06-08 11:48 bsdmainutils
-rwxr-xr-x 1 root root 256 2011-10-06 04:04 dpkg
-rwxr-xr-x 1 root root 372 2011-10-04 16:50 logrotate
-rwxr-xr-x 1 root root 1353 2011-07-27 07:17 man-db
-rwxr-xr-x 1 root root 606 2011-08-17 09:16 mlocate
-rwxr-xr-x 1 root root 249 2011-06-24 05:36 passwd
-rwxr-xr-x 1 root root 2417 2011-07-01 17:25 popularity-contest
-rwxr-xr-x 1 root root 383 2011-09-30 15:09 samba
-rwxr-xr-x 1 root root 3594 2011-09-19 20:07 standard
thom@spenser:/etc/cron.daily$
Проблема в том, что он просто никогда не работает. Вот разрешения для этого сценария:
thom@spenser:/etc/cron.daily$ ls -l /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root 260 2012-02-28 11:03 /usr/local/bin/backup.sh
Идеи?
Grep ваш системный журнал для сообщений, таких как:
crond: (*system*) BAD FILE MODE
файлы должны быть ограничены (достаточно) на 644):
chmod 0644 /etc/cron.d/my_crontab
Попробовал
run-parts --test /etc/cron.daily
Обнаружил, что мой файл update.ubuntu не появился. Также заметил, что мой файл имеет расширение (в нем есть точка).
Шаги, чтобы это исправить.
run-parts --test /etc/cron.daily
, на этот раз мой файл появился! Это может быть одна из нескольких вещей:
Путь к корням:
В зависимости от выполняемых команд вам может потребоваться расширить переменную PATH корневого пользователя, поставив следующую строку вверху их файла crontab:
PATH = / usr / sbin: / usr / bin: / sbin: / bin
blockquote>src: https: // help.ubuntu.com/community/CronHowto
Или просто используйте полные пути к каждой команде в вашем скрипте:
/bin/ls
вместоls
, например. (which ls
в командной строке для путей).Существует странная ошибка с точками в имени файла, о которой здесь сообщается . Может распространиться на файл, на который вы ссылаетесь, хотя это кажется маловероятным.
Сохраняете ли вы вывод из файла резервной копии? Поместите что-то вроде этого в первую строку, чтобы определить, запущен ли он вообще или работает, но в какой-то момент вышел из строя.
/bin/echo "Attempting to run backup" >> /path-to-home/backup.log
В качестве альтернативы попробуйте добавить скрипт непосредственно в файл crontab:
sudo -i crontab -e [add the next line to the file, then save and exit] 33 15 * * * /usr/local/bin/backup.sh
будет работать в 15:30 каждый день, если машина включена. используйте * * * * * во время тестирования, чтобы запускаться раз в минуту до тех пор, пока он не заработает.