systemd 入门:为什么你的 Linux 服务开机自启
【摘要】 还在用 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)