私は永久的な追加したいiptables
私の新しいにルールをVPS
、および簡単な後に私は、このルールを追加することができる2つの場所があることに驚いた検索Googleで、同じように思えること:/etc/rc.local
と/etc/init.d/rc.local
。たぶん、誰かが単純なスタートアップコードを置くための2つの場所がなぜあるのか知っていますか?Linuxフレーバー固有ですか(ただし、ubuntuには両方があります!)?または、それらの1つは非推奨ですか?
私は永久的な追加したいiptables
私の新しいにルールをVPS
、および簡単な後に私は、このルールを追加することができる2つの場所があることに驚いた検索Googleで、同じように思えること:/etc/rc.local
と/etc/init.d/rc.local
。たぶん、誰かが単純なスタートアップコードを置くための2つの場所がなぜあるのか知っていますか?Linuxフレーバー固有ですか(ただし、ubuntuには両方があります!)?または、それらの1つは非推奨ですか?
回答:
/etc/init.d
sysvinitのものとの後方互換性のためにubuntu上で維持されます。実際に見ると、/etc/init.d/rc.local
(12.04 LTSサーバーからも)表示されます:
#! /bin/sh
### BEGIN INIT INFORMATION
# Provides: rc.local
# Required-Start: $remote_fs $syslog $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO
そして、「/ etc / rc.localを実行する」がまさにそれです。全体/etc/rc.local
は次のとおりです。
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
これを行う目的は、stop | startサービスに対処することなく、ブート時に実行するシェルコマンドを配置するための非常にシンプルな場所を提供することだと思います/etc/init.d/rc.local
。
したがって、実際にはサービスであり、そのように実行できます。とにecho
行を追加しました/etc/rc.local
:
»service rc.local start
hello world
ただし、upstartの/etc/init
(init.d!ではない)ディレクトリ内の何かによって参照されているとは思わない:
»initctl start rc.local
initctl: Unknown job: rc.local
upstartにはいくつかの「rc」サービスがあります。
»initctl list | grep rc
rc stop/waiting
rcS stop/waiting
rc-sysinit stop/waiting
しかし、それらのどれもrc.localとは関係がないようです。
これは、ディストリビューション固有のものです。(たとえば、CentOSで別のrc.localを見つけることはできません)。
あなたの実際の質問に来て、/ etc / init.d / rc.local内に何かを追加すると「サービス」として起動するのに対し、/ etc / rc.local内にあるものはブート時にそのスクリプトを起動するだけだと思います。
Ubuntuがなぜ両方を維持しているのか本当に分かりませんか?(おそらく他の誰かがこの部分に光を当てるかもしれません!!)
/etc/init.d/rc.local
んの停止開始のもの/etc/rc.local
(詳細は私の答えを参照してください)。
/etc/rc.local
スクリプトは、スクリプトによって管理される実行可能プロセスであるため、/etc/initd/rc.local
(たとえば)/bin/syslog
によって管理される実行可能プロセスと同様/etc/initd/syslog
です。明示的に、これ/etc/rc.local
は単なるブートスクリプトであり/etc/initd/rc.local
、完全に独立した実行レベルサービスであると言います。