Shell脚本不生成日志文件

时间:2017-09-27 07:43:59

标签: linux bash shell unix

我正在尝试捕获每分钟的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来说明“捕获日志声明”)。

1 个答案:

答案 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]来避免这种情况。

可以解决问题,但不能,但值得尝试。