机器数据每15秒不显示输出

时间:2012-12-11 06:40:13

标签: bash sh iostat

以下脚本用于输出“vmstat”,例如每15秒输出一次,但出于某种原因,只有在有活动或我杀死脚本时才会这样做,在其他情况下它只是在那里。

#!/bin/bash
#!/bin/sh


ps -ef | grep -v grep | grep "vmstat 15" | awk '{ print $2 }' | xargs kill

ps -ef | grep -v grep | grep "iostat 15" | awk '{ print $2 }' | xargs kill

ps -ef | grep -v grep | grep "mpstat 15" | awk '{ print $2 }' | xargs kill

today=`date +%Y-%m-%d.%H:%M:%S`

find /var/log/ -name data_collection -type d -exec mv /var/log/data_collection /home/Beer/"data_collection_${today}" \;

mkdir -p /var/log/data_collection

vmstat 15 | /home/Beer/./addtimestamp.pl > /var/log/data_collection/vm_stat &
iostat 15 | /home/Beer/./addtimestamp.pl > /var/log/data_collection/ios_stat &
mpstat 15 | /home/Beer/./addtimestamp.pl > /var/log/data_collection/mp_stat &

我在猜测'&'最后的符号与此有关,我只这样做,所以我可以立即执行每个命令。

1 个答案:

答案 0 :(得分:0)

由于对mark a comment as an answer的功能请求仍然被拒绝,我在此处复制上述解决方案。

addtimestamp.pl中有什么?它可能是缓冲输入,并且每次读取内容时都不会刷新。 - Diego Basch

@DiegoBasch这是完全正确的,我只是添加了'$ | = 1;'到现在的Perl脚本,它开始工作,基本上将它设置为行缓冲区。我添加答案。 - 我是