Linux将shell脚本.sh加入系统服务【CentOS7测试成功】

艺帆风顺 发布于 2025-04-03 24 次阅读


一、问题背景

    安装达梦数据库后,使用官方帮助文档操作集成到系统服务失败,于是考虑写一个启动脚本,将其集成到系统启动单元中。

二、编写shell启动脚本

#!/bin/bash
# execute dmserver command and output logs to dm.log/dm8/bin/dmserver /dm/data/DAMENG/dm.ini &> dm.log &
# daemonize the processdaemonize(){ echo $$ > /var/run/dmserver.pid echo "达梦数据库启动成功!" exit 0}
daemonize

三、编写系统服务启动单元

vim /etc/systemd/system/DMSQL.service

# DMSQL.service
[Unit]Description=DM8SQL_ServiceAfter=network.target
[Service]Type=forkingExecStart=/dm8/startDM8SQL.shRestart=on-failure
[Install]WantedBy=multi-user.target

    备注:因为启动脚本startDM8SQL.sh实际是在后台运行的程序,不是简单命令,所以Type应设置为forking。

四、启动效果

systemctl start DMSQL

systemctl status DMSQL

systemctl enable DMSQL

[root@izoa3jxy7fndltz bin]# systemctl enable DMSQLCreated symlink from /etc/systemd/system/multi-user.target.wants/DMSQL.service to /etc/systemd/system/DMSQL.service.[root@izoa3jxy7fndltz bin]# systemctl status DMSQLDMSQL.service - DM8SQL_Service Loaded: loaded (/etc/systemd/system/DMSQL.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2023-08-23 09:48:45 CST; 1min 38s ago Main PID: 31742 (dmserver) CGroup: /system.slice/DMSQL.service └─31742 /dm8/bin/dmserver /dm/data/DAMENG/dm.ini
Aug 23 09:48:45 izoa3jxy7fndltz systemd[1]: Starting DM8SQL_Service...Aug 23 09:48:45 izoa3jxy7fndltz startDM8SQL.sh[31741]: 达梦数据库启动成功!Aug 23 09:48:45 izoa3jxy7fndltz systemd[1]: Started DM8SQL_Service.