在bash中实现数据记录器

时间:2015-01-14 22:18:59

标签: bash

嗨,我是Bash脚本中的新手。

我需要记录来自特定IP地址的数据流并为每天生成一个日志文件作为" file- $ date.log" (即在00:00:00 UT关闭前一天的文件并创建对应的新文件) 我需要在屏幕上显示数据流时将其记录在文件中

我尝试这个解决方案,但效果不好,因为从不离开初始文件 显然,条件检查从不执行,而管道的第一个命令与常量字符串不同,如echo"某些东西"。

#!/bin/bash

log_data(){

 while IFS= read -r line ; do printf '%s %s\n' "$(date -u  '+%j %Y-%m-%d %H:%M:%S')" "$line";   done  

}

register_data() {
while : ;
    do 
    > stream.txt
    DATE=$(date -u "+%j %Y-%m-%d %H:%M")
    HOUR=$(date -u "+%H:%M:%S")
    file="file-$DATE.log"


    while [[  "${HOUR}" != 00:00:00  ]];
    do 

        tail -f stream.txt | tee   "${file}"  
        sleep 1
        HOUR=$(date -u "+%H:%M:%S")

    done
     > stream.txt
done
}

nc -vn $IP $IP_port | log_data >> stream.txt &
register_data 
如果有人能给我一些解决这个问题的线索,我将很高兴。

0 个答案:

没有答案