下(以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 serviceRETVAL=0start(){ --启动服务的入口函数echo -n "mystart serive ..."cd /home/test1su test1 -c "python /home/test1/test.py"}stop(){ --关闭服务的入口函数echo "mystart service is stoped..."}case $1 in --使用case,可以进行交互式操作start)start;;stop)stop;;esacexit $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 serviceRETVAL=0start(){ echo -n "mqtt serive ..."cd /home/dpfsu dpf -c "./hwjc_udp_receive &"}stop(){ echo "mqtt service is stoped..."}case $1 instart)start;;stop)stop;;esacexit $RETVAL
3、运行chmod +r /etc/rc.d/init.d/mqtt,使之可直接执行
4、运行chkconfig --add mqtt,把该服务添加到配置当中
5、运行chkconfig --list mqtt,可以查看该服务进程的状态
即可重启系统,
查看C程序是否自动启动