linux 执行maven项目jar包,并指定日志路径

一. 启动脚本

# 获取当前脚本所处的目录
sh_dir=$(cd `dirname $0`; pwd)
echo ${sh_dir}
if [ ! -d "${sh_dir}/logs/" ];then
    mkdir ${sh_dir}/logs
    echo "日志文件夹 ${sh_dir}/logs创建成功"
fi
# 
cd ${sh_dir}
echo "开始启动..."
nohup java -jar test-jar-1.0-SNAPSHOT.jar 1>${sh_dir}/logs/out.log 2>&1 &
echo "启动成功,running..."

结合log4j2.xml配置如下:

<property name="FILE_PATH" value="logs/"/>

log4j2.xml完整配置见:

二. 启动命令解释

# 启动命令
nohup java -jar test-jar-1.0-SNAPSHOT.jar 1>${sh_dir}/logs/out.log 2>&1 &
开头的nohup和结尾的&:
使用nohup运行程序:

nohup 即 no hang up 不挂断

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C,程序关闭
  • 关闭session,程序免疫
使用&后台运行程序:
  • 结果会输出到终端
  • 使用Ctrl + C,程序免疫
  • 关闭session,程序关闭

平日线上经常使用nohup&配合来启动程序。

符号>
  • > 标准重定向符,允许我们创建一个 0KB 的空文件。它通常用于重定向一个命令的输出到一个新文件中。在没有命令的情况下使用重定向符号时,它会创建一个文件。
  • 1>${sh_dir}/logs/out.log , 1表示标准输出流(默认是屏幕),屏幕输出重定向到文件${sh_dir}/logs/out.log
  • 2>&1 ,2表示标准错误流(默认是屏幕),符号>&是一个整体,代表将标准错误2重定向到标准输出1,如果是2>1的话,代表将标准错误输出到文件1,而不是重定向到标准输出流;
  • 拓展:> /dev/null /dev/null 可以看作黑洞,等价于一个只写文件。所有写入它的内容都会永远丢失,尝试从它那儿读取内容则什么也读不到。也就是将所有产生的日志将被丢弃。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值