2025-12-31 CentOS创建服务开机启动软件

背景

系统中有时候有的软件需要开机自启动,之前的做法是写一个.sh文件,启动软件,然后在/etc/rc.d/rc.local中启动这个.sh文件,这种做法可行,不过有一次此种写法启动一个执行文件,需要在命令行里面运行的服务不会退出,结果导致系统启动失败,猜测是启动这个服务阻塞了,所以改用服务的方式启动。

服务开机启动

我这里要启动2个程序,zl和一个Java程序,zl的运行程序是/opt/zl-kylin-server-v10-1e6a896/MediaServer,Java程序是使用Java -jar命令运行的/opt/zl_server/ZLMediaKitServer-1.0.0.20251230.jar,Java程序运行会在jar同级目录创建一些配置文件之类的,这里要注意的是路径,如果不注意就会是根路径运行,创建的文件全在根目录了。

创建服务

进入系统/etc/systemd/system文件夹,里面会有一些.service文件,这就是服务的配置文件,可以理解为创建一个这个文件就添加了一个服务。我们创建一个zl.service和一个zl_server.service文件。

屏幕截图 2025-12-31 114700.png

修改2个文件里面的内容

zl.service是启动MediaServer的服务,关键配置是After=network.target,表示在系统网卡启动后启动这个服务,WorkingDirectory=/opt/zl-kylin-server-v10-1e6a896指定工作目录,ExecStart=/opt/zl-kylin-server-v10-1e6a896/MediaServer启动命令

[Unit]
Description=ZLMediakit
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/zl-kylin-server-v10-1e6a896
ExecStart=/opt/zl-kylin-server-v10-1e6a896/MediaServer

Restart=always
RestartSec=5

LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

zl_server.service启动Java服务,After=zl.service表示在zl.service启动后启动,WorkingDirectory=/opt/zl_server指定工作目录,否则就会在根目录执行,ExecStart=java -jar /opt/zl_server/ZLMediaKitServer-1.0.0.20251230.jar启动命令

[Unit]
Description=zl_server
After=zl.service

[Service]
Type=simple
WorkingDirectory=/opt/zl_server
ExecStart=java -jar /opt/zl_server/ZLMediaKitServer-1.0.0.20251230.jar
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动服务

上述操作创建了2个服务,是还没有生效的,服务文件修改后需要执行systemctl daemon-reload重新加载才能生效。

# 修改服务后需要重新加载
systemctl daemon-reload

# 启动服务,服务名称后面不需要加.service
systemctl start zl

# 停止服务
systemctl stop zl

# 设置服务开机启动
systemctl enable zl

# 设置服务开机不启动
systemctl disable zl
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容