我正在尝试捕获每分钟的netstat命令日志。我编写了一个循环运行的脚本。但是我的脚本执行直到捕获日志语句到test.sh代码中。
test.sh
#!/bin/sh
export TODAY=`date`
export i=0
while [ true ]
do
echo "capturing logs" $i
sh test1.sh > test$i.log
echo "sleeping for 1m"
sleep 60
i=$((i+1))
done
test1.sh
#!/bin/sh
netstat -l 5575 | while IFS= read -r line; do printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done
以上脚本的输出是: 捕获日志
(如果我按下crtl-c然后它进一步移动并显示“睡眠1米”语句,我需要再次按下crtl-c来说明“捕获日志声明”)。
答案 0 :(得分:0)
sh test1.sh > test$i.log
正在等待test1.sh完成,这可能需要很长时间才能完成。
尝试在另一个tty中执行test1.sh,如
setsid sh -c 'exec [launch the script] <> /dev/tty[number_of_tty] >&0 2>&1'
让我知道。
注意不要在同一个tty上运行很多进程。您可以使用[number_of_tty]来避免这种情况。
可以解决问题,但不能,但值得尝试。