Может пригодиться утилита watershed
(в дистрибутивах на основе Debian она устанавливается с apt install watershed
),
Описание: уменьшить лишние исполнения идемпотент команда
водоразделом можно управлять вокруг команды, так что любые дальнейшие попытки
Выполнение команды во время работы другой копии приведет только к одному
начальная дальнейшая попытка.
Чтобы использовать его, первый экземпляр (и все дальнейшие попытки) должен быть запущен с чем-то вроде:
watershed "OsiriX MD" &
Или, если OsiriX MD
нужен сам терминал:
watershed "OsiriX MD"
Сохраняет специальный файл блокировки в ~/.watershed/
, который позже будет проверен watershed
. Если OsiriX MD
все еще работает, watershed
будет ждать, пока не работает, а затем запустить его. Если OsiriX MD
не запущен, то watershed
запускает его.
Одна очевидная ошибка: третьи экземпляры, похоже, игнорируются. Например, предположим, что мы запускаем watershed mc
на терминале A, затем на терминале B, затем на терминале C. Мы увидим mc
на A, watershed mc
на B & C, оба ожидают. Теперь закройте mc
на A, и на B мы увидим новый экземпляр mc
, а на C watershed mc
все еще ждет. Теперь закройте mc
на B, и C покажет командную строку - третий экземпляр ждал без дела. С другой стороны, если бы мы подождали, пока мы закроем mc
на A, , тогда запустим watershed mc
на C, затем закроем mc на B, тогда mc
будет на C. Два экземпляра работают нормально.