Linux 脚本开机启动
Ubuntu:
如果要添加为开机启动执行的脚本文件,可先将脚本复制或者软连接到/etc/init.d/
目录下,然后用:
update-rc.d xxx defaults number
命令(number为启动顺序), 将脚本添加到初始化执行的队列中去。
注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如99,以防网络服务还没有启动。
- 将你的启动脚本复制到
/etc/init.d
目录下,以下假设你的脚本文件名为 test。
$ ln -s /root/start.sh /etc/init.d/my_test_script # 建立软连接
- 设置脚本文件的执行权限
$ sudo chmod 777 /etc/init.d/my_test_script
-
执行如下命令将脚本放到启动脚本中去:
设置启动和关闭顺序为90,级别默认
$ cd /etc/init.d
$ sudo update-rc.d my_test_script defaults 90
centOS
- 编写要开机启动的脚本:
auto_start.sh
#!/bin/sh
#chkconfig: 12345 80 90
#description:auto
echo "Started..." > start.log
注意:第2,3行代码是必须的。否则可能报错
第二行:12345 代表针对开机等级1/2/3/4/5;80 代表启动此服务的级别;90 代表关闭此服务的级别(数字越小,优先级越高)
第三行:描述而已
所以意思就是:针对启动等级12345,使用80优先级开启此脚本。针对等级06,使用90优先级关闭此脚本
- 复制到
/etc/rc.d/init.d/
或/etc/init.d/
下,或创建软连接到目录下
$ ln -s /root/auto_start.sh /etc/rc.d/init.d/auto_start.sh
- 赋予执行权限,并添加服务
$ cd /etc/rc.d/init.d
$ chmod 777 auto_start.sh
$ chkconfig --add auto_start.sh
$ chkconfig auto_start.sh on
原理:实质上就是在 rc0.d - rc6.d 目录下,分别创建了软连接
将脚本复制到 /etc/init.d/
,手动执行下面这些命令,并赋予权限,和上面步骤是一样的。第一行的 K90auto_start.sh
,注意K
代表关闭,S
代表开启。
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc0.d/K90auto_start.sh
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc1.d/S80auto_start.sh
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc2.d/S80auto_start.sh
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc3.d/S80auto_start.sh
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc4.d/S80auto_start.sh
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc5.d/S80auto_start.sh
ln -s /etc/init.d/auto_start.sh /etc/rc.d/rc6.d/K90auto_start.sh
注:开机等级数字:
- 等级0表示:表示关机
- 等级1表示:单用户模式
- 等级2表示:无网络连接的多用户命令行模式
- 等级3表示:有网络连接的多用户命令行模式
- 等级4表示:不可用
- 等级5表示:带图形界面的多用户模式
- 等级6表示:重新启动