cron: Terminated by signal 13

7910
На сайте с 18.07.2007
Offline
181
1041

Есть простенький сценарий для cron’а для переноса бекапа на другой винт, примонтированный как папка hdd2:


chown -R root.root /home/user/backup/01092008
cp -R /home/user/backup/01092008 /hdd2/backup
[ -d /home/user/backup/01092008] && rm -rf /home/user/backup/01092008

изначально права на папку /home/user/backup/01092008 и все файлы в ней 700, но владелец не root. В кроне этот сценарий запускается из-под рута, поэтому пытаюсь сначала изменить владельца на root.

При запуске из bash скрипт корректно отрабатывает, владельцем становится root, все переносится и удпляется. А вот из crona не работает. Команда chown не отрабатывает, соответственно ничего не переносится и не удаляется, в логах крона “find: rm Terminated by signal 13”.

Помогите, пожалуйста, заставить этот скрипт отрабатывать из cron’а

Гуглила, перепробовала все советы, которые нашла. Не помогло… :(

A
На сайте с 10.10.2007
Offline
25
#1

либо Вы указали неполный код скрипта, либо ошибка в работе какого-то другого скрипта.

“find: rm Terminated by signal 13” - ошибка с организацией конвеера

по тексту ошибки - где-то в скрипте у Вас есть команда 'find', вывод отправляется на 'rm', вот там скрипт обламывается, проблема может быть и в синтаксисе, и в путях.

еще учитывайте, что для крона лучше указывать везде полные пути, а не относительные, либо делать переход в директорию скрипта, так как крон стартует скрипт, находять в домашней директории, а не там, где скрипт

по цитате:

[ -d /home/user/backup/01092008]

Перед последней скобкой должен быть пробел

------ это не завуалирование предложение себя в качестве эксперта. это мнение. Поведение в споре должно быть простым: (с) Стили спора (http://www.jvanetsky.ru/data/text/t7/stili_spora/?print=1) М.М.Ж.
7910
На сайте с 18.07.2007
Offline
181
#2
amso:

“find: rm Terminated by signal 13” - ошибка с организацией конвеера
по тексту ошибки - где-то в скрипте у Вас есть команда 'find', вывод отправляется на 'rm', вот там скрипт обламывается, проблема может быть и в синтаксисе, и в путях.
еще учитывайте, что для крона лучше указывать везде полные пути, а не относительные, либо делать переход в директорию скрипта, так как крон стартует скрипт, находять в домашней директории, а не там, где скрипт

Это я все знаю, пробел перед ] есть, пути везде полные. Есть в bash'е запустить этот скрипт из той директории из которой его крон стартует, то он отрабатывает, а с крона нет.

Есть файл backup_cron_ticker с правами 777 и текстом:


chown -R root.root /home/user/backup/01092008
cp -R /home/user/backup/01092008 /hdd2/backup
[ -d /home/user/backup/01092008 ] && rm -rf /home/user/backup/01092008

В /var/spool/cron/crontabs/root прописано


10 4 * * * /home/username/backup_cron_ticker 2>/var/spool/cron/crontabs/tmp.cron

В tmp.cron куча строк

“find: rm Terminated by signal 13”

A
На сайте с 10.10.2007
Offline
25
#3

Вообще, Ваш скрипт эквивалентен простому

mv /home/user/backup/01092008 /hdd2/backup

Он выполняется от рута, поэтому менять владельца не нужно, проверять директорию тоже вобщем-то не обязательно

В tmp.cron куча строк
“find: rm Terminated by signal 13”

К указанному скрипту они не имеют отношения, тут источник ошибки команда find.

Проверьте, есть ли в кроне еще есть задания, которые складывают вывод ошибок в

2>/var/spool/cron/crontabs/tmp.cron

И зачем туда? Эта директория используется кроном для файлов очереди

Попробуйте отправить вывод ошибок в другой файл, например, в /var/log/cron.err и смотрите, что будет там

7910
На сайте с 18.07.2007
Offline
181
#4

Причиной всему оказалось то, что в конце crontab-файла должна быть пустая строка, иначе последнее задание не срабатывает.

Всем большое спасибо за советы

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий