1

У меня есть 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

Я предполагаю, что ваши права неверны для 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 - вы уверены, что хотите принудительно удалять рекурсивно - особенно автоматизированный процесс во всех подкаталогах?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .