美文网首页
固定linux sh启动程序工作目录

固定linux sh启动程序工作目录

作者: 裸奔的刺猬 | 来源:发表于2019-12-13 11:19 被阅读0次

PS:禁止拷贝形式转载,转载请以URL形式

1.简介

解决通过sh脚本控制启停Java jar程序,导致java程序工作目录不固定。
执行sh脚本时,理想它的工作空间是在当前程序/脚本(默认它们同级)所放置的目录,
实际上它是当前执行sh脚本所处的目录(root目录下执行home目录下的脚本,则当前工作空间为root)。

2.解决问题

  1. 通过sh脚本启停jar包,传递参数等。
  2. sh脚本执行jar时,工作空间不在当前脚本文件目录。(导致jar程序的当前运行空间不是sh脚本文件目录,如log4日志保存的日志路径使用./logs保存。本意应该保存在sh文件同级目录,但是实际会跟随sh脚本工作空间路径进行保存)

3.解决思路(对应问题)

  1. 编写脚本,控制参数。
  2. 在sh脚本中获取脚本文件目录,并进入该目录(修改工作空间)。

4.demo

  1. 目录环境
    /root/demo/
    --------------/logs
    --------------/jre1.8/
    ----------------------/bin/java
    --------------/demo.jar
    --------------/start.sh

  2. 执行

root@dyf:~# /root/demo/start.sh xxxx
Usage: {start|stop|status}
root@dyf:~# /root/demo/start.sh status
[demo.jar] not running!
root@dyf:~# /root/demo/start.sh start
/root/demo/jre1.8/bin/java -server -Xms512m -Xmx512m -jar /root/demo/demo.jar  >>/dev/null &
[demo.jar-27330]. start!
root@dyf:~# /root/demo/start.sh start
[demo.jar-27330]. already start.
root@dyf:~# /root/demo/start.sh status
[demo.jar-27330]. is running!
root@dyf:~# /root/demo/start.sh stop
[demo.jar-27330]. stop!
root@dyf:~# /root/demo/start.sh status
[demo.jar] not running!
root@dyf:~# /root/demo/start.sh stop
[demo.jar] not running!

  1. 脚本
#!/bin/sh

# 解决问题2。获取脚本文件目录,并进入该目录。
cd "$(dirname "$0")"

APP="demo.jar"
APP_PATH=$(pwd)/${APP}
APP_PID=$(pgrep -f ${APP})

JVM_PARM="-server -Xms512m -Xmx512m"
JRE_PATH="/root/demo/jre1.8/bin/java"

#程序启动方法
start() {
  if [ -n "${APP_PID}" ]; then
    echo "[${APP}-${APP_PID}]. already start."
  else
    nohup ${JRE_PATH} ${JVM_PARM} -jar ${APP_PATH} "$*" >>/dev/null &
    echo "${JRE_PATH} ${JVM_PARM} -jar ${APP_PATH}" "$*" '>>/dev/null &'

    APP_PID="$!"
    echo "[${APP}-${APP_PID}]. start!"
  fi

}

#停止程序
stop() {
  if [ -z "${APP_PID}" ]; then
    echo "[${APP}] not running!"
  else
    kill -9 ${APP_PID}
    echo "[${APP}-${APP_PID}]. stop!"
  fi
}

#程序运行状态
status() {
  if [ -z "${APP_PID}" ]; then
    echo "[${APP}] not running!"
  else
    echo "[${APP}-${APP_PID}]. is running!"
  fi
}

case $1 in
start)
  start
  ;;
stop)
  stop
  ;;
status)
  status
  ;;
*)
  echo "Usage: {start|stop|status}"
  ;;
esac

exit 0

相关文章

  • 固定linux sh启动程序工作目录

    PS:禁止拷贝形式转载,转载请以URL形式 1.简介 解决通过sh脚本控制启停Java jar程序,导致java程...

  • 软件启动命令

    Liunx 下启动tomcat:1:进入tomcat下的bin目录2:sh startup.sh //启动tomc...

  • 指定tomcat运行的JDK环境

    Linux系统下指定 找到tomcat/bin目录 进入catalina .sh和setclasspath.sh,...

  • tomcat调优总结

    一、mac下启动tomcat: 1.cd 到程序bin目录2.终端执行 ./startup.sh命令 二、tomc...

  • idea配置tomcat

    1.下载tomcat cd 到tomcat文件目录下,sudo sh startup.sh启动, sudo sh ...

  • bat bash 启动固定项目

    window bat 启动固定项目 linux 写法

  • Spark常用命令

    启动Spark命令 首先启动Hadoop:start-all.sh 启动master:进入spark安装目录: ....

  • Android系统启动

    init进程 启动电源,加载引导程序,引导程序启动Linux内核,Linux内核加载完成后,首先启动 init 进...

  • Tomcat使用指定JDK路径

    linux:在Tomcat bin目录下的 catalina.sh 文件和 setclasspath.sh 文件开...

  • Centos7脚本启动

    建立启动文件./start.sh 切换./start.sh所在目录,授权chomd 777 *.sh测试执行./s...

网友评论

      本文标题:固定linux sh启动程序工作目录

      本文链接:https://www.haomeiwen.com/subject/tpffnctx.html