/etc/rc.d/init.d/
      functions
/etc/rc.d配下とかのリーディング勉強会
                   2011/12/09
                       do_aki
do_aki (どぅーあき)
|所属| > 株式会社もしも
       (ドロップシッピング・アフィリエイトASP)
|仕事| > インフラ(サーバ管理)兼
       Webアプリケーション開発
|出現| > 渋谷・山手線沿線
|特性| > PHPer


                        http://do-aki.net/
/etc/rc.d/init.d/
functions って何?
/etc/rc.d/init.d/functions


 起動スクリプトの先頭によ
   く書いてあるアレ

. /etc/init.d/functions
. /etc/rc.d/init.d/functions   ←実体はこっち
/etc/rc.d/init.d/functions
• Shell Script

• 起動スクリプトでよく利用され
  る処理の関数群(ユーティリティ)

• CentOS 5.6 では、initscripts パッ
  ケージに含まれる
全 27 function
を紹介してみる
  ※CentOS 5.6 の場合
注意事項

• CentOS 5.6 での内容を元にしてます
• マイナーバージョンの違いでも若干異な
  るようです
• 6 系だと5,6くらい関数増えてるし

• ってか、激しく読みづれぇ… (;´Д`)
fstab_decode_str
• # Interpret escape sequences in an fstab entry
• fstab のエスケープシーケンスを解
  釈 ???
• 「fstab-decode echo “$1”」を実行している
  だけ



                                         1/27
checkpid
• checkpid pid1 pid2 ...
• 指定した process id のプロセスが立ち上
  がっているなら 0 を返す
• 複数指定した場合は、いずれかの pid が立
  ち上がっていれば 0
• それ以外は 1


                       2/27
__readlink
• シンボリックリンクの参照先を表示

• ls -bl "$@" 2>/dev/null| awk '{ print $NF }‘




                                             3/27
__umount_loop
• umount 完了するまで待つ感じ?

• よく分からなくて追ってない




                       4/27
__umount_loopback_loop
• __umount_loop と似てるけど、こっちは
  loopback デバイス用に特化されてる

• ってコメントに書いてありました




                         5/27
__pids_var_run
• __pids_var_run {program} [pidfile]

• pidfile (指定のない場合は、
  /var/run/{program})に含まれる pid を$pid
  にセット



                                       6/27
__pids_pidof
• __pids_pidof {program}

• {program} に該当するプロセスを pidof
• 無ければ、 {program} のベース名で pidof

• __pids_pidof httpd
• __pids_pidof /usr/sbin/httpd
• どっちでもOK
                                 7/27
daemon
• 引数で指定したプログラムをdaemonとし
  て実行
• daemon 化するわけではなく、既存プロセ
  スチェック、起動チェック、表示を簡単
  に行うためのもの。
• サービス名のあとに ... で待たされて ok と
  かでるのはこの関数呼んでるだけだった
  りする
                       8/27
killproc
• killproc [-p pidfile] [ -d delay] {program} [-
  signal]

• 指定した pidfile のプロセスを殺す




                                              9/27
pidfileofproc
• pidfileofproc {program}

• {program} に該当するプロセスID を一つだ
  け表示する
• 内部で __pids_var_run 使ってる



                            10/27
pidofproc
• pidofproc [-p pidfile] {program}

• {program} が起動してれば 0
• Pidfileofproc と名前似てるけど全然違う




                                     11/27
status
• status [-p pidfile] {program}

• 起動スクリプトの status そのもの

• httpd (pid 12345) is running…



                                  12/27
echo_success
           echo_failure
            echo_passed
           echo_warning

• OK / FAILED / PASSED/ WARNING と表示
• あらかじめ定義されたカラーシーケンス
  が使われる


                              13-16/27
残り半分
頑張れ、俺
update_boot_stage
• /usr/bin/rhgb-client (あれば)を呼び出し
  てる




                             17/27
success
             failure
             passed
             warning

• OK / FAILED / PASSED/ WARNING と表示
• $BOOTUP と $LSBによって、 echo_xxx を
  呼び出すかしないか制御


                            18-21/27
action
•   よくわかんない。
•   たぶん、グラフィックモード起動時用
•   /etc/rhgb/temp/rhgb-console 弄ったり
•   /usr/bin/rhgb-client 呼んだり




                                  22/27
strstr
• strstr $1 $2

• $1 に $2 が含まれていれば 0
• そうでなければ 1

• C言語の strstr と同じ

                          23/27
confirm
•   (Y)es/(N)o/(C)ontinue? [Y]
•   Y -> 0
•   N -> 1
•   C-> 2




                                 24/27
get_numeric_dev

• get_numeric_dev [decimal|hex] device

• device の リソース番号を
  “メジャー番号:マイナー番号”
  で表示



                                         25/27
resolve_dm_name
• dmraid 呼び出してごにょごにょしてる。
• Software RAID 関連?
• よくわからず




                       26/27
is_ignored_file
• is_ignored_file file

• file が無視すべきファイルなら 0 そうでな
  ければ 1
• 無視対象 : *~ | *.bak | *.orig | *.rpmnew |
  *.rpmorig | *.rpmsave


                                   27/27
おしまい


ありがとうございました




          正直しんどかった…

Functions