银河麒麟桌面系统启用 rc.local 设置开机启动方法

银河麒麟系统不再使用initd管理系统,改用systemd。
然而systemd很难用,改变太大,跟之前的完全不同。
使用systemd设置开机启动,为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步:

一、实现原理

systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc-local.service文件,即我们需要的配置文件。
在这里插入图片描述
/lib/systemd/system/:
在这里插入图片描述
可以看到 target 的定义:
在这里插入图片描述
查看

target:ll | grep target

target 用于指定什么时候启动我们自己自定的软件。

二、操作方法

1.将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来:

ln -fs /lib/systemd/system/rc-local.service /etc
/systemd/system/rc-local.service

查看文件内容:

cd /etc/systemd/system/
cat rc-local.service

在这里插入图片描述
说明:

[Unit] 区块:启动顺序与依赖关系。
ConditionFileIsExecutable :指定了执行的文件,
After :表示在 network.target 这个target后面进行执行。也就是网络启动完成之后,执行 /etc/rc.local 文件。

[Service] 区块:启动行为,如何启动,启动类型。
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install] 区块:定义如何安装这个配置文件,即怎样做到开机启动。也是我们自己编辑新增的。

2.创建/etc/rc.local文件

touch /etc/rc.local

3.赋可执行权限

chmod 755 /etc/rc.local

4.编辑rc.local,添加需要开机启动的任务

#!/bin/bash
echo "test rc "> /var/test.log
# startup redis-server:
/usr/local/bin/redis-server /usr/redis/redis.conf
# startup mysqld
/usr/local/mysql/bin/mysqld_safe --user=mysql &
# startup tomcat
/usr/tomcat/apache-tomcat-7.0.90/bin/startup.sh
/usr/tomcat/apache-tomcat-7.0.90-02/bin/startup.sh

这里是设置的 redis 、 mysqld、tomcat等开机自动启动。

5.执行reboot重启系统,然后查看test.log

注:其实就是利用 systemd 的启动原理, 通过/etc/systemd/system/rc-local.service 文件来达到启动时执行 /etc/rc.local 文件的目的。