>[оверквотинг удален]
>> сервера. Если он там запущен, ничего не запускаете. Если запущенных процессов
>> на других серверах нет, запускаете.
> Это bad-way. Между проверкой и запуском процесс может быть запущен и на
> первой машине.
> Нужно вводить блокировку — например, через файл, который создаётся атомарной операцией
> (создание файла и эксклюзивная запись), писать в него PID и машину
> процесса, при старте проверять возможность создания блокировки, жив ли процесс,
> и т. д.
> Существуют уже готовые средства кластеризации приложений (HA-кластеры).
> Кроме того, это можно сделать с помощью HA-кластера виртуализации (того же Proxmox). Вы переусложняете.
Требования High Availability не было. Требования проверки здоровья процесса не было.
Нам ничего не рассказали о логике запуска этой программы. Мой ответ покрывает базовую часть, как из того, что есть, сделать проверку, запущен ли экземпляр программы на другом сервере. Если появятся уточнения, я разовью идею дальше.
Как вариант, роботу после входа писать в чат, что он вошёл в такое-то время. Все роботы, у которых вход до этого времени, должны немедленно выйти. Но это оффтопик для этого форума.