引言:在linux的使用过程中,我们经常会碰到需要将某个自定义的应用程序设置为开机自启动、批量管理、出错重启等,今天我们就Ubuntu下软件的自启动相关只是做一个汇总。
首先,Ubuntu下开机自启动管理方法有多种,比如基于 1) init 、2) supervisor、 3) systemd
| init | supervisor | systemd | |
|---|---|---|---|
| 性质 | 系统层面 | Python 编写的应用程序 | 系统管理 |
| 易用性 | ★☆☆☆☆ | ★★★★★ | ★★★☆☆ |
| 稳定性 | - | - | - |
| 依赖 | - | 有 | 无 |
init
在centos5、centos6中,linux的启动一直采用init进程来进行管理。从centos7开始,放弃了采用init进程,从而使用systemd来代替init进程。
对于init进程来说有两个缺点:
- 启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
- 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
supervisor
优点
- 任何用户都可以管理进程,不需要成为超级用户;
- 具有良好的web界面来管理流程;
- 适用于任何系统发行版,无论老版本还是新版本;
- 更灵活的管理过程(例如:组,顺序优先级);
systemd
优点
- 如今的发行版本都在系统中内置了 systemd,不需要额外的安装依赖。
- 易于使用,没有学习曲线,可以像系统服务一样进行管理。
使用
unit
systemd管理着许多的资源,可以认为每一个资源就是unit(单元)unit由其相关的配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其他与init相关的信息。这些配置文件主要保存在
/etc/systemd/system # 存放系统启动的默认级别及启动的unit的软连接,优先级最高。
/run/systemd/system,# 系统执行过程中产生的服务脚本,优先级次之。
/usr/lib/systemd/system # 存放系统上所有的启动文件。优先级最低
Systemd 默认从目录 /etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录 /usr/lib/systemd/system/,真正的配置文件存放在这个个目录。
unit常见类型
| 类型 | 解释 |
|---|---|
| service unit | 文件扩展名为.service ,用于定义系统服务 |
| target unit | 文件扩展名为.target ,用于模拟实现"运行级别" |
| device unit | 文件扩展名为.device ,用于定义内核识别的设备 |
| mount unit | 文件扩展名为.mount ,定义文件系统挂载点 |
| sokect unit | 文件扩展名为.socket ,用于标识进程间通信用到的socket文件 |
| snapshot unit | 文件扩展名为.snapshot ,用于实现管理系统快照 |
| swap unit | 文件扩展名为.swap ,用于标识swap设备 |
| automount unit | 文件扩展名为.automount ,文件系统自动挂载点设备 |
| path unit | 文件扩展名为.path ,用于定义文件系统中的文件和目录 |
管控unit单元
启动、停止、重启等服务(service类型)
#启动httpd服务
[root@bogon ~]# systemctl start httpd.service
#停止httpd服务
[root@bogon ~]# systemctl stop httpd.service
#重启httpd服务
[root@bogon ~]# systemctl restart httpd.service
#条件式重启httpd服务(只会在服务运行的时候才会重启服务)
[root@bogon ~]# systemctl try-restart httpd.service
#重新加载httpd服务的配置文件
[root@bogon ~]# systemctl reload httpd.service
查看 Unit 的状态
[root@bogon ~

本文详细介绍在Ubuntu系统下,使用systemd进行应用程序自启动管理的方法。包括开机自启动、批量管理和出错重启等功能,对比init和supervisor的不同,深入解析systemd的配置与使用。

630

被折叠的 条评论
为什么被折叠?



