Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

183
Visualizações
¿Cómo esperar a que se inicie un programa y luego ponerlo en segundo plano?

Tengo un programa para el que estoy escribiendo un script en /etc/init.d .

El problema es que el programa no se demoniza a sí mismo . Se tarda como 5 segundos en iniciarlo y, cuando se ha inicializado, imprime una cadena ("Iniciado correctamente") en la salida estándar.

Estoy buscando crear una secuencia de comandos que inicie el proceso, espere un momento a que aparezca la cadena y luego continúe con la secuencia de comandos, lo que indica falla o éxito (se encontró la cadena).

Obviamente esto no funciona como yo quiero.

 daemon $PROGRAM &

Bastante

 (./proc > some_output) & poll_output_for "Started OK" 10 secs or die
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Creo que podría usar expect para hacer algo como esto: consulte http://expect.sourceforge.net/ o http://en.wikipedia.org/wiki/Expect . Esto está en repositorios para muchas distribuciones, por ejemplo, en Ubuntu puede apt-get install expect .

Es un script para simular tu daemon:

 #/usr/bin/env /bin/bash # daemon.sh sleep 2 echo Started OK while :; do sleep 1; echo '.' >> daemon.log; done

... y aquí hay un script de expectativa que espera la salida y luego sale:

 #!/usr/bin/env /usr/bin/expect spawn -ignore SIGHUP ./daemon.sh expect "Started OK"

Expect no regresa hasta que llega la notificación "Comenzó correctamente". Cuando se cierra, el daemon obtiene un SIGHUP , pero lo ignoramos para que continúe ejecutándose. Si inspecciona el archivo de registro ( watch cat daemon.log ), el demonio debería estar funcionando.

No creo que sea demasiado difícil esperar que devuelva un código de error apropiado; eche un vistazo a la página de manual para obtener más información.

over 4 years ago · Santiago Trujillo Relatório

0

Si te entiendo, hay un programa que tarda unos 5 segundos en iniciarse, pero se ejecuta en segundo plano. Debe esperar a que se inicie este programa, y este programa seguirá imprimiendo "Iniciado correctamente".

Si este programa se inicia, se ejecuta en segundo plano, pero aún está conectado a la consola, por lo que puede escribir en la consola, es posible que pueda hacer algo como esto:

 $prog | tee $prog_out_file while true do sleep 2 grep -q "Started Ok" $prog_out_file && break done # Continue here...

La idea es seguir repitiendo hasta que veas "Started Ok" impreso en la salida redirigida.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda