一.、在/etc/rc.local文件中添加自启动命令
执行命令: 编辑"/etc/rc.local",添加你想开机运行的命令html
运行程序脚本:而后在文件最后一行添加要执行程序的全路径。mysql
例如,每次开机时要执行一个hello.sh,这个脚本放在/usr下面,那就能够在"/etc/rc.local"中加一行"/usr/./hello.sh",或者" cd /opt && ./hello.sh "linux
注意,你的命令应该添加在:exit 0 以前sql
2、在/etc/init.d目录下添加自启动脚本
linux在“/etc/rc.d/init.d”下有不少的文件,每一个文件都是能够看到内容的,其实都是一些shell脚本或者可执行二进制文件
Linux开机的时候,会加载运行/etc/init.d目录下的程序,所以咱们能够把想要自动运行的脚本放到这个目录下便可。系统服务的启动就是经过这种方式实现的。shell
3、运行级别设置
简单的说,运行级就是操做系统当前正在运行的功能级别。apache
不一样的运行级定义以下: # 0 - 停机(千万不能把initdefault 设置为0 ) # 1 - 单用户模式 进入方法#init s = init 1 # 2 - 多用户,没有 NFS # 3 - 彻底多用户模式(标准的运行级) # 4 - 没有用到 # 5 - X11 多用户图形模式(xwindow) # 6 - 从新启动 (千万不要把initdefault 设置为6 )
例:在Ubuntu/debain里,可使用update-rc.d命令来把示例脚本:/etc/init.d/proxy安装到各个runlevel中。ide
update-rc.d proxy defaults 99
update-rc.d后面有三个参数,分别是/etc/init.d下的脚本名字,默认安装方式,运行的优先级。优先级的数字越大,表示越迟运行,这里咱们把本身写的服务放在最后运行。post
若是要卸载随机启动的服务,执行ui
update-rc.d -f proxy remove
在update-rc.d安装的时候提示了警告信息,是由于咱们写的/etc/init.d/proxy太简陋了,只包含了咱们想要的命令,连LSB的信息也没有提供。spa
update-rc.d: warning: /etc/init.d/proxy missing LSB information update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
只须要对自启动脚本作一些小改动,就能够避免那个警告了。以下:
#!/bin/sh ### BEGIN INIT INFO # Provides: proxy # Required-Start: $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start or stop the HTTP Proxy. ### END INIT INFO case "$1" in start) start-stop-daemon --start --background --exec /root/proxy.py ;; stop) start-stop-daemon --stop --name proxy.py esac
到此,一个最简单的随机启动服务写好了,看起来文章挺长的,但其实也就几个命令而已。
在下次开机启动的时候,proxy.py就会以root用户身份被自动运行。
4、把脚本注册为系统服务
在/etc/init.d下新建示例脚本文件(startTest.sh),该脚本会启动/opt/test.sh。内容以下:
. /etc/init.d/functions start() { echo "Starting my process " cd /opt ./test.sh } stop() { killall test.sh echo "Stoped" }
写了脚本文件以后事情尚未完,继续完成如下几个步骤:
chmod +x startTest #增长执行权限 chkconfig --add startTest #把startTest添加到系统服务列表 chkconfig startTest on #设定startTest的开关(on/off) chkconfig --list startTest.sh #就能够看到已经注册了startTest的服务