Ежедневное задание cron не работает

10

Краткий обзор: у меня есть сценарий, который будет ежедневно создавать резервную копию моего исходного кода из SVN в tarball для этого дня. Я протестировал скрипт, и он работает очень хорошо, пока я запускаю его как sudo из-за права собственности на выходной каталог.

Итак, проблема в том, что я хочу запускать эту ежедневную версию, поэтому я помещаю ссылку на нее в каталог /etc/cron.daily. Вот содержимое каталога.

[email protected]:/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
[email protected]:/etc/cron.daily$ 

Проблема в том, что она просто никогда не запускается. Вот разрешения для этого скрипта:

[email protected]:/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

Идеи?

    
задан Thom 12.03.2012 в 10:23
источник

3 ответа

34

Пробовал этот

run-parts --test /etc/cron.daily

Установил, что мой файл update.ubuntu не появился. Также заметил, что у моего файла есть расширение (есть точка в нем).

Шаги, чтобы исправить это.

  1. Переименовал мой update.ubuntu в update-ubuntu
  2. Теперь снова run-parts --test /etc/cron.daily , на этот раз мой файл появился!
ответ дан D Durga Prasad 01.02.2013 в 06:18
3

Может быть одной из нескольких вещей:

Путь корней:

  

В зависимости от выполняемых команд вам может потребоваться развернуть переменную PATH корневых пользователей, поставив следующую строку вверху своего файла crontab:

     

PATH = / USR / SBIN: / USR / бен: / SBIN: / бен

src: Ссылка

Или просто используйте полные пути к каждой команде в вашем скрипте: /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 каждый день, если машина включена. используйте * * * * * во время тестирования, чтобы запускать один раз в минуту, пока вы не заработаете.

    
ответ дан Sean 12.03.2012 в 11:56
1

Составьте свой syslog для сообщений вроде:

crond: (*system*) BAD FILE MODE

файлы должны быть ограничены (достаточно) на 644):

chmod 0644 /etc/cron.d/my_crontab
    
ответ дан Tom H 21.05.2013 в 21:46