/etc/network/interfacesのpost-upコマンドが起動時に複数回実行されるのはなぜですか?

/etc/network/interfacesのpost-upコマンドが起動時に複数回実行されるのはなぜですか?

内容は次のとおりです/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

post-up /etc/network/if-up.d/sshstart

sshstart以下を含むスクリプトです。

curl something something darkside send a file over ftps in the background &
/usr/bin/autossh -M 0 -f -N -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -R 127.0.0.1:2005:127.0.0.1:22 -R 192.168.1.10:2006:192.168.2.110:1912 -L 127.0.0.1:5249:192.168.1.212:5249 [email protected] -p 8080

マシンが再起動すると、コマンドcurlが複数回実行され、ファイルがftpサーバーに2〜3回保存され、プロセスを見ると、autosshインスタンスが複数実行されているようです。これが正しいかどうかはわかりません。 autosshはそうではありませんが、確かにカールはファイルを何度もアップロードしてはいけません。

私の直感は、スクリプト全体がsshstart何度も実行されますが、理由を理解できないということです。

起動時にネットワーク設定プロセスの詳細を検索してみましたが、見つかったのはインターフェイスファイルの構文情報だけでした。

誰でも助けることができますか?

ありがとうございます。

- -編集する- -

以下のようにインターフェイスファイルを次のように修正しました(投稿の上の空白行を削除)。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
post-up /etc/network/if-up.d/sshstart

sshstartに次の行を追加します。

echo $(date)>>/run/shm/sshstart.log

/run/shm/sshstart.log再起動後の様子は次のとおりです。

Wed Oct 29 08:07:00 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014

だから4回実行されました。 :(何が起こりましたか?

ベストアンサー1

ファイルは次の場所にあります。/etc/network/if-up.d すでにインターフェイス(すべてのインターフェイス)が表示されるたびに自動的に実行されます。同じスクリプトを再実行する明示的なコマンドを指定すると、post-upスクリプトは単に再実行されます。だから私の推測は次のとおりです。

  • loに位置してIFACE=loいるからです。/etc/network/if-up.d
  • 同じ理由でeth0発生時に一度だけ実行されます(環境変数を使用)。IFACE=eth0
  • eth0IFACEディレクティブが要求したために存在する場合(環境変数が設定されていない場合)、再実行されますpost-up

4番目はどこから来たのかわかりませんが、とにかく3番目でした。

スクリプトを別の場所に置き、post-upディレクティブで一度実行するか、ディレクティブに言及せずに所定の位置に置いて値をpost-up確認して、$IFACE必要なインターフェースが存在しない限りeth0何もしないようにする必要があります。 。

おすすめ記事