LINUX.ORG.RU

Как запускать обработку новых файлов в директории?

 


0

5

В директорию пишутся файлы с именами типа name1000.dat, name1001.dat и так далее. Файл может писаться около получаса. После того как он запишется надо запустить скрипт для его обработки. Как это сделать не вручную?

Товарищ выше все верно говорит (в случае, если у вас ГНУ/Линукс; если какая-то другая система на Линуксе, то тоже можно попытаться к inotify подмазаться).

А вообще — кем пишутся-то? Может быть, и нормальный способ есть.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 2)
Ответ на: комментарий от Zmicier

Пишутся сырые данные с нескольких детекторов программой, которая объединяет их по событиям. После того как записан ран нужно его обработать и построить некоторые гистограммы для оценки качества рана.

dmitry2
() автор топика
Ответ на: комментарий от dmitry2

Если файл открывается и дозаписывается - снаружи опредеделить способа определить что он записался окончательно нет.

Deleted
()
Ответ на: комментарий от dmitry2

А вообще — кем пишутся-то? Может быть, и нормальный способ есть.

Пишутся сырые данные с нескольких детекторов программой...
Пишутся ... программой...

Ну надо же! Программой! А я думал специально обученная обезьяна сидит и вбивает по телнету.

Zmicier ★★★★★
()

Мало данных о том как определить что файл уже готов для обработки

name1000.dat, name1001.dat

Например отследить что появился файл 1001, значит можно обрабатывать файл 1000

anonymous
()
Ответ на: комментарий от dmitry2

А программе нельзя указать что делать после записи файла/переключения на запись нового файла? Может внутри файла есть метка(признаки), по которой можно определить что файл готов, типа «конец файла»?

S_Paul ★★★★★
()
Ответ на: комментарий от Radjah

утянул из своего рекурсивного мониторинга директории с отслеживанием появления/удаления файлов/директорий и оставил только кусок отвечающий за мониторинг появления файлов в текущей директории

# echo "path/to/target/dir IN_CLOSE_WRITE /path/to/script \$@ \$# $%" > qamonit.conf
# cat /path/to/script
#!/bin/sh
DATE=`date +%d-%m-%Y_%H-%M`

export PAR1=$1
export PAR2=$2

name () {
if [ "${PAR1: -1}" = "/" ]; then
  ITEM="$PAR1$PAR2"
else
  ITEM="$PAR1/$PAR2"
fi
}

case $3 in
  IN_CLOSE_WRITE)
    name
    echo "$DATE. New file \"$ITEM\" has been added." >> inotify.log
    /path/to/processing_script "$ITEM"
  ;;
  *) echo "`basename $0`: nothing to do." && exit 1
  ;;
esac

nerve ★★
()
Последнее исправление: nerve (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.