真开心,又活一天~|

MerlinBK

园龄:5年6个月粉丝:0关注:3

Linux创建服务并设置开机自启

以下为尝试做的一个服务,仅做参考

前提条件

  • 存在/home目录
  • 已安装java并配置了环境变量

存放位置

  • jar文件:/home
  • sh文件:/root
  • service文件:/usr/lib/systemd/system

保活脚本

文件名:swp-exchange-stay-active.sh

# ! /bin/sh
SERVICE_PATH="/home"
SERVICE_LIST=(swp-exchange.jar swp-exchange-edit.jar)
# 替换为项目中服务器的IP地址或域名
SERVICE_URL="http://backend.swpiot.local/ews/ewsConfig"
LOG_FILE="/home/swp_exchange_active.log"
# 替换为项目中服务器java的绝对路径
JAVA_PATH="/usr/java/jdk1.8.0_321/bin/java"
cd $SERVICE_PATH
while true 
do
    for SERVICE in ${SERVICE_LIST[*]}; do
        procnum=`ps -ef | grep $SERVICE | grep -v grep | wc -l`
        # echo `date +%Y-%m-%d` `date +%H:%M:%S` $SERVICE "进程数:" $procnum >>$LOG_FILE
        if [ $procnum -eq 0 ];then
            if [ $SERVICE == "swp-exchange.jar" ];then
                nohup $JAVA_PATH -jar $SERVICE -uc $SERVICE_URL -dc 180 -si 120000 -sm 1 >/dev/null 2>&1 &
                echo `date +%Y-%m-%d` `date +%H:%M:%S` "启动进程:" $SERVICE >>$LOG_FILE
            else
                nohup $JAVA_PATH -jar $SERVICE -uc $SERVICE_URL >/dev/null 2>&1 &
                echo `date +%Y-%m-%d` `date +%H:%M:%S` "启动进程:" $SERVICE >>$LOG_FILE
            fi  
        elif [ $procnum -gt 1 ];then
            echo `date +%Y-%m-%d` `date +%H:%M:%S` "当前程序:" $SERVICE "占用进程数:" $procnum >>$LOG_FILE
            pkill -f $SERVICE
            echo `date +%Y-%m-%d` `date +%H:%M:%S` "已结束进程:" $SERVICE >>$LOG_FILE
        fi
    done
    sleep 120 # 每120秒检查一轮
done

服务脚本

文件名:swp-exchange-stay-active.service

[Unit]
Description=Swp-ExchangeStayActive
After=network.target

[Service]
Type=forking
ExecStartPre=/bin/sleep 10s
ExecStart=/bin/bash -c 'nohup sh /root/swp-exchange-stay-active.sh >/dev/null 2>&1 &'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutStartSec=30s
KillMode=control-group
Restart=always
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target

操作步骤

  1. 上传swp-exchange-stay-active.sh、swp-exchange-stay-active.service文件至服务器任意目录下

  2. 授予swp-exchange-stay-active.sh、swp-exchange-stay-active.service文件读写执行权限

    chmod 777 swp-exchange-stay-active.sh
    chmod 777 swp-exchange-stay-active.service
    
  3. 将swp-exchange-stay-active.sh文件移动至服务器/root目录下

    mv swp-exchange-stay-active.sh /root
    
  4. 将swp-exchange-stay-active.service文件放到服务器/usr/lib/systemd/system目录下

    mv swp-exchange-stay-active.service /usr/lib/systemd/system
    
  5. 设置开机启动

    cd /usr/lib/systemd/system
    systemctl enable swp-exchange-stay-active.service
    
  6. 重新加载文件

    systemctl daemon-reload
    
  7. 启动服务

    systemctl start swp-exchange-stay-active.service
    
  8. 验证服务是否启动

    systemctl status swp-exchange-stay-active.service
    

    image-20220929114132093

  9. 验证线程是否运行成功

    ps -ef | grep swp
    

    image-20220929114259227

其他服务操作

开启服务

systemctl start swp-exchange-stay-active.service

关闭服务

systemctl stop swp-exchange-stay-active.service

重启服务

systemctl restart swp-exchange-stay-active.service

查看状态

systemctl status swp-exchange-stay-active.service

本文作者:MerlinBK

本文链接:https://www.cnblogs.com/MerlinBK/p/17516746.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   MerlinBK  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起