systemd 入门:为什么你的 Linux 服务开机自启

举报
yd_233118316 发表于 2026/11/03 06:07:24 2026/11/03
【摘要】 还在用 nohup 挂后台?一文讲清 systemd 服务单元的写法、常用命令与开机自启配置。

在 Linux 服务器上部署过程序的同学大多用过 systemctl start xxx,但未必真正了解背后的 systemd。它不只是"启动服务的工具",而是整个系统的 1 号进程(PID 1),负责开机后按依赖关系拉起所有服务。

一、unit 与 service

systemd 管理的对象叫 unit,最常用的是 service 单元。每个服务对应一个 .service 文件,通常放在 /etc/systemd/system/ 下。一个最小示例:

[Unit]
Description=My demo web app
After=network.target

[Service]
ExecStart=/usr/bin/python3 /opt/demo/app.py
Restart=on-failure
User=www-data

[Install]
WantedBy=multi-user.target

三段的含义:Unit 描述元信息和依赖;Service 定义怎么启动、崩溃怎么处理;Install 决定挂在哪个启动目标下。

二、常用命令速查

sudo systemctl daemon-reload    # 改了 .service 文件后必须执行
sudo systemctl enable --now myapp  # 开机自启并立即启动
systemctl status myapp          # 看状态
journalctl -u myapp -f          # 跟踪日志

enable --now 一次顶两条命令,是最值得记住的写法。

三、比 nohup 好在哪

很多人部署用 nohup python app.py &,问题是没有自动重启、没有开机自启、日志散落在 nohup.out。换成 systemd 后:进程崩溃由 Restart=on-failure 自动拉起;服务器重启后服务自动恢复;日志统一进 journald,用 journalctl 一条命令查。写一次配置文件,长期受益。

小结

把手工启动的命令封装成 systemd 服务,是 Linux 运维从"能用"到"可靠"的第一步。下次部署小服务时,不妨先写个 20 行的 .service 文件。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。