内核 -> /etc/init/rc-sysint.conf -> /etc/inittab -> etc/init.d/rc -> /etc/rc[0~6].d -> /etc/init.d/rc.local ->/etc/rc.local
虽然在ubuntu后来的版本中默认已经没有了inittab文件,但我可以自行添加。
以上的启动过程,并不是代表所有,以Redhat系列的CentOS5为例:
内核 -> /etc/inittab -> /etc/ rc.sysinit (/etc/rc.d/rc.sysinit) -> /etc/rc[?].d (/etc/rc.d/rc[?].d) -> /etc/rc.local(/etc/rc.d/rc.local)
测试环境debian 10
测试需要安装服务:
apt-get install lightdm //安装后检查lightdm(登录控制程序)状态
apt-get install x11vnc //安装x11vnc
手动拉起脚本:root@debian10:~# cat /etc/init.d/startvnc.sh
#!/bin/sh
sleep 5 //如果脚本依赖其他服务,降低依赖无法解决则设置休眠时间,规避异常。
x11vnc -display :0 -auth /var/run/lightdm/root/:0 -forever -bg -o /var/log/x11vnc.log -rfbauth /etc/x11vnc.pass -shared -noxdamage -xrandr "resize" -rfbport 5900
由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 10 默认不带 /etc/rc.local 文件,而 rc.local 服务却还是自带的
root@debian9 ~ # cat /lib/systemd/system/rc.local.service
并且默认情况下这个服务还是关闭的状态
root@debian9 ~ # systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: inactive (dead)
为了解决这个问题,我们需要手工添加一个 /etc/rc.local 文件
cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.
/etc/init.d/startvnc.sh
exit 0
然后赋予权限
chmod +x /etc/rc.local
接着启动 rc-local 服务
systemctl start rc-local
再次查看状态
root@debian9 ~ # systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (exited) since Thu 2017-08-03 09:41:18 UTC; 14s ago
Process: 20901 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
Aug 03 09:41:18 xtom-proxy systemd[1]: Starting /etc/rc.local Compatibility...
Aug 03 09:41:18 xtom-proxy systemd[1]: Started /etc/rc.local Compatibility.
然后你就可以把需要开机启动的命令添加到 /etc/rc.local 文件,丢在 exit 0 前面即可,并尝试重启以后试试是否生效了
root@debian10:/etc/init.d# ln -s /etc/init.d/startvnc.sh /etc/rc5.d/S99startvnc
//在图形化界面init 5处设置脚本链接。
root@debian10:/etc/init.d# update-rc.d startvnc.sh start 99 5
//图形化界面(init 5)才能vnc 。
root@debian10:/etc/init.d# update-rc.d startvnc.sh defaults 99