В настоящее время я работаю над проектом по автоматизации ручного задания в моем офисе.У нас есть процесс, который мы должны повторно активировать некоторые из наших идентификаторов, когда они падают в ремонте.В рамках этого процесса мы должны извлечь эти идентификаторы из таблицы DB Oracle, а затем поместить файл на наш сервер Linux и выполнить команду, подобную этой:
Пример файла:
$cat /task/abc_YYYYMMDD_1.txt
23456
45678
... и т. Д.
cat abc_YYYYMMDD_1.txt | scripttoprocess -args
Я использую существующий код на основе Java, называемый «scripttoprocess».Я не вижу, что находится внутри этого кода, поскольку он зашифрован (кажется) в моем скрипте.Я просто иду в то место, где присутствуют мои файлы, и затем использую его так:
cd /export/incoming/task
for i in `ls abc_YYYYMMDD*.txt`;do
cat $i | scripttoprocess -args
if [ $? -eq 0];then
mv $i /export/incoming/HIST/
fi
done
scripttoprocess is и существующий скрипт.Я просто называю это своим собственным сценарием.Мой скрипт работает постоянно в фоновом режиме.Он просто ищет файл abc_YYYYMMDD_1.txt в каталоге / task и, если обнаруживает такой файл, начинает обработку файла.Но я заметил, что мой сценарий начинает обрабатывать файл задолго до того, как он будет полностью записан, и иногда перемещает файл в HIST без полной его обработки.
Как справиться с этой ситуацией.Я хочу быть полностью уверенным, что файл полностью записан, прежде чем я начну его обрабатывать.Во-вторых, есть ли способ получить контроль над файлом, например, подготовка контрольного файла, который содержит список файлов, которые находятся в каталоге / task.И тогда я могу отследить этот контрольный файл и выбрать имена файлов из него?Ваше руководство будет высоко ценится.