Linux中的Service文件

1 篇文章 0 订阅
1 篇文章 0 订阅

Systemd是什么

Systemd 是 Linux 系统工具,用来启动守护进程,它的设计目的是:为系统的启动和管理提供一套完整的解决方案。

Unit

Systemd 可以管理所有的系统资源,不同的资源统称为 Unit(单位),一共分为12种。
包含:

  • Service Unit 系统服务
  • Target Unit 多个 unit 构成的一个组
  • Socket Unit 进程间通信的 socket

service文件是什么

每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit。
Systemd 默认从目录/etc/systemd/system/读取配置文件。但是里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。

配置文件的后缀名,就是该Unit的种类,.service即系统服务的配置文件。如果省略,Systemd 默认后缀名为.service

配置文件格式

Unit

通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。
主要字段:

  • Description:简短描述
  • Documentation:文档地址
  • Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败(强依赖)
  • Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败(弱依赖)
  • Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
  • After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动
Install

通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。
主要字段:

  • WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中
  • RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
Service

用来设置 Service 的配置,只有 Service 类型的 Unit 才有这个区块。
主要字段:

  • Type:定义启动时的进程行为
  • ExecStart:启动当前服务的命令
  • ExecStartPre:启动当前服务之前执行的命令
  • ExecStartPost:启动当前服务之后执行的命令
  • ExecReload:重启当前服务时执行的命令
  • ExecStop:停止当前服务时执行的命令
  • ExecStopPost:停止当其服务之后执行的命令
  • RestartSec:自动重启当前服务间隔的秒数
  • Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
    完整字段清单可以参考官方文档

服务管理指令

列举一些服务管理的常用指令:

  1. Unit状态
# 显示系统状态
$ systemctl status

# 显示单个 Unit 的状态
$ sysystemctl status apache.service

  1. Unit管理
# 立即启动一个服务
$ sudo systemctl start apache.service

# 立即停止一个服务
$ sudo systemctl stop apache.service

# 重启一个服务
$ sudo systemctl restart apache.service

# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service

# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service

# 修改配置文件后重新加载,重新启动
$ sudo systemctl daemon-reload
$ sudo systemctl restart httpd.service
  1. 日志管理
# 实时滚动显示最新日志
$ sudo journalctl -f

# 实时滚动显示某个 Unit 的最新日志
$ sudo journalctl -u nginx.service -f

# 显示尾部的最新10行日志
$ sudo journalctl -n
......
参考:

Systemd 入门教程:命令篇
Systemd 入门教程:实战篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值