ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

linux启动jar包脚本(shell脚本)

linux启动jar包脚本(shell脚本) java包启动脚本注意 Linux中执行脚本的时候报错原因脚本是在Windows下写的Windows和Linux的换行符号不同所以在Linux中执行脚本的时候报错。分析使用notepad打开脚本视图→ 显示符号→ 显示所有字符如图所示换行符是 CR LF但是Linux的是LF。方案在notepad 中编辑→文档格式转换→转为Unix格式然后再去Linux中运行脚本就可以了。notepad应该是大多数人必备的吧就不需要去找别的类似于dos2unix的软件了。#这里可替换为你自己的执行程序其他代码无需更改APP_NAMEcsls-springboot-nw.jar#使用说明用来提示输入参数usage(){echoUsage: sh robotcenter.sh [start|stop|restart|status]exit1}#检查程序是否在运行is_exist(){pidps-ef|grep$APP_NAME|grep-vgrep|awk{print $2}#如果不存在返回1存在返回0if[-z${pid}];thenreturn1elsereturn0fi}#启动方法start(){is_existif[$?-eq0];thenecho${APP_NAME}is already running. pid${pid}else#nohup java -jar ${APP_NAME} #Xms Xmx 指定虚拟内存上下限nohupjava-Xms256m-Xmx512m-jar${APP_NAME}csls.out21is_existif[$?-eq0];thenecho${APP_NAME}is running success. pid${pid}fifi}#停止方法stop(){is_existif[$?-eq0];thenkill-9$pidis_existif[$?-eq0];thenecho${APP_NAME}still in the running. pid${pid}elseecho${APP_NAME}has stopped running.fielseecho${APP_NAME}is not runningfi}#输出运行状态status(){is_existif[$?-eq0];thenecho${APP_NAME}is running. Pid is${pid}elseecho${APP_NAME}is NOT running.fi}#重启restart(){stop start}#根据输入参数选择执行对应方法不输入则执行使用说明case$1instart)start;;stop)stop;;status)status;;restart)restart;;*)usage;;esacLinux项目开机启动脚本这种不起作用原因时用了脚本系统识别不出来谁是主进程脚本执行和服务启动都是进程放在这里做个记录!!!cd/etc/systemd/systemvimcloud.service#!/bin/bash[Unit]Descriptioncloud-serviceAftersyslog.target network.target[Service]ExecStart/bin/sh /usr/local/project/cloud/cloud.sh startExecReload/bin/sh /usr/local/project/cloud/cloud.sh restartExecStop/bin/sh /usr/local/project/cloud/cloud.sh stopRemainAfterExityes[Install]WantedBymulti-user.target注意这样之后上边的jar包也要稍微改一下第二种方法推荐放弃使用sh脚本vim/etc/systemd/system/cloud.service[Unit]Descriptioncloud-serviceAftersyslog.target network.target[Service]WorkingDirectory/usr/local/project/cloudTypesimple# 修改为你真实java绝对路径如果有环境变量直接写java不用写路径ExecStart/bin/sh-c/usr/local/jdk/jdk1.8.0_431/bin/java -Xms256m -Xmx512m -jar cloud-project.jar /usr/local/project/cloud/cloud.out 21SuccessExitStatus143[Install]WantedBymulti-user.targetAfter设置启动先后顺序Wants/Requires设置依赖关系参数效果Wantsxxx.service弱依赖尝试启动 xxxxxx 启动失败你的服务依旧启动适合数据库可以后续重试连接Requiresxxx.service强依赖xxx 必须启动成功否则你的服务直接拒绝启动xxx 中途挂掉你的服务也被停掉Aftersyslog.target network.target redis.service DmServiceDMSERVER.serviceWantsredis.service DmServiceDMSERVER.service因为SpringBoot 会不断重试连接 redis、数据库所以不用设置如果项目有其他特殊要求可设置一下。单机的话修改 ExecStartjava 启动前 sleep 几秒给其他应用缓冲时间更快捷高效ExecStart/bin/sh-csleep 8; exec /usr/local/jdk/bin/java -Xms256m -Xmx512m -jar jijia-project.jarchmodx cloud.service加载新的unit 配置文件systemctl daemon-reload开启服务自启动systemctlenablecloud.service关闭服务自启动systemctl disable cloud.service查找某个服务systemctl list-unit-files|grepfirewalld
返回列表