起動スクリプトの作成 /etc/rc.d/init.d/

bash、面白いよ、bash。

bashを全然使いこなせないので、ちょっと頑張ってもろもろ勉強せなあかんですなと思ったので、まずはいつも手作業で行っていた作業を自動化していくことにした。

ウチのサーバちゃんでは、sambaでファイルサーバも使っているのだが、バックアップもかねて、外部HDDをUSBでつないで、それをsamba内で管理しているディレクトリにマウントして使っている。 このマウント作業を手作業で行っていたため、マシンをリブートした時に、また再度手作業で行わなくてはいけない。毎回これはめんどくさいので、いい加減自動化しようと思ったのがことの経緯であるわけです。

外部HDDはwindowsでも使えるようにNTFSでフォーマットしてあるため、下記のコマンドでいつもマウントしている

host# mount.ntfs-3g /dev/sdb1 /home/hiroki/samba/mnt/

このコマンドをサーバが立ち上がった時に自動でブートするようにする。

/etc/rc.d/init.d/ ディレクトリにbashでスクリプトを組む。 startとstopで起動、終了を制御するため、start関数とstop関数を用意する。

host# vi /etc/rc.d/init.d/mnt_music

スクリプトの中身

#!/bin/bash

# chkconfig: 2345 97 97
# description: mnt_music

start(){
    if mount.ntfs-3g /dev/sdb1 /home/hiroki/samba/mnt/; then
        echo "mount success!!"
    fi
}
stop(){
    if umount /home/hiroki/samba/mnt/; then
        echo "umount success!!"
    fi
}

case "$1" in
    start)
        start;;
    stop)
        stop;;
esac

3行目の “# chkconfig” は、chkconfigに登録できるようにする記述である。 数値部分は、「ランレベル」「起動プライオリティ」「終了プライオリティ」の順である。

スクリプトを実行する。

host# /etc/rc.d/init.d/mnt_music start
umount success!!

ランレベル3に、シンボリックリンクを登録する。

host# ln -s /etc/rc.d/init.d/mnt_music /etc/rc3.d/S97mnt_music

chkconfigに “mnt_music” を登録し、起動時のブートを有効にする。

host# chkconfig --add mnt_music
host# chkconfig mnt_music on

これで、毎回手作業でコマンドを実行することなく、自動でHDDをマウントすることができるようになった。