E. 服务管理
E. 服务管理
更新日期:2020-07-24
1. 概要
跟服务有关的内容比较多,在这里我主要关注如下两个话题:
- 列举当前系统中的服务
- 如何注册一个服务
服务主要由systemd系列命令来控制,而systemd负责的东西非常多。还有些诸如挂载点、sockets、设备、交换分区、文件路径、计时器之类的单元。这里我们只关注使用systemd管理服务。
2. 列举服务
首先是systemctl status命令,它将以树形图的方式列出服务的结构图信息。
执行示例:

然后还可以使用systemctl命令来用列表的形式列出所有运行中的服务的详细信息。
执行示例:

3. 注册一个服务
由systemd管理的服务都以文件的形式保存在固定的位置。使用如下的命令可以打印出所有这些位置。
1 | |
通常我们只需要关心其结果中的两个位置:
1 2 | |
我们可以仿照这些目录下的文件来编写我们自己的文件。
3.1 编写service文件
服务都以.service扩展名的形式保存在文件中。我们自己的服务文件通常保存在上面提到的/etc/systemd/system这个位置。
文件的写法以Tomcat服务为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
其中大部分项目看名字就知道意思。下面说明一些其中几个不太容易理解的项目。
After
等待指定的单元运行后再启动。只是单纯的指定Requires=或者Wants=会使两个单元并行启动。
Type=oneshot 或者 PIDFile=/path/*.pid 或者 RemainAfterExit=yes
这三个项目通常会组合起来使用。Oneshot表示这个服务的启动进程启动一次后就退出。RemainAfterExit设为yes则使systemd在服务进程退出后仍然认为服务处于运行状态。指定PIDFile可以使systemd能够跟踪服务的主进程,因为这个只启动一次的进程又创建了子进程作为服务的主进程。
除了oneshot种类的服务,还有很多其他种类的服务,我们可以按需选择。
1 2 3 4 5 6 | |
3.2 设置服务为开机启动
以上面创建的tomcat服务为例,使用如下命令即可:
1 | |
4. 删除服务
停止服务并删除对应的service文件即可。