wgetは起動時にファイルをプレーンテキストファイルとして保存します。

wgetは起動時にファイルをプレーンテキストファイルとして保存します。

crontabで@rebootを実行するbashスクリプトがあります。

スクリプト自体には、インターネットからファイルを抽出してダウンロードするためのwgetコマンドが含まれています。

ログインして端末を開いた後、スクリプトを実行すると正常に動作し、ファイル(html、png)が正しく保存されます。ただし、システムを再起動すると、実行は保存され、内容のないプレーンテキストファイルとして保存されます。


解決済み

--> crontabの省電力機能を使用しましたが、うまくいきました!

Linuxとコーディングが初めての方々のフィードバックに心から感謝します! /etc/network/if-up.d/オプションも見てみましょう。

答え1

問題はほぼもちろん、@rebootクローン操作はネットワークインターフェイスが表示される前に開始されますup通常、これはよく文書化された欠点ですcronこれは、その施設が役に立たないという意味ではなく、@rebootあなたの場合のように、その施設がどのように機能し、失敗した場合の修正方法を理解する必要があることを意味します(おそらく:).

これを行う方法は少なくとも2つあります。

  1. sleepネットワークに取得する時間をさらに提供するために@reboot操作に使用されますupcrontab項目は次のとおりです。

@restartsleep10;/your/bash/scripts/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 *);;




#フラグファイルが存在する場合、操作は完了です
。 #そうでなければ生成します。

if [ -e $NWKSTATUS ]; 0 を終了して
else
touch $NWKSTATUS
fi

#ここにスクリプトを追加してください...

したがって、上記のすべての内容をファイルに入れて(たとえば)setnwkstatus.shフォルダに保存し、/etc/network/if-up.d/実行可能にします(例sudo chmod /etc/network/if-up.d/setnwkstatus.sh:)

答え2

cron最も可能性の高い問題は、スクリプトを実行しようとするとネットワークインタフェースが機能しないことです。

ネットワークインタフェースの起動後にスクリプトを実行できます。

スクリプトを挿入して実行できるように/etc/network/if-up.d設定します。chmod +xネットワークインターフェイスが表示されるたびに、その中のすべてのスクリプトが実行されます。

関連情報