Зачем он нужен?
Многие админы серверов сталкиваются с проблемой падения или остановки их сервера, есть куча логичных так и не очень ситуаций, когда это происходит:
- Самостоятельный reboot
- Ваш хостер проводил профилактику и снова же — reboot
- Ваш сервер крашнулся сам по себе
- Ваш сервер крашнули по какой-то неведомой уязвимости
- У Вас проблемы с NPL лицензией или соединением и сервер останавливается сам каждые два часа
Для решения всех, а особенно последних проблем есть просто, но эффективный скрипт, который на порядок удачнее всех мне известных способов автозапуска.
Выглядит он так:
#!/bin/bash TSS=`ps ax | grep ts3server | grep -v grep | wc -l` if [ $TSS -eq 1 ] then exit else /путь_до_вашего_TS_сервера/ts3server_startscript.sh start fi
Какова его механика?
Скрипт анализирует список запущенных задач, ищет ту, в которой присутствует искомое значение «ts3server», если оно есть — он сбрасывается.
Если же нет, вступает в силу вторая часть скрипта, она, при отсутствии в процессах сервера TS (упал, выключили, уронили), запускает его обратно классической командой запуска.
Все очень просто.
Готовый скрипт выглядит вот так:
#!/bin/bash TSS=`ps ax | grep ts3server | grep -v grep | wc -l` if [ $TSS -eq 1 ] then exit else /home/ts/teamspeak3-server_linux_amd64/ts3server_startscript.sh start
Как заставить его работать?
Мне на ум не приходит ничего проще чем банальный cron
* * * * * /home/ts/teamspeak3-server_linux_amd64/tss.sh > /dev/null
Эта команда в кроне означает, что каждую секунду сервер запускает наш скрипт, который сохранен в файле tss.sh.
Внимание!
Cron должен быть запущен под пользователем, на котором запущен сервер TS.
Не root!!!
Чем он лучше других скриптов автозапуска?
Когда не поможет?
- Если сервер не включился сам — скрипт не запустится, и программа сервера TS не стартанет
- Если при запуске произошла неразрешимая критическая ошибка (убилась база, умер хард с частью файлов или еще какая катастрофа)
- Если есть проблемы с лицензией и слотами (к примеру у вас был выключенный виртуальный сервер на 512 слотов, а при перезагрузке он почему-то решил включиться и сожрал все положенные по лицензии слоты)