项目部署路径:
新建logs,用于存放日志。lib目录用于存放jar。bin目录用于存放启动脚本。
如下图所示:
lib目录下:
bin目录下
以restart-admin-post.sh为例
#!/bin/bash
# *******************************
# example
# cd bin/
# sh debug.sh
# ********************************
kill -9 $(netstat -lnp|grep 8086 | awk '{print $7}' | awk -F"/" '{print $1}')
cd /data/youzheng-scanqrcode-signseal/lib
chmod +755 platform-admin-post.jar
source /etc/profile
#cd ..
#ulimit -n 524280
cd /data/youzheng-scanqrcode-signseal/logs
JAVA_OPTS=""
nohup java -jar /data/youzheng-scanqrcode-signseal/lib/platform-admin-post.jar -Xms512M -Xmx512M -Xss256k $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext >> /data/youzheng-scanqrcode-signseal/logs/platform-admin-post-nohup.out 2>&1 &
kill -9 $(netstat -lnp|grep 8086 | awk '{print $7}' | awk -F"/" '{print $1}')
表示查找端口8086对应的进程,然后 kill掉 8086对应的进程
nohup java -jar /data/youzheng-scanqrcode-signseal/lib/platform-admin-post.jar -Xms512M -Xmx512M -Xss256k $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext >> /data/youzheng-scanqrcode-signseal/logs/platform-admin-post-nohup.out 2>&1 &
表示:以nohup的方式启动,将输出的日志 输出到 platform-admin-post-nohup.out文件中,而不是nohup.out中 没有此文件就自动新建。最后 一个&表示 以后台运行的方式启动。
nohup java -jar /data/youzheng-scanqrcode-signseal/lib/platform-admin-post.jar -Xms512M -Xmx512M -Xss256k $JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext &
如果启动方式改为这种 那么就会在
cd /data/youzheng-scanqrcode-signseal/logs 目录下生成nohup.out文件 用于存储日志。
如果其他jar包的启动也是这样的话,大家的日志都输入到同一个nohup.out文件中。
日积月累就会造成nohup.out文件太大。
下面讲解把nohup.out文件如何按天进行存储。
在/data/youzheng-scanqrcode-signseal/bin目录下,新建split_logs.sh文件。(sh脚本文件,最好通过touch xx.sh建立,不要通过windows系统建立,然后上传,否则会出现各种奇怪的问题。)
split_logs.sh内容如下。
#!/bin/bash
#获取前一天的日期
current_date=`date -d "-1 day" "+%Y%m%d"`
#复制文件,以每天的日志大小切分
cp /data/youzheng-scanqrcode-signseal/logs/nohup.out /data/youzheng-scanqrcode-signseal/logs/log_${current_date}.log
#最后清空原文件的内容
cat /dev/null > /data/youzheng-scanqrcode-signseal/logs/nohup.out
#清除logs目录下15天前旧日志文件
find /data/youzheng-scanqrcode-signseal/logs/ -mtime +15 -name 'log_*' -exec rm -rf {} \;
#修改文件的权限
chmod 777 split_logs.sh
设置定时任务,按每日凌晨零点 执行split_logs.sh 脚本
[root@iZ2zeddfx87fw4m4dlxu8dZ bin]# crontab -e
0 0 * * * root /data/youzheng-scanqrcode-signseal/bin/split_logs.sh#上面这种方式配置好后,发现定时任务没有启动。
#上面的配置是针对于当前登录用户的。但是没有生效
采用下面的方法配置定时任务:vim /etc/crontab
root@iZ2zeddfx87fw4m4dlxu8dZ data]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
0 0 * * * root /data/youzheng-scanqrcode-signseal/bin/split_logs.sh
上面这种配置方式会立即生效,不需要重启定时任务服务功能。
查看定时任务进程状态:
#表示每日 凌晨零点执行
0 0 * * * root /data/youzheng-scanqrcode-signseal/bin/split_logs.sh
#表示每5分钟运行一次命令
*/5 * * * * root /data/youzheng-scanqrcode-signseal/bin/split_logs.sh
注意:Linux下的crontab表达式和cron表达式是不同的。
手动执行 split_logs.sh脚本效果
sh split_logs.sh
将nohup.out中全部内容复制到log_20221225.log文件中了,自身已清空内容。
删除日志的命令,是以文件的修改时间为准,删除15天之前的。