2

Вот вызов всем, кто ты там, гробы. Вот моя проблема:

У меня есть машина Linux с 2 сценариями. 1 Скрипт запускает команды, которые влияют на второй скрипт. Второй скрипт запускает программы в цикле.

Например, Script 1 - остановить скрипт 2 Script 1 - запустить скрипт 2 Это в форме сервиса Script2 start / service Script2 stop. и т. д. * Обратите внимание, что служба Script2 start создает новый отдельный экран со вторым сценарием.

Второй скрипт выполняется в цикле, как:

  1. Запустите скрипт обновления и подождите
  2. Запустите первую игру и подождите
  3. Запустите вторую игру и подождите

Игры, как правило, запускаются на своих собственных экранах, поэтому, когда их убивают, основной сценарий - нет. Поэтому, если игра вылетает, Script2 не вылетает.

Вот в чем проблема. Мне нужно сделать так, чтобы когда я хочу остановить сервер, он сначала должен был безопасно завершить игру, например, дать время для его выключения. Затем убейте экран Script2 и предотвратите повторный запуск игры.

Какие-либо предложения?

1 ответ1

1

Вам нужно будет поместить условный оператор во второй скрипт, чтобы проверить какой-либо тип флага или сигнала перед циклом. Если этот флаг или сигнал присутствует, ваш скрипт должен завершиться корректно.

Простой такой флаг / сигнал должен проверять наличие файла, скажем /var/run/SCRIPTstop или подобного. Когда вы хотите остановить скрипт, все, что нужно, - это touch SCRIPTstop .

В зависимости от вашего языка сценариев вы можете отправить ему сигнал UNIX, используя kill: т.е. killall -SIGUSR1 $SCRIPTNAME и т.д.

Ваш второй скрипт должен гарантировать, что файл будет удален при инициализации, и, вероятно, было бы неплохо сделать это также перед чистым выходом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .