【实践】Linux Centos 制作服务

场景

  • 方便运维
  • 自动重启,可用于程序莫名其妙的退出,影响客户使用体验

详细步骤

简单点把下面三个文件和程序放在同一个目录,并执行shell文件bash install_service.sh

  1. 核心Shell文件demo.sh
    书写start, stop, restart, status每个动作要执行的命令
#!/bin/bash  
  
#desc: project demo service shell  
#author: Kenny Fang  
#since: 0.0.1  
  
SERVICE_NAME=demo  
PATH_CURR=$(pwd)  
PID_PATH=/var/run/$SERVICE_NAME  
PID_FILE=$PID_PATH/$SERVICE_NAME.pid
  
start() {  
    mkdir -p $PID_PATH
    #do not excute cd command if program is in the same directory
    #cd program_path 
    nohup java -jar demo.jar >>demo.log 2>&1 &   
    echo $! > $PID_FILE  
      
    echo $SERVICE_NAME started at pid: $!...  
    echo $PID_FILE  
}  
  
stop() {  
    PID=`cat $PID_FILE`  
    kill $PID  
    echo $SERVICE_NAME stoped at pid: $PID...  
    #rm -rf $PID_FILE  
}  
  
restart() {  
    stop;  
    start;  
}  
  
status() {  
    if [ -f $PID_FILE ];then  
  PID=`cat $PID_FILE`  
 echo $SERVICE_NAME is running at pid: $PID...  
    else  
  echo $SERVICE_NAME is not running  
    fi  
  
}  
  
case $1 in  
start)  
    start  
  ;;  
stop)  
    stop  
  ;;  
restart)  
    restart  
  ;;  
status)  
    status  
  ;;  
*)  
    echo "Usage:{start|stop|restart|status}"  
  ;;  
  
esac
  1. 服务配置文件demo.service
    注意SHELL_PATH/demo.sh是真实的Shell文件的绝对路径
[Unit]    
Description= project demo  
     
[Service]    
Type=forking  
PIDFile=/var/run/demo/demo.pid    
ExecStart=SHELL_PATH/demo.sh start  
ExecReload=SHELL_PATH/demo.sh restart  
ExecStop=SHELL_PATH/demo.sh stop  
PrivateTmp=true    
Restart=always  
  
[Install]  
WantedBy=multi-user.target
  1. 服务安装文件install_service.sh
#!/bin/bash  
  
SERVICE_NAME=demo  
PATH_CURR=$(pwd)  
  
cd /usr/lib/systemd/system  
  
ln -s $PATH_CURR/$SERVICE_NAME.service
  1. 使用服务
service demo status

systemctl status demo
● demo.service - project demo
   Loaded: loaded (/yourpath/demo.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2021-08-02 16:50:21 CST; 19h ago
  Process: 26354 ExecStop=SHELL_PATH/demo.sh stop (code=exited, status=0/SUCCESS)
  Process: 26354 ExecStart=SHELL_PATH/demo.sh start (code=exited, status=0/SUCCESS)
 Main PID: 26354 (java)
    Tasks: 33
   Memory: 0.3G
   CGroup: /system.slice/demo.service
           └─26354 java -jar demo.jar

Aug 02 16:50:21 zuf66589vyznm7f5fw8tg systemd[1]: Starting project demo...
Aug 02 16:50:21 zuf66589vyznm7f5fw8tg demo.sh[16351]: demo started at pid: 26354...
Aug 02 16:50:21 zuf66589vyznm7f5fw8tg demo.sh[16351]: /var/run/demo/demo.pid
Aug 02 16:50:21 zuf66589vyznm7f5fw8tg systemd[1]: Started project demo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值