すべてが実行されているときに起動時にスクリプトをどのように実行しますか?

すべてが実行されているときに起動時にスクリプトをどのように実行しますか?

私はルーティング目的でPCを持っていますが、そのPCには2つのネットワークインターフェースがあり、Debianを実行しています。動作していることを知らせる音を追加したいです。

/etc/init.s/beep-startupだから私は一流の秘密に基づいていくつかのスクリプトを作成しました。LSバイファマニュアル(名前の指定で笑いが止まらない。申し訳ありません。) これには、いくつかのコアコマンドが含まれています(何百ものLSB文字列で)。

### BEGIN INIT INFO
# Provides:          beep-startup
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: qwer
# Description:       asdf
### END INIT INFO
case "$1" in
  start)
    #power chord + extreme uprising = fells like its clearly up and feeing good
    beep -f 220 -l 100
    beep -f 330 -l 100
    beep -f 880 -l 100
    ;;
  stop)
    # power chord + slow chirp down, feels like low descending shutdown sound, right after ctrl+alt+del or /sbin/reboot
    beep -f 440 -l 100
    beep -f 330 -l 100
    beep -f 220 -l 100
    ;;
  *)
    echo "Usage: sudo rm / -rf"
esac

それから当然逃げchmod +xupdate-rc.d beep-startup defaults

しかし、今の秘密は、実行中のものを見ると、実際のビープ音は、ログインプロンプトが表示されるのではなく、システムの起動中に発生することです。したがって、ビープ音とログインプロンプトの間には2〜3秒の間隔があります。ビープ音と正しいルーティング開始の間に約5〜7秒があります(4コア* 2ghz + 4gb DDR3 RAM、ルーターでは悪くありません)。 「終了順序が開始されました」を確認する必要があります。

beepログインプロンプトを表示する前に、叙情的に「ナノ秒」になることを願っています。つまり、$all#everythingまたは作成したいものは正確で明確に保たれます)が実際に初期化を完了し、システムがログインを表示する準備が整いました。即時。システムがすべてのタスクを完了した直後に、ログインプロンプトが表示される前に実行される自動実行スクリプトをどのように作成できますか?


PS。少し不満ですが、これはコンソール専用のルーターであり、xorgや他のものはありません。必要な唯一のユーザーはrootあり、ほとんどのタスクはルートに関連付けられています。システムは「初期化」、「実行」、「終了」、「電源オフ」が可能で、実行レベルは不要です。 Debianはランレベルのないディストリビューションで本当のゴミです忙しいボックスの初期化そういう意味ではとても「セクシー」と感じます。後で、私は恥ずかしいDebianを削除し、buildrootなどのディストリビューションに切り替える予定です。ただし、これは本番環境でのみ発生します。私は安定し、どのソフトウェアが必要かを把握した後にのみ発生します。これで、開発とソフトウェアの使いやすさのテスト段階で「ランタイム」パッケージを追加する可能性が気になります。これまで、私は+について良い経験をしましたが、最初のブロックがiptables2番目のときに+の最悪の経験を経験しただけでなく、dnsmasqをブロックし、WAN全体を切断するなどの経験もありました。もっとユーザーフレンドリーなソリューションを探してください。今の質問は、「すべてが実行された後にスクリプトを実行する」についてです。shorewallwebmin/etc/init.d

答え1

ここには素晴らしい解決策があります。解決策1:crontabに@rebootエントリを作成して、/usr/local/bin/runonceというスクリプトを実行します。

mkdir -p を使用して、/etc/local/runonce.d/ran というディレクトリ構造を作成します。

次のように/usr/local/bin/runonceスクリプトを作成します。

    #!/bin/sh
for file in /etc/local/runonce.d/*
do
    if [ ! -f "$file" ]
    then
        continue
    fi
    "$file"
    mv "$file" "/etc/local/runonce.d/ran/$file.$(date +%Y%m%dT%H%M%S)"
    logger -t runonce -p local3.info "$file"
done

次に、再起動時に(一度だけ)実行したいスクリプトを/etc/local/runonce.dディレクトリに適切に配置し、chownとchmod +xを配置します。実行したら、ranサブディレクトリに移動し、名前に日付と時刻が追加されていることを確認できます。システムログにもエントリがあります。

デニス・ウィリアムズに感謝 https://serverfault.com/questions/148341/linux-schedule-command-to-run-once-after-reboot-runonce-equvalent

関連情報