Нужно следить за сменой каталога и выполнять действия - PullRequest
1 голос
/ 25 февраля 2009

Во-первых: я не программист и не гуру Linux, просто должен работать с Linux, Oracle, сценариями оболочки.

Моя текущая задача состоит в том, чтобы отслеживать таблицу в Oracle (инструмент: sqlplus), и, если она содержит определенную строку, наблюдать каталог linux для растущего файла tmp и регистрировать его атрибуты (например, ls -l) каждые 5 секунд.

Самая важная часть: этот файл tmp будет удален, если вышеуказанная запись будет удалена из таблицы оракулов, и мне нужно последнее содержимое этого файла tmp.

Я не могу контролировать данные Oracle, только что получил права на запрос.

Доступны следующие инструменты: bash, awk, sed, старая версия perl, ruby ​​(не 1.9 *) и python (2.5). У меня нет прав на установку, поэтому большинство внешних библиотек недоступны. Я знаю, что могу запускать некоторые библиотеки из своего $ HOME, но у меня нет подключения к Интернету на этом компьютере: поэтому я не могу загрузить любую библиотеку.

Inotify недоступен (старое ядро).

Есть идеи, с чего начать / как это сделать? Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2009

Как насчет создания жесткой ссылки в другом каталоге, тогда, когда файл "исчезнет" в исходном местоположении, жесткая ссылка все равно будет иметь доступ к содержимому.

1 голос
/ 25 февраля 2009

Это уродливо и наивно ... но ...

#!/bin/bash

WASTHERE=0
MONITORING=/tmp/whatever.dat
LASTBACKUP=/tmp/mybackup.dat
LOGFILE=/tmp/mylog.log

# Just create an empty file to start with
touch "$LASTBACKUP"

while [ 1 ];
do
        if [[ ! -e "$MONITORING" ]]; then
                if [[ $WASTHERE -ne 0 ]]; then
                        echo "File is gone!  Do something with $LASTBACKUP";
                        WASTHERE=0
                fi
        else
                WASTHERE=1
                ls -l "$MONITORING" >> $LOGFILE
                cp "$MONITORING" "$LASTBACKUP"
        fi

        sleep 5
done

Неудачная часть этого заключается в том, что если что-то случится с файлом, который «отслеживается» во время спящего сценария (например, содержимое записывается в него), а затем файл удаляется до того, как сценарий активируется, вновь записанный содержимое не будет в «резервной копии».

...