0

テキスト ファイルを別の場所にコピーしてから、このテキスト ファイルの内容を (ファイルを削除せずに) 削除できるようにする必要があります。

現時点で私はこれをやっています:

#!/bin/bash

count=0

    for filename in `find . -name "*_list" -print`
    do
      while read -r line
      do
        echo $line 
        sync
        echo "### Trace Info ###" > log.txt
        sync
        python worker.py "$line"
        echo $line > traces/trace$count.txt
        sync
        sync
        sleep 1
        sync
        sync
        cp log.txt traces/trace$count.txt
        #cp log.txt traces/log.txt
        sync
        sleep 1
        count=$((count+1))
      done < $filename
    done

しかし、同期とスリープを呼び出してもうまくいきません。代わりに、次のようなファイルを取得します:(注: python ファイルは log.txt CacheGrind に書き込まれません。

CachegrindMemMod/vg-in-place --tool=cachegrind --trace-children=yes /usr/sbin/mysqld 2>log.txt

cat trace10.txt | xxd
0000000: 2323 2320 5472 6163 6520 496e 666f 2023  ### Trace Info #
0000010: 2323 0a00 0000 0000 0000 0000 0000 0000  ##..............
0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

このトレースには、テキストであるはずの 4 MB のゼロがあります。

ls -la trace10.txt 
-rw-r--r-- 1 root root 4350121 2012-04-29 15:34 trace10.txt

私は、発生テキストを取得できないようにしているキャッシングが行われていると推測しています。どんなアイデアでも素晴らしいでしょう。

興味がある場合は、ファイルには、次のような CacheGrind の変更されたバージョンから取得されたメモリ アドレスのリストが含まれている必要があります。

Dw: 0x4916e30
Dw: 0x4916df0
Dw: 0x4916db0
Dw: 0x4916d70
Dr: 0x4916d30
Dr: 0x4916cf0
Dr: 0x4916cb0
Dr: 0x4916c70
Dr: 0x4916c30
Dr: 0x4916bf0
Dr: 0x4916bb0
Dr: 0x4916b70
Dr: 0x4916b30
Dr: 0x4916af0
Dr: 0x4916ab0

CacheGrind の修正版もここにあります

追加情報: 一部のファイルにヘッダーのみが含まれ、null データが含まれていないことに気付きました。これはまた、I / Oキャッシングの問題だと思います

4

1 に答える 1

1

その log.txt ファイルに書いているのは誰ですか? パイソンスクリプト?バックグラウンドで動作していますか?もしそうなら、なぜ(完了していない)ファイルをコピーしようとしていますか? bash スクリプトで同期しようとしているのはなぜですか?

  • スクリプトを拡張して、ログ ファイルをコマンド ライン パラメータとして許可し、各呼び出しが個別のファイルに書き込まれるようにします。
于 2012-04-29T22:57:11.840 に答える