Shell-Script

wget 在啟動時將文件保存為 emply 純文字文件

  • September 7, 2018

我在 crontab 中有一個執行 @reboot 的 bash 腳本:

該腳本本身包含一個 wget 命令,用於從 Internet 拉取和下載文件

當我在登錄並打開終端后執行我的腳本時,它可以正常工作並正確保存文件(html、png)。但是當我重新啟動系統時,它會保存執行並保存為沒有內容的純文字文件。


解決了

–> 我在 crontab 中使用了 sleep 功能,它可以工作!!!

新的 linux 和程式碼,所以感謝所有的回饋!我還將探索 /etc/network/if-up.d/ 選項。

幾乎可以肯定的是,您的cron@reboot作業在您的網路介面出現之前就已經開始了up一般來說,這是一個有據可查的缺點cron這並不意味著該@reboot設施是無用的,它只是意味著您需要了解它是如何工作的,以及當它發生故障時如何解決它 - 就像您的情況一樣(可能:)。

至少有兩種方法可以做到這一點:

  1. 在您的 @reboot 作業中使用sleep,讓網路有更多時間獲取up. 您的crontab條目將如下所示:

@reboot 睡眠 10;/your/bash/script/as-it-is-now

我建議10這裡的值給界面10秒的時間up;YMMV,所以嘗試不同的值。

  1. 跟進@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

引用自:https://unix.stackexchange.com/questions/459735