Systemd 使用教程(三):配置文件与如何自定义服务

本教程将由浅入深的介绍 linux 中 Systemd 的知识和相关使用(同时也方便自己后续查阅)

【三】如何自定义 Systemd 服务

2.1 Systemd 是如何定义和管理服务的

Systemd 是通过配置文件来定义服务的,Systemd 会按照如下的目录顺序查找服务配置

  • /etc/systemd/system/:自定义或修改后的服务文件
  • /run/systemd/system/:运行时服务文件
  • /usr/lib/systemd/system/:软件包提供的服务文件

(这也意味着,假设系统中原先定义了一个服务,可以通过在 /etc/systemd/system/ 重写该服务的定义,覆盖原服务)

命令 systemctl daemon-reload

当修改了 Systemd 的配置文件后,需要执行 systemctl daemon-reload 来加载配置文件变更,配置文件的修改才能生效。

2.2 理解服务配置文件

下面将通过一个具体的配置文件的例子,让读者对 systemd 配置文件有一个直观地感受。

注意,这个例子并不是一个面面俱到的手册,只是方便理解的例子。

[Unit]
Description=My Awesome Service
Documentation=https://example.com/docs
After=network.target
Requires=postgresql.service

[Service]
Type=simple
User=appuser
Group=appgroup
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/myservice --config /etc/myapp/config.yaml
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5s
TimeoutStartSec=30s
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
[Unit] 部分:元数据和依赖关系定义
  • Description:人类可读的服务描述
  • Documentation:包含服务文档的 URL 或手册页。
  • After:定义执行顺序(但不创建依赖关系)
  • Requires:硬依赖 - 如果此项失败,服务将无法启动。
  • Wants:软依赖 - 即使此项失败,服务也将启动。

其中 After、Requires 和 Wants 都支持多个选项,使用空格分隔开。同时,他们后面的选项可以是任意的 Unit。

这里我觉得比较难以理解的是 After 和 Wants 的区别。After 指定启动顺序但不设定依赖,意思是如果只设定 After 某个服务,根本就不会触发这个服务的启动行为。这里可以举一个例子:假设你的服务依赖于 redis.service

  • 单独使用 Wants=redis.service:Systemd
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郎碎碎念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值