用 systemd 管好 Linux 常驻服务的三个小习惯

举报
yd_293641931 发表于 2026/11/05 06:20:29 2026/11/05
【摘要】 做运维或自己搭服务时,很多人习惯用 nohup 或直接开终端跑进程。机器一重启,服务就没了;日志散落在各处,出问题也不好查。把常驻进程交给 systemd,通常更省心。下面三个习惯,够应对多数自建服务。 1. 用 unit 文件描述服务,而不是手敲长命令在 /etc/systemd/system/ 下放一个 .service 文件,写清 ExecStart、工作目录、运行用户。改完后执行 s...

做运维或自己搭服务时,很多人习惯用 nohup 或直接开终端跑进程。机器一重启,服务就没了;日志散落在各处,出问题也不好查。把常驻进程交给 systemd,通常更省心。下面三个习惯,够应对多数自建服务。

1. 用 unit 文件描述服务,而不是手敲长命令

在 /etc/systemd/system/ 下放一个 .service 文件,写清 ExecStart、工作目录、运行用户。改完后执行 systemctl daemon-reload,再用 systemctl enable --now 服务名 开机自启并立刻拉起。好处是:重启可预期、依赖顺序可声明、失败重启策略也能写在 unit 里。

示例骨架:

[Unit]
Description=My App
After=network.target

[Service]
Type=simple
User=app
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/server
Restart=on-failure

[Install]
WantedBy=multi-user.target

2. 日志交给 journal,少自己重定向文件

默认情况下,服务的标准输出和标准错误会进 journal。查问题用 journalctl -u 服务名 -f 即可实时看;加 -b 只看本次开机,加 --since today 看今天。需要长期归档时再配 StandardOutput=append:/var/log/…,日常先用 journal 往往就够。

3. 改配置先 reload / restart,并确认 Active 状态

改完配置别假设「已经生效」。对支持热加载的服务用 systemctl reload;多数程序用 systemctl restart。然后用 systemctl status 服务名 看是否 active (running),再用一次健康检查(HTTP、端口或业务命令)确认真的起来了。把这三步当成固定收尾,能少踩「改了但没重启」的坑。

小结:unit 描述服务、journal 看日志、改完必确认状态。这三件事做稳了,自建 Linux 服务会清爽很多,也更适合接到监控和自动化脚本里。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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