Daemons com shell script

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

[ Hits: 34.868 ]

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

Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

MPlayer - The Movie Player

Configurando o Stardict com dicionário do Babylon

Switch HP + Gerenciador Console + VLAN + DMZ + CentOS com VLAN

CentOS como terminal server autenticando em Windows Server 2003 Active Directory com montagem automática de compartilhamentos de rede

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts