Linux Screen Kill Challenge

2

Aqui está um desafio para todos vocês que estão por aí. Aqui está o meu problema:

Eu tenho uma máquina Linux executando 2 Scripts. 1 Script executa comandos que afetam o segundo script. O segundo script executa programas em um loop.

Por exemplo Script 1 - parar o script 2      Script 1 - iniciar script 2      Isso está na forma de serviço Script2 start / service Script2 stop. etc.      * Observe que o serviço Script2 start cria uma nova tela desanexada com o segundo script.

O segundo script é executado em um loop como:

  1. Executar script de atualização & Espere
  2. Executar primeiro jogo & Espere
  3. Executar segundo jogo & Espere

Os jogos tendem a rodar em suas próprias telas, então quando eles são mortos, o script principal não é. Então, se o jogo falhar, o Script2 não trava.

Aqui é onde está o problema. Eu preciso fazer com que, quando eu quiser parar o servidor, ele deve primeiro matar o jogo com segurança, por exemplo Dê tempo para que ele desligue. Em seguida, mate a tela Script2 e evite que o loop inicie o jogo novamente.

Alguma sugestão?

    
por Skowt 22.08.2012 / 19:21

1 resposta

1

Você precisará colocar uma instrução condicional em seu segundo script para verificar algum tipo de sinalizador ou sinal antes do loop. Se esse sinalizador ou sinal estiver presente, seu script deve sair corretamente.

Um sinalizador / sinal simples é verificar a presença de um arquivo, digamos, /var/run/SCRIPTstop ou similar. Quando você quiser parar o script, um touch SCRIPTstop é tudo o que é necessário.

Dependendo da sua linguagem de script, você poderá enviar um sinal UNIX usando kill : ou seja, killall -SIGUSR1 $SCRIPTNAME , etc.

Seu segundo script deve garantir que o arquivo seja excluído na inicialização e provavelmente seria bom fazer isso também antes de sair corretamente.

    
por 22.08.2012 / 19:48

Tags