Linux でシステムの起動時に 1 度だけ処理を実行する。
システムの起動時に一度だけ実行する処理は、普通は /etc/rc.local に書くわけだが 、1 ファイルにすべてを書いてしまうと管理が煩雑になったりする。まとまった処理ごとにファイルを分けておいたほうが管理が楽だ。
そこで /etc/rc.local の内容を以下の通りにする。
#!/bin/sh if [ -d /etc/rc.local.d ]; then for i in /etc/rc.local.d/*; do if [ -r $i ]; then . $i fi done unset i fi exit 0
/etc/rc.local.d というディレクトリを用意する。ここにシェルスクリプトの書かれたテキストファイルを入れておくと上のスクリプトによってすべて実行されることになる。ファイル名は何でも良い。
イー・モバイル端末が本体に接続されていれば接続する例 (ネットブック等で有用)。
#!/bin/sh -e test -c /dev/ttyUSB0 && pon em
IP アドレスを自分宛にメールする例 (仮想環境のゲスト等で有用)。
#!/bin/sh -e ifconfig | mail -s "[`/bin/hostname`] system started" [email protected]
これらのスクリプトには実行属性を付与する必要は無い (とはいえ付けておいたほうが便利なことが多い)。また、シェバングに -e という引数をつけていることに注目。反対に上の /etc/rc.local にはこの引数を付けてはならない。