Linux開機(jī)之后會(huì)執(zhí)行/etc/rc.local文件中的腳本。
所以我們可以直接在/etc/rc.local中添加啟動(dòng)腳本
/etc/init.d/rc.local的內(nèi)容
#! /bin/sh
### BEGIN INIT INFO
# Provides: rc.local
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start() {
if [ -x /etc/rc.local ]; then
[ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local)"
/etc/rc.local
ES=$?
[ "$VERBOSE" != no ] && log_end_msg $ES
return $ES
fi
}
case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
從注釋可以看出該腳本運(yùn)行在2 3 4 5的啟動(dòng)級(jí)別遭商,只能處理start的參數(shù)白群,然后執(zhí)行start债沮,如果有/etc/rc.local文件的話則執(zhí)行/etc/rc.local康愤。如果要把開機(jī)啟動(dòng)的程序放/etc/init.d/rc.local文件里,記住千萬別一股腦寫文件最后面就行了码泛,因?yàn)樵赾ase語句塊里腳本就會(huì)退出烹笔。
/etc/rc.local內(nèi)容
#!/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
這個(gè)腳本里面基本沒有內(nèi)容裳扯,就是寫個(gè)模板讓你放開機(jī)自啟動(dòng)程序的。把你的程序?qū)懺趀xit 0行的前面就行了谤职。
所以要添加開機(jī)啟動(dòng)項(xiàng)饰豺,只需在/etc/rc.local文件中添加就行了。
啟動(dòng)級(jí)別:
0 關(guān)機(jī)
1 單用戶
2-5 多用戶圖形界面
6 重啟
對(duì)應(yīng)每個(gè)啟動(dòng)級(jí)別允蜈,/etc/目錄下都對(duì)應(yīng)一個(gè)像/etc/rc5.d/這樣的目錄冤吨,下面是一些腳本,這些腳本基本都是對(duì)應(yīng)/etc/init.d/目錄下的軟鏈接饶套,命名里面的數(shù)字代表優(yōu)先級(jí)漩蟆,啟動(dòng)時(shí)這些腳本都會(huì)執(zhí)行一遍。
可以看到“/etc/rc.d/init.d”下有很多的文件凤跑,每個(gè)文件都是可以看到內(nèi)容的爆安,其實(shí)都是一些shell腳本叛复。
系統(tǒng)服務(wù)的啟動(dòng)就是通過“/etc/rc.d/init.d”中的腳本文件實(shí)現(xiàn)的仔引。我們也可以寫一個(gè)自己的腳本放在這里。
腳本文件的內(nèi)容也很簡(jiǎn)單褐奥,類似于這個(gè)樣子(例如起個(gè)名字叫做“hahad”):
. /etc/init.d/functions
start() {
echo "Starting my process "
cd /opt
./haha.sh
}
stop() {
killall haha.sh
echo "Stopped"
}
寫了腳本文件之后事情還沒有完咖耘,繼續(xù)完成以下幾個(gè)步驟:
chmod +x hahad #增加執(zhí)行權(quán)限
chkconfig --add hahad #把hahad添加到系統(tǒng)服務(wù)列表
chkconfig hahad on #設(shè)定hahad的開關(guān)(on/off)
chkconfig --list hahad #就可以看到已經(jīng)注冊(cè)了hahad的服務(wù)