我一直在努力解決這個問題。谷歌有很多答案,但他們似乎都沒有解決這個問題。我希望別人有這個問題,並知道如何解決它。無法使用Cron刪除文件
所以問題: 我想刪除比使用cron3天舊文件。
我的crontab:
# m h dom mon dow command
SHELL=/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin
*/1 * * * * /root/insert.sh
0 0 * * * /root/backup.sh
*/1 * * * * find /root/backups -mtime +3 -exec /bin/rm {} \;
有了這個crontab的/root/backup.sh
每天晚上在午夜運行和工作原理。另外/root/insert.sh
(運行php腳本將一些數據移動到另一個文件夾)每分鐘工作。
我去/根/備份和手動鍵入find /root/backups -mtime +15 -exec rm {} \;
奏效。它刪除了所有超過15天的文件。
要確認cron是運行此行代碼。我跑tail -f /var/log/syslog | grep CRON
(我運行Ubuntu服務器13.04)
Jul 24 07:47:01 myServer CRON[13934]: (root) CMD (find /root/backups -mtime +3 -exec rm {} \;)
Jul 24 07:48:01 myServer CRON[13937]: (root) CMD (/root/insert.sh)
Jul 24 07:48:01 myServer CRON[13938]: (root) CMD (find /root/backups -mtime +3 -exec rm {} \;)
Jul 24 07:49:01 myServer CRON[13954]: (root) CMD (/root/insert.sh)
Jul 24 07:49:01 myServer CRON[13955]: (root) CMD (find /root/backups -mtime +3 -exec /bin/rm {} \;)
所以你可以看到它正在運行。我試過把PATH放在我的crontab中。我試過把/bin/rm
而不是rm
。有人建議確保crontab的末尾有一個CR。它的確如此。
即使它的根的cron我做chmod a+rwx backups
所以任何人都可以修改該文件夾。那裏仍然沒有運氣。
我試着在我的crontab rm -fr /root/backups
和/bin/rm -fr /root/backups
並沒有奏效。如果我做/bin/rm -fr /root/backups >> /root/logmeplease.log 2>&1
並沒有記錄。
最後,我試圖把它變成shell腳本。
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
find /root/backups -mtime +5 -exec /bin/rm {} \;
再次,這在文件的底部有一個CR。這個腳本通過手動運行,但cron不會執行它。我也在頂部嘗試了#!/bin/bash -l
和#!/bin/bash -x
。
有沒有真正簡單的東西我錯過了爲什麼我的根的cron不會刪除任何文件?系統日誌顯示它正在運行腳本或命令?
感謝您的任何幫助!
當您使用'bash -x'時,您是否收到帶有腳本腳本的電子郵件? – Barmar
你試過'/ usr/bin/find'而不是'find'嗎? – uzsolt
我認爲這是因爲cron使用sh而不是bash。將第一行'SHELL =/bin/sh'改爲'SHELL =/bin/bash'。這有幫助嗎? – jsp