1時間ごとに帯域幅の使用状況を記録するサービススクリプトを作成していますsystemd
。ネットワークがダウンすると、何かこのスクリプトはネットワークがダウンしていることを通知し、スクリプトは一時的に停止します。同様に、ネットワークが再び起動した場合、それネットワークが稼働していることを通知する必要があります。
Ubuntu 15.10でスクリプトを書くためにbashを使用しています
解決策を提案する前に、サーバーに ping を実行するなどの回避策は必要ないことにご注意ください。
答え1
最善の方法は、Network Manager ですでに利用可能なイベント駆動型ステータスを使用することです。
NetStatus.x
次の場所にファイルを作成します/etc
:sudo nano /etc/NetStatus.up
次のテキストを追加します。
これは NetStatus ファイルです。名前の拡張子が「up」の場合はネットワークの状態がアップであることを意味し、「down」の場合はダウンしていることを意味します。(当然です!)
/etc/NetworkManager/dispatcher.d/01ifupdown
以下の太字部分を編集して追加します。case "$2" in up|vpn-up) export MODE="start" export PHASE="post-up" exec run-parts /etc/network/if-up.d mv /etc/NetStatus.down /etc/NetStatus.up ;; down|vpn-down) export MODE="stop" export PHASE="post-down" exec run-parts /etc/network/if-post-down.d mv /etc/NetStatus.up /etc/NetStatus.down ;;
/etc/NetStatus.up
次のコード スニペットを使用して、実際にデータの収集を開始する前に、独自の収集スクリプトを変更して、の存在を確認します。if [ -e /etc/NetStatus.up ] ; then #move your existing collection in here fi
なぜ?
名前の変更は、フロッピー ベースのシステムを含むあらゆる OS のステータスを変更する最も速い方法であり、非常に簡単に使用できます。私は上記のシステムを使用して、低レベルの MS-DOS ベースのシステムからスーパー コンピュータに至るまで、サーバー ステータス、バックアップ ステータス、計算ステータスを取得しました。