0

以下脚本旨在例如每 15 秒输出一次“vmstat”,但由于某种原因,它仅在有活动或我终止脚本时才执行此操作,在其他情况下它只是坐在那里。

#!/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 &

我猜最后的“&”符号与此有关,我这样做只是为了可以一次执行每个命令。

4

1 回答 1

0

由于将评论标记为答案的功能请求仍然被拒绝,因此我在此处复制上述解决方案。

addtimestamp.pl 中有什么?可能是它正在缓冲输入,而不是每次读取内容时都刷新。——迭戈·巴施

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

于 2013-09-04T09:31:05.663 回答