运维小知识:
下面这是我平时运行jar包的指令 小于号>log 的含义是重定向一个日志! 打印对应jar包信息的
nohup java -jar -Dserver.port=0000 demo-0.0.1-SNAPSHOT.jar >log8888.log
一般都是同级目录:
多掌握一个脚本去运行jar包的方法: 这也是看的别人博主的! 感谢!
首先脚本的名称为: auto_deploy.sh
这是源码:
#!/bin/bash
# 定义变量
# 要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
JAR_NAME="/opt/cdApp/demo-0.0.1-SNAPSHOT.jar"
# 日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
LOG_PATh=/opt/cdApp/log8888.log
# 如果输入格式不对,给出提示!
tips() {
echo ""
echo "WARNING!!!......Tips, please use command: sh auto_deploy.sh [start|stop|restart|status]. For example: sh auto_deploy.sh start "
echo ""
exit 1
}
# 启动方法
start() {
# 重新获取一下pid,因为其它操作如stop会导致pid的状态更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid为空时执行
if [ -z $pid ]; then
nohup java -jar $JAR_NAME > /dev/null 2>&1 &
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
echo ""
echo "Service ${JAR_NAME} is starting!pid=${pid}"
echo "........................Here is the log.............................."
echo "....................................................................."
tail -f $LOG_PATh
echo "........................Start successfully!........................."
else
echo ""
echo "Service ${JAR_NAME} is already running,it's pid = ${pid}. If necessary, please use command: sh auto_deploy.sh restart."
echo ""
fi
}
# 停止方法
stop() {
# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
if [ -z $pid ]; then
echo ""
echo "Service ${JAR_NAME} is not running! It's not necessary to stop it!"
echo ""
else
kill -9 $pid
echo ""
echo "Service stop successfully!pid:${pid} which has been killed forcibly!"
echo ""
fi
}
# 输出运行状态方法
status() {
# 重新获取一下pid,因为其它操作如stop、restart、start等会导致pid的状态更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid为空时执行。注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
if [ -z $pid ];then
echo ""
echo "Service ${JAR_NAME} is not running!"
echo ""
else
echo ""
echo "Service ${JAR_NAME} is running. It's pid=${pid}"
echo ""
fi
}
# 重启方法
restart() {
echo ""
echo ".............................Restarting.............................."
echo "....................................................................."
# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
# -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
if [ ! -z $pid ]; then
kill -9 $pid
fi
start
echo "....................Restart successfully!..........................."
}
# 根据输入参数执行对应方法,不输入则执行tips提示方法
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
tips
;;
esac
使用方法:
注意: 这里你只需要修改 JAR_NAME(linux服务器上面的 包路径) , 还有LOG_PATH(需要存放日志的路径)
然后 配置好这二个路径问题以后呢, 文件后缀为 sh
直接使用我这个文件 名称就行了 : auto_deploy.sh
上传到linux 服务器以后, 你需要使用 vi auto_deploy.sh 进入这个文件的内部;
然后使用 ESC 或者 使用输入法弄为大写 冒号+set ff 去查看对应文件的格式!!
因为在windows 系统修改的文件 它默认格式为 doc!!!
使用 :set ff unix 去修改文件格式 然后使用 :set ff 查看格式 wq强制保存退出
:set ff=unix 表示设置文件格式是unix格式
: set ff unix
使用 :set ff 去查看文件格式 也可以 :set fileformat 查看文件格式 或者 :set fileformat=doc / unix 或者 :set ff=unix / doc
在服务器运行脚本情况:
非运行截图:
sh auto_deploy.sh
sh auto_deploy.sh stop
sh auto_deploy.sh status
服务启动状态下截图:
sh auto_deploy.sh start
再次启动一下试试(此时会有提示:服务已经启动,启动状态下请使用重启命了):
sh auto_deploy.sh status 查看运行状态:
sh auto_deploy.sh restart 重启指令
sh auto_deploy.sh stop 停止指令
谢谢博主