команда bash внутри crontab не работает

486
Nikesh

У меня есть crontab, который запускается каждую минуту и ​​удаляет некоторые каталоги и файлы.

Мой cron выглядит так

* * * * * bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1 

В моем журнале я вижу команду

CRON[57937]: (kahoadmin) CMD (bash /var/www/html/Database/Backup/Remove_Old_Backups >/dev/null 2>&1) 

Это мой файл скрипта

#!/bin/bash  ROOTDIR="/var/www/html/Database/Backup/Backups/*"  sudo find $ROOTDIR -mtime +5 | xargs rm -f -r 

Если я запускаю этот скрипт напрямую, он работает и удаляет каталог и файлы. Только в crontab не работает

Может кто-нибудь помочь мне найти, что здесь происходит не так?

1

1 ответ на вопрос

1
davidgo

Я предполагаю, что ваши права неверны для sudo (но также возможно, что вы пропускаете пути для find и xargs при запуске из cron)

Если бы это был я, я бы: 1. Поместите файл в / etc / crontab и запустите его как root. 2. Измените его на 1-строчный скрипт с меньшим количеством зависимостей (как я делал часто). Я бы поставил следующую строку в / etc / crontab

* * * * * root /bin/find /var/www/html/Database/Backup/Backups mtime +5 -exec rm -rf {} + 

Который делает то же самое, не полагаясь на XARGS

Я отмечаю, что вы делаете -rf - вы уверены, что хотите принудительно удалять рекурсивно - особенно автоматизированный процесс во всех подкаталогах?

Я удалил sudo в сценарии. Это сработало. Спасибо Nikesh 6 лет назад 0