当前位置: 首页 > ops >正文

Linux 把启动脚本制作成系统服务(通过 systemctl start xxx 启动)

描述

正常我们启动某一个应用时,会新建一个sh脚本,每次调用起来和设置开机自启会非常麻烦
所以把这个启动文件制作成系统服务,每次启动只需要输入以下命令就可以启动

systemctl start xxx

也可以设置开机自启

systemctl enable xxx

接下来我拿Redis来演示,我用的Redis是离线软件包解压后的。

操作

1、进入到Redis目录,确保你制作的Redis脚本能够正常执行。
在这里插入图片描述
脚本名字为 startRedis.sh 脚本内容:

#!/usr/bin/env bash
src/redis-server ./redis.conf

在这里插入图片描述
2、创建 systemd 服务文件

# vi /etc/systemd/system/服务名称.service

例如:

vi /etc/systemd/system/redisServer.service

注意:后面的文件名,将是启动命令时用到的名称。

3、写入以下内容模板

[Unit]
# 服务描述
Description=这是一个服务描述,可以描述此服务是那个应用的
# 可选:替换为你的文档地址
# Documentation=https://your-docs-url.comAfter=network.target nss-lookup.target
Wants=network.target[Service]
Type=simple
# 建议使用专用用户运行,提高安全性(先创建用户: sudo useradd -r -s /bin/false cloudadmin)
# User=cloudadmin
# Group=cloudadmin# 工作目录,这里设置后,脚本中的相对路径就基于此目录
WorkingDirectory=/opt/redis/redis-3.2.11# 启动命令(使用绝对路径更可靠)
ExecStart=/opt/redis/redis-3.2.11/startRedis.sh# 停止命令:向Java进程发送SIGTERM信号实现优雅关闭
ExecStop=/bin/kill -15 $MAINPID# 如果应用无法正常停止,在90秒后强制杀死进程
TimeoutStopSec=90# 崩溃后自动重启
Restart=on-failure
RestartSec=10# 防止无限重启(5分钟内重启超过5次则放弃)
StartLimitInterval=300
StartLimitBurst=5# 环境变量(可选)
# Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk"
# Environment="SPRING_PROFILES_ACTIVE=prod"# 日志配置
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cloud-admin# 安全限制(可选)
LimitNOFILE=65536[Install]
WantedBy=multi-user.target

4、重载刷新服务配置

systemctl daemon-reload

5、测试

启动服务

systemctl start redisServer

查看服务状态

systemctl status redisServer

在这里插入图片描述

重启服务

systemctl restart redisServer

停止服务

systemctl stop redisServer

设置开机自启

systemctl enable redisServer

查看开机是否自启

systemctl is-enabled redisServer

在这里插入图片描述

查看完整日志

journalctl -u redisServer

在这里插入图片描述

查看最近100条日志

journalctl -u redisServer -n 100

在这里插入图片描述
实时追踪日志

journalctl -u redisServer  -f

在这里插入图片描述

更详细的配置模板

[Unit]
Description=Cloud Admin Application Service
After=network.target syslog.target
Requires=network.target[Service]
Type=simple
WorkingDirectory=/opt/cloud-admin# 直接使用java命令,避免额外脚本
ExecStart=/usr/bin/java -Dspring.config.location="config/application.yml,config/application-druid.yml" -jar cloud-admin.jar
ExecStop=/bin/kill -15 $MAINPID# 在启动前做一些检查(可选)
ExecStartPre=/bin/sleep 3
ExecStartPre=/bin/echo "Starting Cloud Admin Service"SuccessExitStatus=143  # Tomcat/JVM 通常以此状态退出# 资源限制(根据你的服务器配置调整)
LimitNOFILE=65536
LimitNPROC=4096Restart=on-failure
RestartSec=30# 环境文件(可以创建 /etc/sysconfig/cloud-admin)
EnvironmentFile=-/etc/sysconfig/cloud-admin[Install]
WantedBy=multi-user.target
http://www.xdnf.cn/news/18843.html

相关文章:

  • JHipster-从零开始学习指南
  • Autodesk Maya 2026.2 全新功能详解:MotionMaker AI 动画、LookdevX 材质增强、USD 工作流优化
  • 实现自己的AI视频监控系统-第二章-AI分析模块3(核心)
  • Python常见设计模式3: 行为型模式
  • OpenCV4.X库功能全解---个人笔记
  • 【解锁Photonics for AI:系统学习光学神经网络与超表面设计,成就下一代光芯片工程师】
  • TCP并发服务器构建
  • Linux 离线环境下 Anaconda3 与核心机器学习库(scikit-learn/OpenCV/PyTorch)安装配置指南
  • React内网开发代理配置详解
  • 安装了TortoiseSVN但是在idea的subversion里面找不到svn.exe
  • LangChain4J-(3)-模型参数配置
  • 力扣 30 天 JavaScript 挑战 第41天 (第十二题)对异步操作,promise,async/await有了更深理解
  • 部署k8s-efk日志收集服务(小白的“升级打怪”成长之路)
  • 在 Ubuntu 系统上安装 MySQL
  • Spring Cloud 高频面试题详解(含代码示例与深度解析)
  • 浏览器与计算机网络
  • 计算机网络:服务器处理多客户端(并发服务器)
  • 【Redis#8】Redis 数据结构 -- Zset 类型
  • Java 大视界 -- Java 大数据机器学习模型在电商推荐系统冷启动问题解决与推荐效果提升中的应用(403)
  • Containerd 安装与配置指南
  • 基于Spring Boot的民宿服务管理系统-项目分享
  • THM Smol
  • Redis 数据结构
  • Content-Type是application/x-www-form-urlencoded表示从前端到后端提交的是表单的形式
  • vue新能源汽车销售平台的设计与实现(代码+数据库+LW)
  • 数据结构-串
  • 【微信小程序教程】第13节:用户授权与登录流程狼惫
  • ES03-常用API
  • 前端工程化与AI融合:构建智能化开发体系
  • 【git】P1 git 分布式管理系统简介