盒子添加自启服务
1.Init方式启动的盒子(2040)
2040盒子启动是init方式:
(1) 在/etc/init.d/目录下创建文件webserver,启动服务器文件server.js。webserver内容如下:
(2) 为webserver添加执行权限后,设置开机自启,输入命令update-rc.d webserver defaults
(3) 取消自启命令为update-rc.d -f webserver remove
2.systemd方式启动的盒子(2050)
2050盒子启动自启是systemd方式:
(1) 在/etc/systemd/system目录下创建文件webserver.service ,启动服务器文件server.js.。webserver.service内容如下.:
(2) 为webserver.service添加执行权限后,设置开机自启,输入命令systemctl enable webserver.service
(3) 取消自启命令为systemctl disable webserver.service
(4) 可以通过命令systemctl is-enabled webserver.service查看服务设置的状态,通过命令systemctl status webserver.service查看服务当前的启动状态
3.两种启动方式的区别
init:
- 启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程
- 是启动脚本复杂,Init进程只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长
- 由Linux内核加载运行,位于 /sbin/init ,是系统中第一个进程,PID永远为1
systemd
- 按需启动服务,减少系统资源消耗。
- 尽可能并行启动进程,减少系统启动等待时间
- 由Linux内核加载运行,位于/usr/lib/systemd/systemd,是系统中第一个进程,PID永远为1
4.systemd兼容init的实现
systemd兼容之前的init启动实现方式:
systemd-sysv-generator(/usr/lib/systemd/system-generators/systemd-sysv-generator)脚本单元生成器,用于在系统启动过程中以及在 systemd 重新加载其配置时,将 /etc/init.d/* 目录中的 SysV init 脚本 打包为.service文件,系统启动后可在/run/systemd/generator.late下看到新生成的.service文件。这样就可以让 systemd兼容传统的 SysV init 脚本。
RunLevel的对应关系如下:
而target的主要作用是对服务进行分组、归类。所以,只需要定义几个代表不同运行级别的target,并在不同的target中放入不同的服务程序即可(除了服务程序还可以包含其它的Unit)。上面新生成的.servise文件会根据SysV 运行级在对应的 .target 单元(runlevelX.target)的wangs后缀目录中生成对应链接。systemd在处理到对应target时会寻找对应的wants后缀的目录,并加载启动该目录下的所有Unit。