利用shell脚本执行java启动类,使用crontab定时任务定时切割日志文件

在项目中,程序部署到linux环境中,采用.sh的形式启动java程序的启动类
当然,前提是得将java的各种jar都放入到linux程序中,项目shell脚本如下:

#!/bash/bin


JAVA_HOME=/usr/local/jdk
export AMLSERVER_HOME=/home/**/server

CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
CLASSPATH=$CLASSPATH:$AMLSERVER_HOME/classes
CLASSPATH=$CLASSPATH:$AMLSERVER_HOME/lib/**.jar
...

export CLASSPATH
#export LANG=en_US.UTF-8
export LANG=zh_CN.utf-8

nohup $JAVA_HOME/bin/java -Xms1024m -Xmx4096m >> /home/**/console-`date +%Y-%m-%d`.log 2>&1 &

nohup 代表 no hang up (不挂起)
-Xms1024m -Xmx4096m 表示 java运行参数,可以查查具体代表的意思

ioc.controller.server.MainServer java启动类具体的位置(视情况修改)

nohup java -jar XXXXX.jar >logs/console.log 2>&1 & ,重定向写入到console.log文件,用了一个">“符号,在linux系统中,尖括号代表的是数据转移的作用,”>“表示覆盖写,”>>"表示追加写,因此,此处应该使用两个尖括号,表示追加写入,这样在清空文件时,写入位置置零,追加写入则从起始位置开始写入。

如果只加了一个右尖括号(>),则在清除日志文件时,在程序不杀死的前提下,即使使用cat /dev/null console.log 仍就无法将console.log的磁盘空间释放,只有将程序杀死的情况下 磁盘空间才会被释放。
使用**>>**就可以完美解决在不杀死程序的前提下,在不影响日志文件输入的情况下清空日志文件。如上所说,使用>>表示追加写入。写入位置从其实位置开始写入。

使用crontab 定时任务再完成日志的切割以及删除操作。
crontab -e -> 编辑定时任务
crontab -l -> 查看定时任务
crontab -r -> 删除定时任务(指的是删除所有定时任务,慎!)

于是我自己手动写个简单的sh脚本


#!/bin/bash

path="/日志目录/log"
log_path="/重定向的日志目录/logs"

cp ${path}/MainServer.log ${log_path}/MainServer-`date +%Y-%m-%d`.log

rm -f ${path}/MainServer.log

其中也可以直接cat /dev/null/${path}/MainServer.log 进行清空日志的操作
删除只是更彻底些,shell脚本输出日志时还是会生成MainServer.log文件,
在此处删除和清空我个人觉得效果一样
当然还有其他的清空操作,例如:echo “” >MainServer.log

可以再进行优化做监测日志 过大过多再进行删除的操作。

> file 表示将标准输出输出到file中,也就相当于 1>file

2> error 表示将错误输出到error文件中

2>&1 也就表示将错误重定向到标准输出上

2>&1 >file :错误输出到终端,标准输出重定向到文件file,等于 > file
2>&1(标准输出重定向到文件,错误重定向到标准输出)。

& 放在命令到结尾,表示后台运行,防止终端一直被某个进程占用,这样终端可以执行别到任务,配合 >file
2>&1可以将log保存到某个文件中,但如果终端关闭,则进程也停止运行。如 command > file.log 2>&1 & 。

nohup放在命令的开头,表示不挂起(no hang
up),也即,关闭终端或者退出某个账号,进程也继续保持运行状态,一般配合&符号一起使用。如nohup command &。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值