systemd服务管理入门——用systemctl管服务与开机自启
刚接触 Linux 服务器时,很多人第一次装好软件就卡住了:服务怎么启动?重启后为什么又停了?答案大多藏在 systemd 里。systemd 是多数现代 Linux 发行版的初始化系统和服务管理器,systemctl 则是和它打交道的命令行工具。学会 systemctl,就等于拿到了管理服务的总开关。
一、服务是什么
服务就是在后台持续运行的程序,比如网站服务、数据库、定时任务。它们没有窗口,不会因为你关闭终端就消失,而是由 systemd 统一启动、监控和停止。每个服务对应一个单元文件,通常以 .service 结尾,放在 /etc/systemd/system 或 /lib/systemd/system 目录下。
二、最常用的五个命令
查看状态是第一步:
systemctl status nginx
输出里 Active 一行会告诉你服务是否在运行,绿色的 active (running) 表示正常,failed 则说明启动失败,下面几行日志往往就是排错线索。
启动、停止和重启也很直观:
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
改完配置文件后,先用 reload 让服务重新加载配置,不必中断正在处理的请求;只有 reload 不生效时,才用 restart:
sudo systemctl reload nginx
三、开机自启:enable 与 disable
服务器重启后服务还在吗?这取决于开机自启有没有打开:
sudo systemctl enable nginx
sudo systemctl disable nginx
enable 会建立开机启动的链接,disable 则取消它。注意 enable 只是让服务开机自动启动,并不会立刻启动它;刚装好的服务通常要先 start 一次,再 enable,才能既运行又自启。可以用 is-enabled 快速确认:
systemctl is-enabled nginx
返回 enabled 说明已设置自启,disabled 说明没有。
四、排错三板斧
服务起不来时别急着重装,先看三处。第一看状态和日志:
systemctl status nginx
journalctl -u nginx -n 50
第二看端口是否被占用、配置文件语法是否写错;第三看是不是权限或目录不存在。很多时候问题不在服务本身,而在它依赖的文件或端口。
五、写一个自己的服务
想让自己写的脚本开机自动跑,可以新建一个单元文件 /etc/systemd/system/hello.service,写好要执行的命令和启动用户,然后执行:
sudo systemctl daemon-reload
sudo systemctl enable --now hello
daemon-reload 是告诉 systemd 重新读取单元文件,–now 表示同时立即启动。之后这个脚本就和系统服务一样,可以用 status 查看、用 stop 停止。
小结
记住这条主线就够了:status 看状态,start/stop/restart 管运行,enable/disable 管开机自启,journalctl 查日志。从今天起,遇到服务问题先打开 systemctl 看一眼,再决定下一步,排错会快很多。
- 点赞
- 收藏
- 关注作者
评论(0)