Для автоматического запуска Eggdrop в случае, если по какой-то причине процесс завершен, существует файл botchk, который находится в директории «/scripts», для его работы необходимо сделать следующее:
- Скопировать файл botchk в директорию в которой находится бот и его конфигурационный файл.
- Отредактировать его следующим образом:
Путь в которой лежит бот: botdir=«/home/eggdrop»Файл бота botscript=«eggdrop», в случае если запускаем через конфиг, то botscript=«eggdrop» имя_конфига
Ник бота, с соблюдением регистра botname=«Botnick»
Файл пользователей userfile=«file.user»
Пид-файл pidfile=«pid.Botnick»
сохраняем файл.
- сменить режим файла chmod +x botchk
- Запускаем редактрирование crontab пишем crontab -e
- Вписываем туда следующую строку: */5 * * * * /home/eggdrop/botchk >/home/eggdrop/myfile.log 2>&1, теперь проверка работы бота будет осуществляться каждые 5 минут, лог будет записываться в файл «myfile.log», отчет не будет присылаться на почту.
В случае с Windrop данный файл использовать не представляется возможным, в виду принципиального различия работы систем, поэтому рекомендую использоватья программу nncron.
Для автоматичекского запуска Windrop можно добавить следующий скрипт:
RunMissed /запускать просроченную задачу
AsLoggedUser /запускать от имени пользователя авторизованного в системе
Time: */3 * * * * * /проверка каждые 3 минуты
VARIABLE botpid /объявление переменной botpid
Rule: HOST-EXIST: «ip-адрес_хоста_где_сидит_бот» /правило: при существующем интернет-соединении
Action:
FILE-EXIST: «<путь_до_ПИД-файла>\pid.Botnick» /проверка наличия ПИД-файла
IF
S»<путь_до_ПИД-файла>\pid.Botnick» FILE S>NUM botpid ! /првоерка наличия ПИД бота
PROC-EXIST: «%botpid @%» /в списке процессов
IF /если есть
EXIT /выход
ELSE /если нет
FILE-DELETE: «<путь_до_ПИД-файла>\pid.Botnick» /удаляем ПИД-файл
THEN
THEN
SWHide NormalPriority
StartIn: «путь_до_Windrop»
START-APP: путь_до_Windrop\eggdrop.exe /снова запускем бота
)#
Скрипт далеко не идеален, например, если бот упал, по какой-либо причине, ПИД, записанный в файле, может совпадать с ПИД вновь запущенного процесса, поэтому повторного запуска не произойдёт.