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 に答える