Linux下(以RedHat為范本)添加開機自啟動腳本有兩種方法,先來簡單的;
一、在/etc/rc.local中添加
如果不想將腳本粘來粘去,或創建鏈接什么的,
則:
step1. 先修改好腳本,使其所有模塊都能在任意目錄啟動時正常執行;
step2. 再在/etc/rc.local的末尾添加一行以絕對路徑啟動腳本的行;
如:
$ vim /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
. /etc/rc.d/rc.tune
/opt/pjt_test/test.pl
保存並退出;
再重啟動測試下,則在其它的程序都啟動完成后,將啟動腳本;
二、init.d目錄下都為可執行程序,他們其實是服務腳本,按照一定格式編寫,Linux 在啟動時會自動執行,類似Windows下的服務
用root帳號登錄,vi /etc/rc.d/init.d/mystart,追加如下內容:
#!/bin/bash
#chkconfig:2345 80 05 --指定在哪幾個級別執行,0一般指關機,
6指的是重啟,其他為正常啟動。80為啟動的優先級,05為關閉的優先機
#description:mystart service
RETVAL=0
start(){ --啟動服務的入口函數
echo -n "mystart serive ..."
cd /home/test1
su test1 -c "python /home/test1/test.py"
}
stop(){ --關閉服務的入口函數
echo "mystart service is stoped..."
}
case $1 in --使用case,可以進行交互式操作
start)
start
;;
stop)
stop
;;
esac
exit $RETVAL
|
3、運行chmod +r /etc/rc.d/init.d/mystart,使之可直接執行
4、運行chkconfig --add mystart,把該服務添加到配置當中
5、運行chkconfig --list mystart,可以查看該服務進程的狀態
例子:
#!/bin/bash
#chkconfig:2345 80 05 --指定在哪幾個級別執行,0一般指關機,6指的是重啟,其他為正常啟動。80為啟動的優先級,05為關閉的優先機
#description:mqtt service
RETVAL=0
start(){
echo -n "mqtt serive ..."
cd /home/dpf
su dpf -c "./hwjc_udp_receive &"
}
stop(){
echo "mqtt service is stoped..."
}
case $1 in
start)
start
;;
stop)
stop
;;
esac
exit $RETVAL
3、運行chmod +r /etc/rc.d/init.d/mqtt,使之可直接執行
4、運行chkconfig --add mqtt,把該服務添加到配置當中
5、運行chkconfig --list mqtt,可以查看該服務進程的狀態
即可重啟系統,
查看C程序是否自動啟動