Linux的守护进程systemd

502 阅读2分钟

一、systemd基本介绍

  • 【定义】守护进程是执行各种任务的后台等待或运行的进程,一般情况下,守护进程在系统引导时自动启动并持续运行至关机或被手动停止,Linux中许多守护进程的名称以字母d结尾
  • 【作用】启动系统服务和守护进程,还能监视它们的状态并在有需要的时候进行重启
  • 【systemd提供的功能】并行化功能,提高系统的启动速度; 按需启动守护进程,而不需要单独的服务; 自动服务依赖关系管理,可以防止长时间超市; 利用Linux控制组一起追踪相关进程的方式

二、安装与配置

apt-get update
apt-get install -y systemd

三、实例应用

  • 在创建守护程序之前,我们需要创建一个 systemd 服务文件。服务文件是一个包含描述服务的信息的文本文件。服务文件的位置在 /etc/systemd/system/ 目录下。例如,我们创建一个名为 golang-demo.service 的服务文件:
vim /etc/systemd/system/goploy.service

# 文件中添加以下内容
[Unit]
Description=The Goploy
After=network.target

[Service]
Environment="HOME=/root"
WorkingDirectory=/home/www
ExecStart=/home/www/goploy
ExecStop=/home/www/goploy -s

[Install]
WantedBy=multi-user.target

[Unit] 部分包含服务名称和描述,以及该服务应该在何时启动(在 network.target 后)。 [Service] 部分描述了启动服务的详细信息,包括使用的用户组,以及启动脚本文件的位置。 [Install] 部分规定了 systemd 应该在哪个目标身上启动该服务

四、测试

# 启动
systemctl start goploy.service

# 停止
systemctl stop goploy.service

# 查看服务状态
systemctl status goploy.service

# 开机自启动
systemctl enable goploy.service

五、摘要

状态标识

关键词描述
loaded单元配置文件已处理
active(running)正在通过一个或多个持续进程运行
active(exited)已成功完成一次性配置
active(waiting)运行中,但在等待事件
inactive不在运行
enabled将在系统启动时启动/
disabled不会在系统启动时启动
静态无法启动,但可以由某一启动的单元自动启动

systemctl命令

命令任务
systemctl status UNIT查看有关单元状态的详细信息
systemctl stop UNIT在运行中的系统上停止一项服务
systemctl start UNIT在运行中的系统上启动一项服务
systemctl restart UNIT在运行中的系统上重新启动一项服务
systemctl reload UNIT重新加载运行中服务的配置文件
systemctl mask UNIT彻底禁用服务,使其无法手动启动或在系统启动时启动
systemctl unmask UNIT使屏蔽的服务变得可用
systemctl enable UNIT将服务配置为在系统启动时启动
systemctl disable UNIT禁止服务在系统启动时启动
systemctl list-dependencies UNIT列出指定单元需要的单元