CentOS7 systemctl 自定义程序启动服务

1、制作程序启动脚本
scenarioDaemon.sh

#!/bin/sh

#set env
export ORACLE_HOME=/opt/oracle/product/11.2.0
export TNS_ADMIN=$ORACLE_CLIENT_HOME/network/admin
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export CPLUS_INCLUDE_PATH=/usr/local/boost_1_64_0:/opt/oracle/product/11.2.0/rdbms/public
export LIBRARY_PATH=/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64:$ORACLE_HOME/lib:/usr/local/boost_1_64_0/stage/lib
export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64:$ORACLE_HOME/lib:/usr/local/boost_1_64_0/stage/lib
export PATH=$PATH:$ORACLE_HOME/bin

currentpath=$(pwd)
basepath=$(cd `dirname $0`; pwd)

case $1 in
start)
        path="$basepath/scenarioserver.pid"
        if [ -f $path ]; then
                pid=`cat $basepath/scenarioserver.pid`
                echo "进程$pid正在运行..."
        else
                cd $basepath
                nohup $basepath/scenarioserver run &
                echo $! > $basepath/scenarioserver.pid
                echo "运行进程$!..."
                cd $currentpath
        fi
        ;;
stop)
        pid=`cat $basepath/scenarioserver.pid`
        kill -9 $pid
        echo "结束进程$pid..."
        rm -rf $basepath/scenarioserver.pid
        ;;
           pid=`cat $basepath/scenarioserver.pid`
                kill -9 $pid
                echo "结束进程$pid..."
                rm -rf $basepath/scenarioserver.pid

                cd $basepath
                nohup $basepath/scenarioserver run &
                echo $! > $basepath/scenarioserver.pid
                echo "运行进程$!..."
                cd $currentpath
        else
                echo "进程没运行..."
                cd $basepath
                nohup $basepath/scenarioserver run &
                echo $! > $basepath/scenarioserver.pid
                echo "运行进程$!..."
                cd $currentpath
        fi
        ;;
status)
        path="$basepath/scenarioserver.pid"
        if [ -f $path ];then
                pid=`cat $basepath/scenarioserver.pid`
                echo "进程$pid正在运行..."
        else
                echo "进程没运行..."
        fi
        ;;
*)
        echo "Usage:{start|stop|restart|status}"
        ;;

esac

2、添加启动服务

vim /usr/lib/systemd/system/scenarioserver.service

[Unit]
Description=scenarioserver
After=network.target

[Service]
Type=forking
ExecStart=xxxx/scenarioDaemon.sh start
ExecReload=xxxx/scenarioDaemon.sh restart
ExecStop=xxxx/scenarioDaemon.sh stop
PrivateTmp=true
User=指定启动用户名
Group=指定启动用户组

[Install]
WantedBy=multi-user.target

3、执行启动命令

启动服务
systemctl start scenarioserver
停止服务
systemctl stop scenarioserver
重启服务
systemctl restart scenarioserver
查看服务状态
systemctl status scenarioserver -l

4、注意
制作程序启动脚本时,必须设置环境变量。我当时没有设置环境变量,手动执行shell时没问题,服务调用时oracle连接报错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值