文章目录
- Linux中Systemd的Unit文件
- Systemd 所支持的12种 Unit 文件类型
- Unit 文件位置优先级
- 相关工具对比
- systemctl和systemd
- sysctl配置内核参数
Linux中Systemd的Unit文件
参考:Linux中Systemd的Unit文件详细介绍
Unit 文件统一了过去各种不同的系统资源配置格式,例如服务的启/停、定时任务、设备自动挂载、网络配置、设备配置、虚拟内存配置等。而 Systemd 通过不同的通过文件的后缀名来区分这些配置文件
一般会分为3部分:[Unit]、[Service]和[Install]。[Service]是.service
所特有的, [Unit]和[Install] 段是所有 Unit 文件通用的。
[Install]
中的配置需要通过 systemctl enable
命令来激活,通过 systemctl disable
命令来禁用。另外这部分配置的目标模块通常是特定启动级别的 .target 文件,用来使得服务在系统启动时自动运行。
Systemd 所支持的12种 Unit 文件类型
Unit 文件类型 | 说明 |
---|---|
.automount | 用于控制自动挂载文件系统。自动挂载即当某一目录被访问时系统自动挂载该目录,这类 unit 取代了传统 Linux 系统的 autofs 相应功能 |
.device | 对应 /dev 目录下设备,主要用于定义设备之间的依赖关系 |
.mount | 定义系统结构层次中的一个挂载点,可以替代过去的 /etc/fstab 配置文件 |
.path | 用于监控指定目录变化,并触发其他 unit 运行 |
.scope | 这类 unit 文件不是用户创建的,而是 Systemd 运行时自己产生的,描述一些系统服务的分组信息 |
.service | 封装守护进程的启动、停止、重启和重载操作,是最常见的一种 unit 类型 |
.slice | 用于描述 cgroup 的一些信息,极少使用到,一般用户就忽略它吧 |
.snapshot | 这种 unit 其实是 systemctl snapshot 命令创建的一个描述 Systemd unit 运行状态的快照 |
.socket | 监控系统或互联网中的 socket 消息,用于实现基于网络数据自动触发服务启动 |
.swap | 定义一个用于做虚拟内存的交换分区 |
.target | 用于对 unit 进行逻辑分组,引导其他 unit 的执行。它替代了 SysV 中运行级别的作用,并提供更灵活的基于特定设备事件的启动方式。例如 multi-user.target 相当于过去的运行级别5,而 bluetooth.target 在有蓝牙设备接入时就会被触发 |
.timer | 封装由system的里面由时间触发的动作, 替代了 crontab 的功能 |
Unit 文件位置优先级
- Unit 文件按照 Systemd 约定,应该被放置在指定的3个系统目录之一,如下表,优先级递减。
- 若有同名的文件,仅执行优先级高的路径下的配置文件
路径 | 说明 |
---|---|
/etc/systemd/system | 系统或用户提供的配置文件 |
/run/systemd/system | 软件运行时生成的配置文件 |
/usr/lib/systemd/system | 系统或第三方软件安装时添加的配置文件 |
相关工具对比
systemctl和systemd
-
systemctl 是一个新的系统服务管理工具,它是 systemd 系统和服务管理器的一部分。 用于控制和管理systemd系统和服务。它可以启动、停止、重启和管理系统服务。使用systemctl命令,可以查看和管理当前运行的所有系统服务的状态、日志和依赖关系等信息
-
systemd 是一个用于 Linux启动进程的系统和服务管理器。
sysctl配置内核参数
sysctl是一个内核参数调整工具,用于查看和修改内核参数。
用法举例:
- 使用sysctl net.ipv4.tcp_fin_timeout=30命令可以将TCP连接的超时时间设置为30秒。
- -w 用此选项来改变一个sysctl设置。例:sysctl -w net.ipv4.ip_forward=1
- -p 载入sysctl配置文件,如-p后未指定路径,则载入 /etc/sysctl.conf 例: sysctl -p /etc/sysctl.conf