2014-06-26 32 views
0

我正在使用RedHat(rhelsvrbase64-6.2)版本。 我已经编写了一个incron作业来将文件(即utf-16le格式)转换为UTF-8格式。创建多个文件的Incron作业

When i am running my job, It is creating multiple UTF-8 copies of my file. 

    My incrontab script is as follows: 

    **/home/sap/SRMArchive/incronTest IN_CLOSE_WRITE /usr/local/bin/test.sh [email protected] $#** 

    test.sh 

    **#!/bin/bash 
    echo "hi">>/var/log/my.log 
    echo $1>>/var/log/my.log 
    echo $2>>/var/log/my.log 
    file -bi $1/$2 >>/var/log/my.log 
    iconv -f utf-16le -t UTF-8 $1/$2 > $1/UTF8_$2** 

    When i am dropping any file to my '/home/sap/SRMArchive/incronTest' folder, The output i am getting is number of files named as follows : 

    UTF8_myFile.txt 
    UTF8_UTF8_myFile.txt 
    UTF8_UTF8_UTF8_myFile.txt 
    UTF8_UTF8_UTF8_UTF8_myFile.txt 
    ......... 
    ........ 


Thanks in advance 

回答

0

在这一行:

iconv -f utf-16le -t UTF-8 $1/$2 > $1/UTF8_$2** 

你正在创造你与incron观看同一个目录中的输出。当iconv完成写入文件时,会得到一个新的IN_CLOSE_WRITE事件,该事件会使用输出文件的名称触发脚本,等等。

理论上,你应该得到一个无限循环。

解决方法是(a)在不同目录中生成输出,或者(b)让脚本忽略以UTF8_开头的文件上的事件。