在linux中创建每日日志脚本



我正在尝试编写一个脚本,该脚本将生成一个每日日志文件,但目前,日志文件将所有日志附加在一个文件中,该文件为test.log。我可以生成具有日期扩展名的test.log,但它只会更改日期,test.log中的日志具有全天日志。我如何编写一个可以生成具有时间扩展名的每日日志的脚本。

NOW=$(date +"%F")
LOG_DIR=$OO_LOCAL{log-dir}
#CONSOLE_LOG="$OO_LOCAL{console-log}-$NOW.log"
CONSOLE_LOG="/log/springboot/test-$NOW.log"
TMP_DIR=$DIR/tmp
JAR_FILE="/app/$OO_LOCAL{artifact-id}/current/$OO_LOCAL{artifact-id}-$OO_LOCAL{artifact-version}.jar"
CMD="java $JAVA_OPTS $DISABLE_JIT -Djava.io.tmpdir=$TMP_DIR -jar $JAR_FILE 2>&1 >> $CONSOLE_LOG & echo $! >$PIDFILE"

输出-rw-r--r-1根8453324 6月30日11:38测试-2020-06-29.log-rw-r--r-1根11864615 7月2日15:36测试-2020-06-30.log-rw-r--r-1根1179215 7月3日12:25测试-2020-07-02.log

首先,如果您生成一个完整的示例会有所帮助,因为有些变量的定义并不明显。在CMD行中,您使用的是追加运算符而不是覆盖运算符(请参阅此答案(,但这只是问题的一部分。您应该首先研究cron作业的创建和测试,以了解您希望重复发生的任何事件。请参阅cron作业,并正确测试cron作业。

以下是我过去如何确定文件日期的。这些行属于一个文件,该文件是由cron作业每晚运行的脚本的一部分。

# get current directory name
ABSDIR=`pwd`
DIR=`basename $ABSDIR`
# form the name of the tarball from the directory name and the date
TBNAME="$DIR"-`date +"%F.%H.%M.%S"`.tgz

当我想创建带有时间戳的tarball时,我经常使用脚本本身。

有些人可能不喜欢这种格式,在这种情况下,您可以将反勾号转换为$((,例如:

# get current directory name
ABSDIR=$(pwd)
DIR=$(basename $ABSDIR)
# form the name of the tarball from the directory name and the date
TBNAME="$DIR"-$(date +"%F.%H.%M.%S").tgz

最新更新