在 OpenSUSE&SUSE 上让一个脚本开机自启

一、 SUSE 和 OpenSUSE 开机自启的注意事项:
(一) 常用的 Linux 开机自启方案:对于 Linux 系统启动时自动运行的命令或程序,在 rh-based linux 系统,一般常见是放在 /etc/rc.d/rc.local 中。但 SuSE Linux 没有这个文件,另外也不推荐使用者这样管理启动服务。推荐使用正规的方式来管理服务启动方式。
(二) 服务器开机自启的环境选择:在 SuSE 系统里,要开机自启的,可以放在 /etc/init.d/boot.local 中,但这要看实际情况。因为 SuSE 的 /etc/init.d/boot.local 文件是由 /etc/init.d/boot 这个 script 所启动的,而且是最后 boot script 工作完成要准备进入 runlevel 环境执行各项 rc script 时所执行。而 rc 的 /etc/rc.d/rc.local 档案是 runlevel 环境执行各项 rc script 是最后一个阶段执行的,所以层面不一样。如果你要运行的程序适合于 runlevel 这项服务之前就执行的话,在 SuSE linux 中可以放在 boot.local 文件里。但如果你的服务需要是在进入 runlevel 后才执行的话,SuSE 下正规做法应该是自己写一个 rc script 放到 /etc/init.d/ 目录下,然后使用 chkconfig or inssev 程序来管理配置能够于某个 runlevel 环境开机时是否要启用关闭该服务项目。该 rc script 写法可以自己参考一下 /etc/init.d/ 里面现成的 script 档案,应该很容易就写一个自己的版本
(三)如果 SUSE 或 OpenSUSE 最小化安装及以 server 形式安装的话 /etc/init.d/ 下面是没有文件的需要找其他方法解决

二、 SUSE 和 OpenSUSE 所独有的开机自启档案,以及其对应的开机启动环境
关于开机启动脚本配置文件 SUSE 与 OpenSUSE 和其它 Linux 设置不一样,其列表如下:
(一) 在 /etc/init.d 目录下
1. boot.local –> 这个开机启动档案会在 rc5.d 前就有动作
2. halt.local –> 这个关机启动档案会在最后有动作
3. before.local –> 这个档案比较用不到所以不需多做解释
4. after.local –> 这个档案会在 rc5.d 之后有动作 , 就是最重要的开机启动档 , 没有的话 新建一个
注意:上面第三和第四个档案预设是不存在的。所以,如果需要使用第三或第四个档案时,可以自己建立, 就像写个 shell 一样很简单
例:
# vi /etc/init.d/after.local

(二) 在 /etc/rc.d 目录下
1. boot.local
这个是系统启动完所有的 boot.services 之后执行的脚本。
详见文件注释:
# /etc/rc.d/boot.local
# Here you should add things, that should happen directly after booting
# before we're going to the first run level.

2. before.local 和 after.local
这个是由 /etc/init.d/rc 里面来控制的,发生在切换运行级别之前和之后。
举例:如果你想进入系统最后执行的一个变量和参数。应该写入文件after.local

三、SUSE 和 OpenSUSE 开机自启脚本的案例
(一)创建要开机自启的脚本
# vim /etc/init.d/start.sh
#!/bin/bash
sudo systemctl restart #第一个要开机自启的服务#
#sleep 30 #如果需要的花可以在中间设置时间间隔
sudo systemctl restart #第二个要开机自启的服务#

(二)给要开机自启的脚本执行权限
# chmod a+x /etc/init.d/start.sh

(三)将要开机自启的脚本添加软链接放在对应的 runlevel
# ln -s /etc/init.d/start.sh /etc/init.d/rc3.d/
# ln -s /etc/init.d/start.sh /etc/init.d/rc5.d/

(四)设置开机自启脚本的服务运行级别
# chkconfig --add start.sh

(五)查看开机自启脚本的服务运行级别
# chkconfig --list