当前位置:首页 > 技术 > 正文内容

Linux服务实操教程:systemd服务的创建、启动与管理

访客 技术 2026年5月7日 14:31 4

在Linux系统中,服务本质上是一个在后台持续运行的程序。systemd是主流Linux发行版默认的服务管理系统,而systemctl则是用于管理服务的命令行工具。

简单来说,可以把服务理解为一辆汽车:可以启动它、停止它,也可以检查它的运行状态。systemd就像隐藏在幕后的引擎,自动处理服务的启动、停止和监控等复杂工作。

学习目标

完成本教程后,你将掌握以下技能:

  • 创建自定义systemd服务
  • 使用systemctl启动和停止服务
  • 配置服务开机自启动
  • 干净地删除服务及相关文件

步骤一:创建后台脚本

首先创建一个用于测试的脚本文件:

sudo nano ~/backup_task.sh

写入以下内容:

#!/bin/bash

while true
do
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] Backup task is running"
  sleep 10
done

保存退出(Ctrl+O,回车,Ctrl+X)。

赋予执行权限:

chmod +x ~/backup_task.sh

步骤二:创建systemd服务单元文件

systemd通过服务单元文件(service unit file)来定义如何运行服务。创建以下文件:

sudo nano /etc/systemd/system/backup.service

写入配置内容:

[Unit]
Description=Scheduled Backup Service

[Service]
Type=simple
ExecStart=/home/username/backup_task.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

注意:将上面配置中的/home/username/替换为你的实际用户名路径。

配置参数说明:

  • Description:服务的描述信息
  • Type=simple:服务为前台运行类型
  • ExecStart:指定要执行的脚本路径
  • Restart=on-failure:服务异常退出时自动重启
  • WantedBy:指定服务在多用户模式下启动

步骤三:重载systemd并启动服务

创建服务单元文件后,需要通知systemd重新加载配置,然后启动服务:

sudo systemctl daemon-reload
sudo systemctl start backup.service

步骤四:检查服务状态

验证服务是否正常启动:

sudo systemctl status backup.service

如果服务运行正常,输出应显示active (running)状态。

步骤五:停止服务

需要停止服务时使用:

sudo systemctl stop backup.service

步骤六:配置开机自启动

启用开机自启动:

sudo systemctl enable backup.service

禁用开机自启动:

sudo systemctl disable backup.service

步骤七:查看服务日志

实时查看服务日志输出:

sudo journalctl -u backup.service -f

参数-f表示follow模式,类似tail -f的效果。

停止服务后查看历史日志:

sudo journalctl -u backup.service

步骤八:清理删除

完全删除服务及所有相关文件:

sudo systemctl stop backup.service
sudo systemctl disable backup.service
sudo rm /etc/systemd/system/backup.service
sudo systemctl daemon-reload
sudo rm ~/backup_task.sh

执行上述命令后,系统恢复干净状态,不留任何残余配置。

工作流程示意

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  单元配置文件  │───▶│  systemd   │───▶│  运行进程   │
│ .service    │    │  管理器    │    │  后台服务   │
└─────────────┘    └─────────────┘    └─────────────┘
        │                  │                  │
        ▼                  ▼                  ▼
   /etc/systemd/   systemctl    journalctl
      system/          管理命令        日志查看

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。