2017-09-27 8 views
0

毎分netstatコマンドログをキャプチャしようとしています。loop.Butで実行するスクリプトを作成しました。までスクリプトが実行され、が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 

スクリプト上記から出力される。 キャプチャログ

(iは次いでCRTL-Cを押すとそれはさらに動き、それは "1mのために眠っている"陳述を表示し、私はagを押す必要があるain crtl-cとなります)。

+0

CTRL + Cを押すまでどれくらい待っていましたか? netstat -l 5575の出力に時間がかかりすぎるのでしょうか? – mathB

+0

netstatの出力は非常に短いです。 – Ajinkya

答えて

0
sh test1.sh > test$i.log 

test1.shが完了するのを待っています。これはおそらく完了までに時間がかかります。

​​

のような別のttyにtest1.shを実行し、私に知らせてみてください。

同じttyで多くのプロセスを実行しないように注意してください。あなたはこれを避けるために[number_of_tty]で遊ぶことができます。

問題を解決できるかどうか、試してみる価値はあります。

+0

私はnumber_of_ttyに任意の数を使用できます。 setsid sh -c 'exec test1.sh <>/dev/tty01>&0 2>&1' – Ajinkya

+0

は、あなたが持っているttysの数に依存します。ディストロ? Btwを使用するほど、使用するリソースが増えます。私は一度に64のttysを持っていたし、高いcpuの負荷を(ループスクリプトでそれぞれ)持っていたので、睡眠のステップが確実に過負荷を避けるのに役立つように注意してください。 これは洗練された解決策ではありませんが、うまくいく可能性があります。それが無料かどうかを確認するためのttyチェックを実装してみてください。 netstatをデバッグして、完了までにどれくらいの時間がかかるかを確認することもお勧めします。 –

関連する問題