RedHatサーバーには、平均3時間の種類の3GBのaproxファイルを生成するMicrofocus COBOLプログラムが含まれています。プログラムは出力ファイルをディレクトリ/my_test/files/
に直接書き込みます。出力ファイルの中にランダムにヌル文字が書かれているのはなぜですか?
問題は、(ランダムに)生成されるファイルの中に、ファイルの途中にヌル文字セクションが含まれていることです。私がそれらをチェックすると、(同じ入力パラメータで)スクリプトを再実行すると、出力ファイルは完全に生成されます(nullcharsは含まれません)。私はそれを何度もチェックしましたが、私はCOBOLプログラムの欠陥ではないことを確信しています(彼らはかなり単純な操作を使用しています)。そのフォルダの使用空間は40%です。
一部のプログラムはデータベースを更新し、リターンコード0で終了した場合は変更がコミットされますが、バックアップはありませんので、これは私がやっていることのポイントです。
これが問題COBOLプログラムの一つのファイル宣言の例です。
FILE-CONTROL.
SELECT MYFILE
ASSIGN TO MYFILE
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD MYFILE
LABEL RECORD STANDARD
RECORDING MODE F.
01 REG-OUTPUT PIC X(400).
私もNULLファイルの前にCOBOLプログラムにヌルをチェックしましたが、残念ながら何のヌルが存在しません発見された。
は、それから私は、次のスクリプトを各5秒を実行crontabファイルを作成する方法について考えた:
if [[ -f /tmp/sorry_im_working ]]; then
exit
fi
trap 'rm -rf /tmp/sorry_im_working' EXIT
touch /tmp/sorry_im_working
lsof | awk 'BEGIN{
sfiles="";
} {
if($1=="PROGRAM" && $9~/my_test\/files/){
sfiles=sfiles" "$9
}
}END{
comm="find "sfiles" -newermt \x27-2 seconds\x27 -exec env LC_ALL=C bash -c \x27grep -Pq \x22\x5Cx00{200}\x22 <(tail -c 1000 {}) && echo {}\x27 \x5C\x3B";
while(comm | getline sout){
print sout;
};
close(comm);
}' >> /home/ouhma/nullfiles.txt
したがって、私はあなたに以下の質問お願いしたいと思います:何が起こっているのかの任意のアイデアを
- をここに?
- 最新の変更ファイルをトリガーする他の方法はありますか?
- 私のログには、他に興味のある情報はありますか?
出力ディレクトリはNFSマウントされていますか? – chepner
そうだと思います。とにかく、明日までサーバーにアクセスすることはできません...: – harrison4
Microfocusで処理されているファイルをチェックすると、ヌル文字があることに驚くことはありません。出力ファイルをチェックするためにCobolプログラムの終了を待つ必要があります。 –