為什麼 Linux 每天都在同一時間重新啟動?
我有一個氣象站,可以將數據發送到 Raspberry PI,其中執行一個 linux 伺服器,該伺服器獲取並儲存該數據。除了一件小事,一切都很好。Raspberry 通過 USB 電纜連接到氣象站室內顯示器。顯示器設置為在開機時再現聲音。所以基本上,每天凌晨 3 點我都會被這個聲音吵醒。然後我通過 ssh 連接到 Raspberry 並輸入這個命令來訪問日誌,看看當時發生了什麼:
nano /var/log/syslog
我發現了這一行:
Jul 21 02:53:01 weatherstation CRON[25991]: (root) CMD (sudo reboot)
這每天都在同一時間重複。所以,顯然我在 crontab 中有一些東西會不斷重啟我的樹莓派。顯然,如果設備重新啟動以冷卻片刻是可以的,但在凌晨 3 點這樣做是不行的,哈哈。
然後我打開:
nano /etc/crontab
我發現了這 4 行:
17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
所以沒有明確的 sudo reboot,但我懷疑 /etc/cron.daily 中的某些東西正在執行該指令。所以我打開了文件夾 cron.daily 並在裡面找到了這些文件:
apache2 apt-compat aptitude bsdmainutils cracklib-runtime dpkg exim4-base logrotate man-db passwd
唯一讓我感興趣的文件是
apt-compat
. 在那裡我發現了這個:# run daily job exec /usr/lib/apt/apt.systemd.daily
問題是,這個文件對我來說太複雜了。我不知道裡面使用的程式語言,也不知道在技術上是做什麼的。所以我只想將重啟時間從凌晨 3 點轉移到上午 10 點,但我不明白怎麼做。
謝謝大家的關注。
從日誌消息中,我們看到它是通過 cron(而不是例如 systemd 計時器)執行的,並且命令是
sudo reboot
.大多數係統提供的 cron 作業都在 內的文件中
/etc/cron.d/
,所以這是一個可以查看的地方。在 root 使用者的個人 crontab 中也可以有一些東西。每個使用者的 crontab 應該使用 和 來查看和編輯
crontab -l
,crontab -e
但它們通常駐留在/var/spool/cron/crontabs/
某個目錄中。(這是 Debian 上的路徑,在其他系統上可能會有所不同。)通常,你不會在那裡看到系統提供的東西。然後是
/etc/cron.daily
和類似的目錄,那裡的文件只是執行檔(通常是 shell 腳本),一些工具每天/每週/每月執行一次。儘管這些可能會提供不同類型的日誌條目,因為它們不直接從 cron 執行。在緊要關頭,您總是可以退回到
grep -re "sudo reboot" /etc/ /var/
等等。相關:
/etc/crontab
、/etc/cron.d/
和/var/spool/cron/crontabs/root
下的文件之間的區別?我想我也會在這裡連結:如何在 CentOs7 中查看所有 cron 記錄