lệnh bash bên trong crontab không hoạt động


1

Tôi có một crontab chạy mỗi phút và xóa một số thư mục và tập tin.

Cron của tôi trông như thế này

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

Trong nhật ký của tôi, tôi có thể thấy lệnh đang chạy

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

Đây là tập tin kịch bản của tôi

#!/bin/bash

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

Nếu tôi chạy tập lệnh này trực tiếp, nó sẽ làm việc và xóa thư mục và tập tin. Chỉ trong crontab nó không hoạt động

Bất cứ ai có thể giúp tôi trong việc tìm kiếm những gì đang xảy ra ở đây?

Câu trả lời:


1

Tôi đoán là quyền của bạn sai đối với sudo (nhưng cũng có thể hình dung rằng bạn đang thiếu các đường dẫn để tìm và xargs khi chạy từ cron)

Nếu là tôi tôi sẽ - 1. Đặt tệp vào / etc / crontab và chạy dưới dạng root. 2. Thay đổi tập lệnh thành tập lệnh 1 dòng với ít phụ thuộc hơn (như tôi đã làm thường xuyên). Tôi sẽ đặt dòng folowing trong / etc / crontab

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

Mà làm điều tương tự mà không dựa vào xargs

Tôi lưu ý rằng bạn đang thực hiện một -rf - bạn có chắc chắn muốn buộc phải xóa đệ quy - đặc biệt là một quy trình tự động trên tất cả các thư mục con?


Tôi đã loại bỏ sudo trong kịch bản. Nó đã làm việc. Cảm ơn bạn
Nikesh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.