使用 systemd 管理服务
启动、停止并启用服务
使用 systemd 管理服务 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
管理长时间运行的服务
systemd 模块控制由 systemd 管理的服务;systemd 是大多数现代 Linux 发行版使用的初始化系统。您可以使用它启动、停止和启用服务。
启动服务
提供服务名称,并设置 state: started。只有在服务尚未运行时,该模块才会启动它,因此始终保持幂等。
ansible.builtin.systemd:
name: nginx
state: started停止服务
使用 state: stopped 停止服务。和往常一样,只有服务当前正在运行时,它才会执行操作。
ansible.builtin.systemd:
name: nginx
state: stopped重启与重新加载
state: restarted 会完全重启服务,而 reloaded 会在不中断连接的情况下重新读取配置。重启是安全的默认选择。
ansible.builtin.systemd:
name: nginx
state: restarted启动与启用不同
state 控制服务是否立即运行。enabled 控制服务是否在启动时自动运行。两者相互独立。
在启动时启用
设置 enabled: true,让服务在重启后自动启动。将它与 started 结合使用,即可同时覆盖现在和以后。
ansible.builtin.systemd:
name: nginx
state: started
enabled: true重新加载 systemd 守护进程
添加新的单元文件后,设置 daemon_reload: true,让 systemd 在您操作该单元前重新读取配置。
ansible.builtin.systemd:
name: myapp
daemon_reload: true保持幂等
对正在运行的服务请求 started 时,您会得到 ok,而不是 changed。该模块会先检查实时状态,然后再决定是否执行操作。
需要根权限
控制服务需要权限,因此请添加 become: true。没有它,systemd 会拒绝操作,任务也会失败。
- name: Enable nginx
become: true
ansible.builtin.systemd:
name: nginx
enabled: true还有 service 模块
通用的 service 模块适用于各种初始化系统。当您需要 daemon_reload 这类 systemd 专用选项时,请直接使用 systemd。
与处理程序配合良好
一种常见模式是仅在配置发生更改时才restart服务。您稍后会学到的处理程序会在发生更改时触发这次重启。
快速检查
您希望 nginx 现在运行,并且在每次重启后也运行。
回顾
systemd 模块可以启动、停止、重启和启用服务。请记住,state 表示现在,enabled 表示启动时。⚙️
常见问题解答
「使用 systemd 管理服务」课时是免费的吗?
是的 — 「使用 systemd 管理服务」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「使用 systemd 管理服务」这节课中我会学到什么?
启动、停止并启用服务 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 systemd 管理服务」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 模块究竟是什么
- 使用 package 模块安装包
- 使用 systemd 管理服务
- 使用 ansible-doc 阅读文档