Shell Script Lançando Processos Filho

1

Disclaimer: Eu sou totalmente novo em scripts de shell, mas tenho um pouco de experiência em outras linguagens como PHP e Obj-C.

Estou escrevendo meu primeiro script daemon. Aqui estão os objetivos:

  • Eu quero que ele seja executado em segundo plano
  • Desejo que seja acionado por um script init.d que inclui comandos de início / parada / reinicialização
  • Eu quero que cada processo em um loop acione seu próprio subprocesso.
  • Quando o processo pai iniciado pelo script init.d é eliminado, quero que os subprocessos também morram.

Essencialmente, estou procurando o mesmo tipo de comportamento que parece ser muito comum entre softwares como apache, spamd, dovecot, etc. Mas, com base em minha pesquisa, não encontrei uma resposta única e simples como como esse tipo de coisa é alcançado.

Qualquer ajuda é muito apreciada.

    
por Matt James 05.06.2012 / 16:39

2 respostas

1

Você encontrará muitas informações muito boas lendo Gerenciamento de processos .

Além disso, observe os scripts init.d existentes e use-os como modelos à medida que você escreve os seus. Tenha em mente que alguns deles poderiam melhorar. Então tente não pegar nenhum mau hábito.

Você provavelmente vai querer escrever seus scripts no shell Bourne ( sh ) em vez de Bash, mas você pode aprender muito que é aplicável a ambos, lendo FAQs do Bash e Armadilhas do Bash .

    
por 06.06.2012 / 03:19
0

Aqui estão os passos.

  • Deixa o seu script / opt / path / test. Garanta seu executável

  • Garanta o seguinte conjunto de linhas na parte superior do script, logo após "#! / bin / bash"

    Para RedHat e primos:

    chkconfig: - Sequência # & Nível que você deseja iniciar "Por exemplo: - 91 35"

    description: Descrição do seu processo DAEMON

    processname: DAEMON NAME

  • Veja um script de exemplo no caminho /etc/init.d e tente imitar seu processo de início / parada / reinicialização ... [GRANDE PASSO ... não entrando nos detalhes]

  • Termine com "&" para executar seu script em segundo plano no script

    Por exemplo: - "/ opt / path / test &"

  • Copie o script para /etc/init.d location

  • Não, faça o chkconfig

    chkconfig --add test

    teste chkconfig em

  • Verificações

    chkconfig --list | teste grep

  • Faça o /etc/init.d/test stop / start / restart .. certifique-se de que seu processo está sendo executado.

por 06.06.2012 / 20:20