Для определения, запущен ли инстанс fail2ban, используется функция getpid() { pid=`ps -eo pid,comm | grep fail2ban- | awk '{ print $1 }'` } При её запуске в хост-системе OpenVZ, она выдаёт список всех процессов во всех контейнерах. Надо придумать что-то более точное.
Было уже. Там же и решение описано. Актуальная версия fail2ban штатно создаёт .pid-файл (например, в юнит файле для systemd сейчас это используется). Надо только выкинуть костыли из SysV-скрипта. Но не нашлось желающих. *** This bug has been marked as a duplicate of bug 29756 ***