Systemd守护进程
Systemd守护进程
nodaolisystemd入门教程
如果你刚接触Ubuntu、CentOS等Linux系统,大概率会遇到“启动服务”“开机自启”这类需求。而systemd,就是Linux系统里负责“统筹管理”这些事的“大管家”。这篇教程不讲复杂原理,只教你搞懂它是什么、怎么用,轻松搞定服务管理和开机自启。
一、先搞懂:systemd到底是啥?
我们先抛弃专业定义,用比喻理解:
把Linux系统想象成一个“大家庭”,家里有各种“打工仔”(进程):有的负责网络连接(sshd服务),有的负责网页服务(nginx),有的负责定时任务(crond)。这些“打工仔”大多在后台默默干活,不露面(也就是“守护进程”)。
而systemd,就是这个家的“大管家”——它的核心工作的是:
- 开机时,按顺序叫醒需要的“打工仔”(并行启动服务,加快开机速度);
- 运行中,管理“打工仔”的生死(启动、停止、重启服务);
- 听话办事,比如你让某个“打工仔”开机就上班(配置开机自启);
- 记日志,哪个“打工仔”出问题了,它会记下原因(方便排错)。
补充:Ubuntu 16.04、CentOS 7及以上版本,都默认用systemd当“管家”。之前的老系统用的是“老管家”(SysV init,对应/etc/init.d目录),现在基本被淘汰,我们重点学新管家的用法。
二、核心工具:systemctl命令(操控管家的“遥控器”)
systemd是“管家”,但我们不能直接和它对话,得用systemctl这个“遥控器”发指令。所有操作都在终端执行,核心命令就这几个,记熟就能应对80%场景。
基础命令(以“sshd服务”为例,sshd是远程登录服务,很常用)
|功能需求|命令|通俗解释|
|—|—|—|
|启动服务|sudo systemctl start sshd|让“sshd打工仔”开始上班|
|停止服务|sudo systemctl stop sshd|让“sshd打工仔”下班|
|重启服务|sudo systemctl restart sshd|让“sshd打工仔”下班再重新上班(改配置后常用)|
|查看服务状态|systemctl status sshd|看看“sshd打工仔”在不在上班、有没有出问题|
|设置开机自启|sudo systemctl enable sshd|告诉管家,开机时自动叫“sshd打工仔”上班|
|取消开机自启|sudo systemctl disable sshd|告诉管家,开机不用叫“sshd打工仔”(按需关闭)|
小技巧:查看状态时看什么?
执行systemctl status sshd后,重点看两行:
- 如果显示“active (running)”,说明服务正常运行(打工仔在干活);
- 如果显示“inactive (dead)”,说明服务没启动(打工仔没上班);
- 如果显示“failed”,说明服务启动失败(打工仔想上班但出问题了),终端会提示错误原因,跟着改就行。
三、实战:让自己的脚本开机自启(新生最常用需求)
假设你写了一个脚本(比如my_script.sh,功能是开机后自动备份文件),想让它开机就运行。用systemd配置很简单,分5步走,每步都有解释。
前置准备(必做!不然会出错)
- 给脚本加“可执行权限”(让系统允许它运行):
chmod +x /home/你的用户名/my_script.sh注:把路径换成你脚本的实际路径,比如脚本在桌面,路径就是/home/xxx/桌面/my_script.sh - 测试脚本能否正常运行:
/home/你的用户名/my_script.sh确保运行时没有报错,再进行下一步(不然开机自启也会失败)。
步骤1:创建“服务配置文件”
systemd管理服务,需要一个“配置文件”(告诉管家这个服务是什么、怎么启动)。这个文件要放在/etc/systemd/system/目录下,后缀为.service。
执行命令创建文件(以脚本名my_script为例,配置文件名叫my_script.service):sudo nano /etc/systemd/system/my_script.service
步骤2:写入配置内容(抄模板,改3处就行)
在打开的编辑器里,复制下面的内容,然后修改标注的3处地方,保存退出(nano编辑器按Ctrl+O保存,Enter确认,Ctrl+X退出)。
1 | [Unit] |
步骤3:让管家识别新服务
刚创建的配置文件,管家还不知道,需要刷新一下:sudo systemctl daemon-reload
步骤4:启动服务并设置开机自启
依次执行3条命令,完成配置:
- 启动服务:
sudo systemctl start my_script.service - 设置开机自启:
sudo systemctl enable my_script.service - 查看状态(确认成功):
systemctl status my_script.service
步骤5:验证效果(可选)
重启系统,看看脚本是不是自动运行了:sudo reboot 重启后执行systemctl status my_script.service,如果显示“active (running)”,说明成功!
四、常见问题排错(新生必看)
1. 服务启动失败,显示“failed”执行sudo journalctl -u my_script.service,查看详细日志,日志里会明确说哪里错了(比如路径写错、脚本权限不够)。
2. 脚本路径没错,但启动失败
大概率是脚本里用了相对路径(比如./file.txt),改成绝对路径(比如/home/xxx/file.txt)就行——开机时脚本的“工作目录”和你手动运行时不一样,相对路径会失效。
3. 想取消这个开机自启服务
执行两条命令:
sudo systemctl disable my_script.service(取消开机自启)
sudo systemctl stop my_script.service(停止当前运行的服务)
五、总结(记牢这3点就行)
- systemd是Linux的“服务大管家”,负责管理服务启动、开机自启等;
- 用
systemctl命令操控它,核心命令就启动、停止、重启、查看状态、设置自启这几个; - 自定义脚本开机自启,核心是创建
.service配置文件,告诉管家“怎么启动脚本”。
不用一开始就吃透所有参数,先会用基础命令和开机自启配置,后续遇到复杂需求再慢慢拓展就行~


