Bash
如何檢查正常執行時間是否大於 72 小時?
我需要創建一個每天執行的腳本(cron 作業),計算系統的正常執行時間,如果該數字大於 72 小時,則重新啟動系統。
我在將小時值轉換為我可以與 72 比較的值時迷失了方向。它返回給我
6499.04: command not found
#!/bin/bash if $(awk '{print $1}' /proc/uptime) / 3600 > 72 ; then echo "yes" fi
預先感謝您的任何幫助!
我會在 AWK 中進行整個測試:
awk '$1 > (72 * 3600) { print "yes" }' /proc/uptime
如果要將其用作測試,請使用退出程式碼:
if awk '{ exit ($1 < (72 * 3600)) }' /proc/uptime; then echo Need to reboot fi
如果比較失敗, AWK 評估
($1 < (72 * 3600))
為 0,否則為 1;0 表示成功作為退出程式碼,因此我們反轉條件。如果您使用的是 systemd,另一種方法是使用 systemd 計時器
OnBootSec=72h
(有關詳細資訊,請參閱FelixJN 的答案)。
一個 systemd 計時器也可以工作:
[Unit] Description=reboot after 72h [Timer] Unit=systemd-reboot.service OnBootSec=72h [Install] WantedBy=multi-user.target
請注意,這不是服務,而是計時器,即文件名必須以
.timer
. 將其放入 eg 中/etc/systemd/system/reboot27h.timer
,然後像往常一樣為目前會話啟用並啟動它:systemctl enable reboot72h.timer systemctl start reboot72h.timer
要檢查計時器是否正常工作以及距離下一次執行還有多少時間,請使用
systemctl list-timers