web-dev-qa-db-ja.com

upstartスクリプト:ネットワークが稼働した後にタスクを実行する

現在のサーバー設定を新しいハードウェアに移動し、ubuntu karmicコアラからlucid lynxに移行しています。現在、システムのipv6アクセスを取得するために、gw6c(リポジトリのバージョンではなく、gogo6 Webサイトからコンパイル)を使用しています。 karmicコアラシステムで、単純なinit.dスクリプトを使用してipv6クライアントを起動しました

 #! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf

これはどのランレベルでも実行できるので、次のように変換する必要があると考えました

respawn
console none

start on startup

stop on shutdown

script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script

これはinitctrlから開始すると正常に機能しますが、起動時に開始できないようです。 -そのステータスは停止/待機中です。それ以外の方法で起動すると、正常に動作し(再起動します)、どこで問題が発生するかについてのアイデア、および適切な「開始」の議論は何でしょうか?

編集:正確なエラーは「init:gw6cメインプロセス(xxx)がステータス8で終了しました」であり、プロセスが再生成されます。xxxは疑わしいPIDです。私はこれがネットワークが起動する前にgw6cが起動する原因であると半分疑っています。gw6cが起動する前にeth0を起動する必要があります

23
Journeyman Geek

どうやら

respawn
console none

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
chdir /usr/local/gw6c/bin/

exec /usr/local/gw6c/bin/gw6c 
end script

うまくいくようです

27
Journeyman Geek

Gw6cを起動するスクリプトを配置します

/etc/network/if-up.d

そのフォルダー内のすべてのスクリプトは、インターフェイスが起動した後に実行されます。 eth0が起動したときにのみ実行する場合は、eth0エントリを編集します。

/etc/network/interfaces

スクリプトへの呼び出しを追加します

iface eth0 inet dhcp
  up /etc/init.d/gw6c restart

また、インターフェースがオフラインになる前にトンネルをシャットダウンするための事前ダウンスクリプトを追加することをお勧めします。

それを実行して機能する実装を見つけたら、ここに投稿して、使用できるようにします。私のラップトップにはgw6cがありますが、自動化するのが面倒です。

4
Haakon

「The Journeyman geek」に感謝します:)あなたは私に多くの時間を節約してくれました。私は/etc/init.d/gw6cスクリプトと戦い、「sysv-rc-conf -p」でいくつかのタイミングを試し、なぜそれが機能しないのか(別名WTF?)と思っていました。

respawn
console none

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

script

exec /etc/init.d/gw6c start
end script

わずかに変更された(「ランレベル」とexecコマンド)スクリプトが仕事をしました! :) :) :)

1
inox

ここから: http://upstart.ubuntu.com/cookbook/#single-job-instance-running-without-pid

description     "Uncomplicated firewall"

# Make sure we start before an interface receives traffic
start on (starting network-interface
          or starting network-manager
          or starting networking)

stop on runlevel [!023456]

console output

pre-start exec /lib/ufw/ufw-init start quiet
post-stop exec /lib/ufw/ufw-init stop
0
Matt Sweeney