Daemons com shell script

Neste artigo mostrarei como criar daemons em shell script no Linux.

[ Hits: 32.207 ]

Por: Joe Pereira Nascimento em 26/09/2011 | Blog: http://tiopatinhaslinux.sytes.net:2080


Incrementando o daemon



Agora vamos incrementar nosso daemon para ter mais controle sobre ele.

#!/bin/bash

LOCK=/tmp/daemon.lock
LOG=/tmp/daemon.log
YES=/tmp/on

control_c () {
        echo -e "\nacabou o daemon"
        rm $YES 2>/dev/null
        rm $LOCK 2>/dev/null
        exit 0
}

trap control_c INT HUP TERM
echo "#########################################" >> $LOG
echo "começa o daemon.sh `date`" >> $LOG

if [ ! -f $LOCK ]
then
        touch $LOCK

        while true
        do
                sleep 1
                if [ -f $YES ]
                then
                        echo "o arquivo $YES foi encontrado: `date`" >> $LOG
                        rm $YES 2>/dev/null
                        rm $LOCK 2>/dev/null
                        echo "termina o daemon.sh `date`" >> $LOG
                        break
                fi
        done
else
        echo "o daemon já está em execução"
        exit 0
fi                                    

Nosso daemon agora tem um objetivo! Execute-o e veja:

# ./daemon.sh

O objetivo deste daemon é verificar se existe o arquivo on na pasta /tmp. Quando encontrar o arquivo, o script irá gerar um retorno de log em /tmp/daemon.log.

Explanação:
  • LOCK = Variável com um arquivo de controle para não deixar outro daemon ser executado. A intenção é ter apenas uma instância do daemon.
  • LOG = Arquivo que registra as ocorrências na execução.
  • YES = Arquivo que o daemon espera para terminar sua execução.
  • control_c () = Uma função criada para ser executada em algum sinal recebida pelo comando trap.
  • trap = Comando que interpreta sinais do kernel do tipo INT (interrupção através do ctrl+c), HUP (sinal enviado pelo kill, mas sem a opção -9) e TERM (finalizar o processo com kill).
  • if/else = Condição para verificar se existe o arquivo /tmp/daemon.lock, caso exista retora mensagem.
  • while = Loop infinito para a condição if.
  • break = Parar o loop infinito e terminar o daemon.

Página anterior     Próxima página

Páginas do artigo
   1. Criando um daemon simples
   2. Incrementando o daemon
   3. Script de inicialização
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Como criar pacotes "task" para o APT

Integrando o Mercury e o XMMS

Utilizando o CUPS com estações Windows XP

Relato: Instalação mista dos sistemas Linux, MacOS e Windows na mesma rede

Engage - o dock do E17 - instalando no Debian Etch

  
Comentários
[1] Comentário enviado por fabio em 26/09/2011 - 22:11h

Grande Joe, sempre trazendo trabalhos interessantes.

Um abraço.

[2] Comentário enviado por edirlf em 27/09/2011 - 16:54h

Já para os favoritos.
Parabéns!!!!!!!

[3] Comentário enviado por nullck em 28/06/2012 - 08:20h

Que tal deixar o inicio do script assim:

#!/bin/bash
# /etc/init.d/daemon
# chkconfig: 2345 80 30
# description: alguma coisa


... continua script

Agora podemos adicionar na inicialização de distribuições like redhat como fedora, centos, redhat , usando chkconfig:

chkconfig --level 2345 daemon on

=D


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts