首页 > 解决方案 > 如何在linux中检查日期是否更改

问题描述

我写了一个脚本来每天捕获 ngrep 日志。但是当日期更改时,它不会自动创建文件。

#!/bin/bash

month=$( date +%B )
mkdir -p /home/log/$month

NOW=$(date '+%Y%m%d')
LOGFILE1="/home/log/$month/5110_$NOW.txt"
LOGFILE2="/home/log/$month/5150_$NOW.txt"
LOGFILE3="/home/log/$month/5160_$NOW.txt"

while true
do
  ngrep -t -q -d any -W byline port 5110 >> $LOGFILE1 &
  ngrep -t -q -d any -W byline port 5150 >> $LOGFILE2 &
  ngrep -t -q -d any -W byline port 5160 >> $LOGFILE3
  exec bash
  sleep 2
done

请帮忙。

谢谢

标签: linuxbash

解决方案


您必须将变量定义移动到 while 循环中才能发生这种情况。

#!/bin/bash
while true
do    
month=$( date +%B )
mkdir -p /home/log/$month


NOW=$(date '+%Y%m%d')
LOGFILE1="/home/log/$month/5110_$NOW.txt"
LOGFILE2="/home/log/$month/5150_$NOW.txt"
LOGFILE3="/home/log/$month/5160_$NOW.txt"

ngrep -t -q -d any -W byline port 5110 >> $LOGFILE1 &
ngrep -t -q -d any -W byline port 5150 >> $LOGFILE2 &
ngrep -t -q -d any -W byline port 5160 >> $LOGFILE3
exec bash
sleep 2
done

推荐阅读