Linux systemd 服务管理实战:Unit 文件、开机自启 现代 Linux 都用 systemd 管理服务替代了老的 SysVinit。部署 Java/Python 项目、写开机自启、看服务日志全都要用 systemd。这篇从 Unit 文件写到实战部署。一、什么是 systemdsystemd 系统和服务管理器 老方式 serviceSysVinit 开机顺序执行脚本无依赖关系启动慢 /etc/init.d/xxx 脚本启动 新方式 systemd 并行启动、按依赖排序、统一管理 /usr/lib/systemd/system/ 存 Unit 文件 用 systemctl 命令操作# systemctl 常用命令systemctl start nginx# 启动systemctl stop nginx# 停止systemctl restart nginx# 重启systemctl status nginx# 查看状态systemctlenablenginx# 开机自启systemctl disable nginx# 取消自启systemctl is-active nginx# 是否运行中二、编写 Unit 文件以部署一个 Java 项目为例创建/etc/systemd/system/myapp.service[Unit] DescriptionMy Java Application # 描述 Afternetwork.target mysql.service # 依赖这些服务先启动 Wantsmysql.service # 软依赖失败不阻塞 [Service] Typesimple # 简单类型主进程前台运行 Userappuser # 以哪个用户运行安全 WorkingDirectory/opt/myapp # 工作目录 ExecStart/usr/bin/java -Xms256m -Xmx512m -jar myapp.jar # 启动命令 ExecStop/bin/kill -s TERM $MAINPID # 停止命令 Restarton-failure # 失败自动重启 RestartSec5 # 重启等待5秒 EnvironmentJAVA_HOME/usr/local/jdk # 环境变量 StandardOutputappend:/var/log/myapp.log # 日志输出 StandardErrorappend:/var/log/myapp-error.log [Install] WantedBymulti-user.target # 开机自启挂载点Restart 策略对比策略行为no不自动重启默认on-failure非正常退出才重启推荐生产always任何退出都重启on-abnormal信号/超时/看门狗等异常才重启三、生效与开机自启# 写完后必须重载配置systemctl daemon-reload# 启动并设置开机自启systemctl start myapp systemctlenablemyapp# 查看状态会显示是否开机自启 enabledsystemctl status myapp部署 Java 项目的完整流程# 1. 创建应用目录并上传 jarmkdir-p/opt/myappscpmyapp.jar root服务器:/opt/myapp/# 2. 创建非root运行用户安全useradd-rappuser# 3. 写 Unit 文件内容见上vi/etc/systemd/system/myapp.service# 4. 重载并启动systemctl daemon-reload systemctlenable--nowmyapp# 5. 验证systemctl status myapptail-f/var/log/myapp.log四、日志查看 journalctljournalctl-umyapp# 查看服务全部日志journalctl-umyapp-f# 实时跟踪journalctl-umyapp--since1 hour ago# 最近1小时journalctl-umyapp-n100# 最近100行journalctl-umyapp-perr# 只看错误级别常见报错排查启动失败三步排查 1. systemctl status myapp → 看错误提示 2. journalctl -u myapp -p err → 看详细错误日志 3. 检查文件权限 / 端口占用 / 环境变量 端口被占用 ss -tlnp | grep 8080 kill -9 pid # 或改配置文件端口五、定时任务 systemd timersystemd 也能做定时任务替代 crontab# /etc/systemd/system/backup.service [Service] ExecStart/opt/scripts/backup.sh # /etc/systemd/system/backup.timer [Timer] OnCalendar*-*-* 02:30:00 # 每天凌晨2点半 Persistenttrue # 错过时间下次开机补执行 [Install] WantedBytimers.targetsystemctlenable--nowbackup.timer systemctl list-timers# 查看所有定时任务总结systemd 三个要点1. Unit 文件三部分 [Unit] 描述依赖 / [Service] 启动参数 / [Install] 自启挂载 2. 每次改 Unit 文件都要 systemctl daemon-reload 3. 日志排查用 journalctl -u 服务名 生产部署推荐配置 Typesimple Restarton-failure RestartSec5 非root用户 日志落盘到文件配合systemctl statusjournalctl再也不用担心服务挂了不知道。 觉得有用的话点赞 关注【张老师技术栈】吧

相关新闻

最新新闻

系统规划与分析(下)

系统规划与分析(下)

数据与数据流程分析数据与数据流程分析是建立数据库系统和设计功能模块处理过程的基础,是一种分析系统 中数据和数据流动的方法。它的目标是理解系统中数据的来源、传输、存储和处理,以及它们 在系统中的使用和转换。在系统调查中,系统分析师…

2026/8/12 22:28:30
系统规划与分析(上)

系统规划与分析(上)

系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标及现有系统 的状况进行初步调查,根据企业目标和发展战略,确定信息系统的发展战略,对建设新系统 的需求做出分析和预测,同时考虑建设新系统所受的各…

2026/8/12 22:28:30
爬虫工程师实战指南:从网络请求到数据解析的常见失败排查与解决方案

爬虫工程师实战指南:从网络请求到数据解析的常见失败排查与解决方案

1. 从“能跑”到“能活”:爬虫工程师的日常困境干了这么多年爬虫,我越来越觉得,写一个能跑起来的爬虫,大概只占整个工作量的20%。剩下的80%,都是在和各种各样的“失败”作斗争。你可能刚写完一个脚本,测试时…

2026/8/12 22:28:30
笔记转Markdown全攻略:数据结构映射与自动化脚本实践

笔记转Markdown全攻略:数据结构映射与自动化脚本实践

1. 项目概述:从记录到文档的优雅转身 在信息爆炸的时代,我们每天都会在笔记应用里留下大量碎片化的想法、待办事项和灵感火花。NoteGen,作为一个现代化的笔记工具,其核心价值在于帮助我们高效地捕捉和组织这些信息。然而&#xff…

2026/8/12 22:28:30
SpringCloud微服务中基于MDC与OpenFeign的TraceId链路追踪实战

SpringCloud微服务中基于MDC与OpenFeign的TraceId链路追踪实战

1. 从一次线上故障排查说起:为什么我们需要TraceId? 去年我负责的一个电商系统,在某个大促日零点刚过,用户反馈支付成功后订单状态迟迟未更新。监控大盘上,订单服务的接口响应时间飙升,但CPU、内存等资源指…

2026/8/12 22:28:30
无名杀:开源三国杀网页版的终极解决方案

无名杀:开源三国杀网页版的终极解决方案

无名杀:开源三国杀网页版的终极解决方案 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 还在为传统三国杀客户端繁琐的安装和更新而烦恼吗?想要随时随地享受经典的三国杀对决却受限于设备兼容性?…

2026/8/12 22:23:29