Я пытаюсь настроить ряд процессов, которые запускаются во время загрузки (серверы для игр), с помощью следующей команды в качестве элемента cron:
@reboot /usr/bin/screen -fa -d -m -S NAME COMMAND
Однако если по какой-либо причине происходит сбой сервера, и экран не закрывается, и сервер не получает возможности запустить его автоматический перезапуск (насколько я понимаю; экран не видит процессов в сокете и закрывается).
Есть ли способ, которым я могу обойти это, чтобы экран сидел там, даже если в нем ничего не работает? Как открыть оболочку?
cron
gnu-screen
Pez Cuckow
источник
источник
Ответы:
Данная команда является дочерней по отношению к экрану, поэтому при ее выходе окно становится мертвым.
Вы можете обойти это, запустив оболочку, а затем вставив ввод в окно, чтобы запустить команду, но это только меняет проблему, так что у вас останется длительное приглашение оболочки, и сервер не будет автоматически перезагружаться.
На самом деле, вы хотите запустить команду keep-alive, которая затем запускает интересующий вас сервер. Существует множество инструментов, но самое простое - написать что-то в оболочке самостоятельно (если вы не хотите использовать все возможности выделенных инструментов).
Строка 2 позволяет вам выйти из цикла, создав специальный файл (с «прикосновением»), имя-сервера-сервера - это программа, которая действительно запускается, «$ @» - чтобы пройти через опции, которые вызывал обертка и режим сна 1 означает, что если сервер умирает при запуске, вы не жуете весь ЦП, многократно перезагружая его тысячи раз в секунду, так что трудно войти и посмотреть, что происходит. Строка echo просто позволяет увидеть, когда сервер должен был быть перезапущен в последний раз.
источник