嗨,我是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
如果有人能给我一些解决这个问题的线索,我将很高兴。