Как выбрать файлы взаимоисключающим способом через автомик? - PullRequest
0 голосов
/ 22 мая 2018

Мы получаем два разных файла за короткий промежуток времени от мейнфреймов. Мы не можем предсказать последовательность поступления файлов.Эти файлы должны выбираться двумя разными рабочими процессами.Но оно должно срабатывать взаимоисключающим образом.Другими словами, если один рабочий процесс выполняется, то другой рабочий процесс должен ждать предыдущего рабочего процесса.

1 Ответ

0 голосов
/ 23 мая 2018

Этого можно добиться, чтобы установить какой-либо флаг в общем месте.И каждое задание должно иметь доступ к этому местоположению, и если этот флаг установлен, тогда подождите, пока этот флаг не будет снят.

Исходя из вышеизложенного, я должен создать один файл на сервере Unix в определенном месте перед выполнением какого-либо одного рабочего процесса.Любой рабочий процесс видит этот файл в определенном месте, если этот файл существует, и ожидает, пока этот файл не будет удален предыдущим заданием, которое было запущено ранее.

Создание файла и ожидание удаления файла ниже - это сценарий unix.Что можно определить в первом задании рабочего процесса на вкладке Pre-process.

#!/bin/bash
while true
do
        files=$(ls /u/users/lock 2> /dev/null | wc -l)
        if [ "$files" != "0" ]
        then
              echo "Other <workFlow name> is running wait for 10 second"
                sleep 10
        else
              echo "<workFlow name > is not running so <current workflow name> is starting"
              touch /u/users/lock
              exit 0
        fi
done

Чтобы удалить файл в конце рабочего процесса, ниже приведен скрипт Unix.Этот скрипт должен быть определен в последнем задании на вкладке процесса.

#!/bin/bash
echo "<current workFlow name> is finshed so releasing the lock"
files=$(ls /u/users/lock 2> /dev/null | wc -l)
if [ "$files" != "0" ]
then
  rm /u/users/lock
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...