디렉토리에서 새 파일을 감지하는 Unix 11i v2 스크립트

디렉토리에서 새 파일을 감지하는 Unix 11i v2 스크립트

누군가가 나를 올바른 방향으로 가리킬 수 있기를 바랍니다. 디렉터리에서 새 파일(오늘 날짜가 포함된 파일)을 확인한 다음 결과를 텍스트 파일로 인쇄하는 스크립트를 만들고 싶습니다. cron또는 을 사용할 수 있나요 bash?

편집: 원본 스레드를 업데이트했습니다. Linux Mint VM에서 다음을 시도했는데 성공적으로 작동했습니다. 유일한 문제는 다음과 같습니다.

1) 새 파일을 만들 때("sudo vi newtextfile.txt"를 사용한 다음 ":w" 사용) 알림 이메일을 받습니다.4 번.

2) 위에서 언급한 방법을 사용하여 새 파일을 생성하여 여러 IN_CREATE 이벤트를 트리거합니까?

/xyz/jon >>>
total 12
786436 drwxr-xr-x 2 root root 4096 Jul 13 20:43 .
786434 drwxr-xr-x 4 root root 4096 Jul 13 19:45 ..
786441 -rwxr-xr-x 1 root root 48 Jul 13 20:32 mylogger.sh
786437 -rw-r--r-- 1 root root 0 Jul 13 20:22 mylogtoday.txt


"incron.table-jonincron" >>>
/xyz/client IN_CREATE /xyz/jon/mylogger.sh


/xyz/jon/mylogger.sh >>>
sudo mail -s "testing script" [email protected]

답변1

안녕하세요. 좀 더 숙련된 분이 답변해주셨으면 좋겠습니다. HP-UX에는 상당히 오래된 System V 도구 상자가 있으므로 최신 GNU 도구는 없습니다.

HP-UX posix 쉘, /usr/bin/sh 매우 가깝습니다.크쉬 93. 따라서 두 파일의 수명을 비교하고 [[ file1 -nt file2 ]]값을 반환 할 수 있습니다.진짜file1새로운 것 보다 file2. HP-UX에서는 사용 하지 마십시오 /usr/bin/ksh. 매우 오래된 표준 korn-shell(1982년 것으로 추정)입니다.

이는 주기적으로 실행할 수 있는 간단한 스크립트입니다. 이름에 특수 문자가 포함된 파일과 기타 가능한 버그를 지원하려면 더 강화되어야 하는데, 저는 그게 잘 안 됩니다.
모니터링되는 파일은 DIR에 있으며 새 파일 목록은 /tmp/newfile입니다. 이 목록은 DIR의 모든 파일을 마지막 실행 중에 발견된 최신 파일과 비교할 때 생성되므로 런타임 시 새 파일 생성을 지원합니다. 스크립트는 여러 동시 실행을 지원하지 않으므로 잠금을 구현하거나 각 실행에 충분한 시간을 허용해야 할 수도 있습니다.

#!/usr/bin/sh

previous=/tmp/previous
new=/tmp/newfiles
DIR=/tmp/aa

if [[ ! -s $new ]]
then
    mv "$new" "$previous"
fi

if [[ ! -f "$previous" ]]
then
    ls -rt "$DIR" > "$new"
    exit
fi

ref=$(tail -1 "$previous")

if ! cd "$DIR"
then
    echo cannot cd "$DIR"
    exit 1
fi

ls -rt | while read file
do
        if [[ "$file" -nt "$ref" ]]
        then
             echo "$file"
        fi
done > "$new"

당신은 그것을 실행할 수 있습니다예약 된 일들, 예를 들어:

5분마다 한 번씩(hp-ux crontab은 *5 구문을 지원하지 않음)

0,5,10,15,20,25,30,35,40,45,55 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1

매시간

0 * * * * /myscript.sh >>/var/adm/myscript.log 2>&1

하루에 한 번

0 0 * * * /myscript.sh >>/var/adm/myscript.log 2>&1

답변2

디렉터리를 모니터링할 수 있는 항목을 원하시나요? incron은 다음과 같은 경우에 매우 편리합니다.
1. 저장소에서 incron을 설치합니다.
2. incron을 활성화합니다.

sudo systemctl enable incrond.service
sudo systemctl start incrond.service

3. 적절한 crontab을 생성합니다:

incrontab -e

콘텐츠로 추가되었습니다.

/path/to/watch IN_CREATE /path/to/mylogger.sh $@/$#

4. 로거 스크립트를 생성합니다:

cat <<EOF>> /path/to/mylogger.sh
#!/bin/bash
echo $1 >> /path/to/logfile
EOF
chmod +x /path/to/mylogger.sh

그게 다야.

관련 정보