[英]Manually running crontab cron.hourly returns missing file error
我一直在盡力了解 crontab 和 logrotate 如何協同工作,而且我一直在兜兜轉轉。
我從 /etc/crontab 中取出一行並運行:
$ sudo run-parts --report /etc/cron.hourly
/etc/cron.hourly/logrotate:
run-parts: failed to exec /etc/cron.hourly/logrotate: No such file or directory
run-parts: /etc/cron.hourly/logrotate exited with return code 1
$ run-parts --report /etc/cron.hourly
/etc/cron.hourly/logrotate:
run-parts: failed to exec /etc/cron.hourly/logrotate: No such file or directory
run-parts: /etc/cron.hourly/logrotate exited with return code 1
文件 logrotate 確實存在於 /etc/cron.hourly 中:
$ ll /etc/cron.hourly/
total 16
drwxr-xr-x 2 root root 4096 Jun 25 15:43 ./
drwxr-xr-x 94 root root 4096 Jun 26 10:20 ../
-rwxrwxr-x 1 root root 98 Jun 26 13:00 logrotate*
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
我認為這就是為什么我對每小時輪換日志的最新更改不起作用的原因。
奇怪的是,當我運行時:
$ sudo run-parts --report /etc/cron.daily
它只是掛起,直到我按 ctrl+c 取消它。
我的 /etc/cron.hourly/logrotate 看起來像這樣:
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate_hourly.conf
如果我運行以下命令:
sudo /usr/sbin/logrotate /etc/logrotate_hourly.conf
然后它會完全按照原樣旋轉日志。
這使我認為上面提到的錯誤是我的問題。
有沒有人對我錯過的東西有任何想法可以給我? 干杯
更新:
根據下面推薦的內容,我將 /etc/cron.hours/logrotate 轉換為 unix 行結尾。
這意味着在終端中手動運行 crontab 命令是有效的。 沒有錯誤,並且日志已正確輪換。
但是 crontab 仍然沒有自動運行。
這里的答案是在我部署期間我錯過了一個帶有 Windows 行結尾的文件。 在服務器上使用 dos2unix 可以解決所有問題。
跑步:
sudo service cron reload
編輯“/etc/crontab”后需要 - 以為我已經讀了幾次這不應該需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.