Я пытаюсь настроить много процессов, которые запускаются во время начальной загрузки (серверы для игр) с ниже команды как объект крона:
@reboot /usr/bin/screen -fa -d -m -S NAME COMMAND
Однако, если сервер отказывает для того, что когда-либо обосновывает экранные завершения, и сервер не получает шанс работать, это - автоматический перезапуск (насколько я понимаю; экран не видит процессов в сокете и так завершения).
Существует ли способ, которым я могу обойти это, так экранируйте, будет находиться там, даже если ничто не будет работать в нем? Как открытие оболочки?
Данная команда является ребенком экрана, поэтому когда это выходит, окно является глухим.
Можно обойти это, запустив оболочку и затем продвинув вход в окно выполнить команду, но это просто изменяет проблему так, чтобы Вас оставили с непрекращающимся приглашением оболочки, и сервер не перезапустится автоматически.
Действительно, Вы хотите выполнить активную команду, которая затем выполняет сервер, которым Вы интересуетесь. Там существует много инструментов, но самое простое должно записать что-то в оболочке самостоятельно (если Вы не хотите полной мощности специальных инструментов.
#!/bin/sh
while [ ! -f /home/servicename/shutdown-flagfile ]; do
echo "Starting server [$(date)]"
server-binary-name "$@"
sleep 1
done
Строка 2 позволяет Вам убежать из цикла путем создания специального файла (с "касанием"), двоичное имя сервера является программой для реального выполнения, "$" должен пройти через опции, что обертка была вызвана с, и сон 1 - то, так, чтобы, если сервер умирает на запуске, Вы не жевали весь ЦП, неоднократно перезапускающий его тысячи времен в секунду, так, чтобы было трудно войти и видеть то, что происходит. Строка эха просто позволяет Вам видеть, когда сервер в последний раз должен был быть перезапущен.