Tá perdido? "Se ache"!!!!
1 - Introdução
Depois de um tempo percebemos que o processo de automatização da radio dá certo, porém, observamos dois problemas. No primeiro detectamos que a radio não ficava online por muito tempo, o processo em execução
ices2 é finalizado, por falta de conexão que leva ao fechamento do processo (ices-core/main Shutdown complete). O segundo problema é que as vezes a rádio esta online, mas não estava tocando música, o processo
mplayer, responsável por sua vez em reproduzir a
playlist de musicas, também é finalizado, por conta de vários motivos, desde uma musica que o programa não encontrou no diretório, até arquivos listados dentro da
playlist que não arquivos de áudio.
2 - A pesquisa
Para sana os problemas citados foi feita uma pesquisa para se descobrir se há possibilidade do sistema verificar e reativar os processos que não estão em execução. Não foram encontrados
pacotes prontos, no sistema de empacotamento de arquivos do Debian. Portanto, numa pesquisa refinada na internet foi descoberto um script que faz a verificação de execução de programas, disponível em
http://www.vivaolinux.com.br/topico/Shell-Script/Verificar-execucao-de-programa . Com isto veio a fase de adaptação do script para as nossas necessidades. Para solucionar o problema do processo ices2 foi adaptado o seguinte script:
#!/bin/bash
# Script do Vivaolinux
# SMarcell em Verificar execução de programa [RESOLVIDO]
# Disponivel em http://www.vivaolinux.com.br/topico/Shell-Script/Verificar-execucao-de-programa
# Adptação de Bruno Gonsalves para a o programa ices2
ps -C ices2 > /dev/null
if [ $? = 0 ]
then
echo "O programa esta rodando"
else
echo "Iniciando programa"
/usr/bin/ices2 /etc/radio/ices2_config_transmissao.xml &
fi
|
A primeira linha
ps -C ices2 > /dev/null procura pelo processo se esta ativo no sistema, caso a resposta seja positiva entra em ação as linhas
if [ $? = 0 ] ,
then,
echo "O programa esta rodando" . Caso a resposta seja negativa (≠ 0) as linhas
else ,
echo "Iniciando programa" ,
/usr/bin/ices2 /etc/radio/ices2_config_transmissao.xml &, são executadas. Esta explicação serve também para solucionar o problema do processo
mplayer com a adaptação seguinte:
#!/bin/bash
# Script do Vivaolinux
# SMarcell em Verificar execução de programa [RESOLVIDO]
# Disponivel em http://www.vivaolinux.com.br/topico/Shell-Script/Verificar-execucao-de-programa
# Adptação de Bruno Gonsalves para a o programa ices2
ps -C mplayer > /dev/null
if [ $? = 0 ]
then
echo "O programa esta rodando"
else
echo "Iniciando programa"
/usr/bin/mplayer -shuffle -playlist /HD_BK/administrador/Desktop/ListadeReproducao.pls &
fi
|
3 - O(s) outro(s) problema(s)
Com os script's prontos veio outro problema, como fazer para que os mesmos ficassem em execução, ou melhor, como de tempo em tempo estes script's fossem executados automaticamente no sistema. Poderíamos coloca-los na inicialização dentro do arquivo
/etc/rc.local, contudo estes script's não seriam executados de tempo em tempo. Então surgiu o estudo do software
cron, em pouca palavras, este software executa ações agendadas. O problema que ele é executado sob um serie de dependências, ou seja, para o
cron entrar em ação são necessários outros softwares. Então vamos as configurações. Como usuário de administração do sistema (root) vamos editar o arquivo
/etc/crontab.
bruno@debian:~$ su
Senha:
debian:/home/bruno# nano etc/crontab
|
Antes do sinal
# adicione a linha
0-59/5 * * * * root anacron, resultando em:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0-59/5 * * * * root anacron
#
|
Salve as modificações pressionando as teclas
Ctrl + o e feche o nano com
Ctrl + x. Agora vamos a agendar uma duas tarefas no crontab. Para abrir o “agendador” digite os comandos
su e depois
crontab -e.
bruno@debian:~$ su
Senha:
debian:/home/bruno# crontab -e
|
Depois vamos adicionar:
0-59/5 * * * * /home/administrador/radio/./verifica_transmissao.sh
0-59/6 * * * * /home/administrador/radio/./verifica_mplayer.sh
|
3.1 - Explicando
3.1.1 - Criando os script's
Vamos criar o script
./verifica_transmissao.sh. Execute
cd radio e depois
nano ./verifica_transmissao.sh.
bruno@debian:~$ cd radio
bruno@debian:~/radio$ nano verifica_transmissao.sh
|
Dentro do aquivo será adicionado:
#!/bin/bash
# Script do Vivaolinux
# SMarcell em Verificar execução de programa [RESOLVIDO]
# Disponivel em http://www.vivaolinux.com.br/topico/Shell-Script/Verificar-execucao-de-programa
# Adptação de Bruno Gonsalves para a o programa ices2
ps -C ices2 > /dev/null
if [ $? = 0 ]
then
echo "O programa esta rodando"
else
echo "Iniciando programa"
/usr/bin/ices2 /etc/radio/ices2_config_transmissao.xml &
fi
|
Depois salve as modificações pressionando as teclas
Ctrl + o e feche o nano com
Ctrl + x. Agora é a vez de criar o script
./verifica_mplayer.sh. Execute
nano ./verifica_transmissao.sh.
bruno@debian:~/radio$ nano verifica_mplayer.sh
|
Dentro do aquivo será adicionado:
#!/bin/bash
# Script do Vivaolinux
# SMarcell em Verificar execução de programa [RESOLVIDO]
# Disponivel em http://www.vivaolinux.com.br/topico/Shell-Script/Verificar-execucao-de-programa
# Adptação de Bruno Gonsalves para a o programa ices2
ps -C mplayer > /dev/null
if [ $? = 0 ]
then
echo "O programa esta rodando"
else
echo "Iniciando programa"
/usr/bin/mplayer -shuffle -playlist /HD_BK/administrador/Desktop/ListadeReproducao.pls &
fi
|
Agora é só salvar as modificações pressionando as teclas
Ctrl + o e fechar o nano com
Ctrl + x.
3.1.1 - Explicando o cron
Fizemos a edição do arquivo
/etc/crontab com a adição da linha
0-59/5 * * * * root anacron. Este arquivo é o que configura o
cron, a adição da linha, traduzindo fica assim: entre os minutos 0 e 59 de 5 em 5 minutos
(0-59/5), todas as horas
(*), todos os dias do mês
(*), todos os meses
(*), todos os dias da semana
(*), o usuário
(root), vai executar o comando
(anacron).
Em linha gerais o
anacron é parte do cron que deveria ser inicializado junto com o sistema. Depois editamos o “agendador” do cron com o comando
crontab -e e nele adicionamos as linhas:
0-59/5 * * * * /home/administrador/radio/./verifica_transmissao.sh
0-59/6 * * * * /home/administrador/radio/./verifica_mplayer.sh
|
Traduzindo:
0-59/5 * * * * /home/administrador/radio/./verifica_transmissao.sh
|
Entre os minutos 0 e 59 de 5 em 5 minutos
(0-59/5), todas as horas
(*), todos os dias do mês
(*), todos os meses
(*), todos os dias da semana
(*), será executado o script
(/home/administrador/radio/./verifica_transmissao.sh).
0-59/6 * * * * /home/administrador/radio/./verifica_mplayer.sh
|
Entre os minutos 0 e 59 de 5 em 5 minutos
(0-59/5), todas as horas
(*), todos os dias do mês
(*), todos os meses
(*), todos os dias da semana
(*), será executado o script
(/home/administrador/radio/./verifica_mplayer.sh).
4 - Referencias