Solaris SMF: Mate com sinal personalizado, ou obtenha PID, ou evite a morte de crianças

2

No XML do serviço Solaris

Estou usando um kill para sinalizar um desligamento normal

<exec_method type="method" name="stop" exec=":kill" timeout_seconds="60" />

Isso funciona muito bem, exceto pelo fato de que ele também mata os processos filhos, que na maioria das vezes simplesmente morrem após um SIGTERM. Qualquer um desses funcionará

  • Obtenha o PID para poder usar exec="kill -SIGUSR1 $PID"
  • Evite que o SIGTERM seja enviado para as crianças. (ou pelo menos não os netos)
  • Use outro sinal

Eu preferiria não configurar um script separado que tenha que descobrir o pid. Eu farei isso se for preciso. Eu preferiria obtê-lo de uma variável de ambiente ou usar um comando interno SMF.

    
por George Bailey 01.07.2011 / 23:49

3 respostas

2

exec=":kill -USR1" faz o truque. Sem SIG .

Eu estava procurando por isso ao definir method="refresh" . O jperkin me mostrou o exemplo de exec=":kill -HUP" , enquanto o SmartOS usando exec=":kill -SIGHUP" resultou em "/sbin/sh[1]: exec: :kill: not found" .

    
por 05.03.2016 / 21:42
0

Tenho certeza que você pode fazer apenas exec="kill -SIGUSR1" .

    
por 02.07.2011 / 00:05
0

Isso ocorre porque pai e filho estão sob o mesmo contrato ("contrato homem" para mais informações)

Faça uso de "ctrun" ("man ctrun" para mais informações), isso criará o processo filho sob contrato diferente. Isso impedirá que as crianças sejam mortas quando os pais estiverem sendo mortos.

    
por 20.08.2013 / 10:49