Shell-Script
wget 在啟動時將文件保存為 emply 純文字文件
我在 crontab 中有一個執行 @reboot 的 bash 腳本:
該腳本本身包含一個 wget 命令,用於從 Internet 拉取和下載文件
當我在登錄並打開終端后執行我的腳本時,它可以正常工作並正確保存文件(html、png)。但是當我重新啟動系統時,它會保存執行並保存為沒有內容的純文字文件。
解決了
–> 我在 crontab 中使用了 sleep 功能,它可以工作!!!
新的 linux 和程式碼,所以感謝所有的回饋!我還將探索 /etc/network/if-up.d/ 選項。
幾乎可以肯定的是,您的cron
@reboot
作業在您的網路介面出現之前就已經開始了up
。一般來說,這是一個有據可查的缺點cron
。這並不意味著該@reboot
設施是無用的,它只是意味著您需要了解它是如何工作的,以及當它發生故障時如何解決它 - 就像您的情況一樣(可能:)。至少有兩種方法可以做到這一點:
- 在您的 @reboot 作業中使用
sleep
,讓網路有更多時間獲取up
. 您的crontab
條目將如下所示:@reboot 睡眠 10;/your/bash/script/as-it-is-now
我建議
10
這裡的值給界面10秒的時間up
;YMMV,所以嘗試不同的值。
- 跟進@confetti 的建議(感謝@Celada),將您的腳本放入
/etc/network/if-up.d
. 以下是一個可能有用的原型。請注意,它僅在您的系統第一次啟動時執行(例如@reboot
,而不是每次帶來網路介面時up
):#!/bin/sh
NWKSTATUS=/var/run/the-network-is-up
注意 /var/run 是一個臨時文件系統,因此系統關閉
將有效地擦除我們的標誌文件,’the-network-is-up'
case “$IFACE” in
lo)
排除環回介面;我們不會考慮它
因為它不是一個真正的界面。我們只設置標誌
當一個真正的網路介面出現
exit 0
;;
*)
;; 經社理事會
如果標誌文件存在,我們就在這裡完成
否則,我們將創建它
如果
$$ -e $NWKSTATUS $$; 然後退出 0
否則
觸摸 $NWKSTATUS
fi
在此處添加您的腳本…
所以-將以上所有內容放入一個文件中(例如
setnwkstatus.sh
),然後將其保存在文件夾中/etc/network/if-up.d/
並使其可執行(即sudo chmod /etc/network/if-up.d/setnwkstatus.sh
)