{"id":341,"date":"2010-08-03T01:21:39","date_gmt":"2010-08-03T01:21:39","guid":{"rendered":"http:\/\/blog.ufba.br\/radiofaced\/?page_id=341"},"modified":"2010-08-03T01:21:39","modified_gmt":"2010-08-03T01:21:39","slug":"radio-automatica2","status":"publish","type":"page","link":"https:\/\/blog.ufba.br\/radiofacedweb\/sobre\/como-funciona\/como-deixar-radio-faced-web-automatica\/radio-automatica2\/","title":{"rendered":"Radio Autom\u00e1tica2"},"content":{"rendered":"<h2 style=\"text-align: justify\">1 &#8211; Introdu\u00e7\u00e3o<\/h2>\n<p style=\"text-align: justify\">Depois de um tempo percebemos que o processo de automatiza\u00e7\u00e3o da radio  d\u00e1 certo, por\u00e9m, observamos dois problemas. No primeiro detectamos que a  radio n\u00e3o ficava online por muito tempo, o processo em execu\u00e7\u00e3o <em>ices2<\/em> \u00e9 finalizado, por falta de conex\u00e3o que leva ao fechamento do processo  (ices-core\/main Shutdown complete). O segundo problema \u00e9 que as vezes a  r\u00e1dio esta online, mas n\u00e3o estava tocando m\u00fasica, o processo <em>mplayer<\/em>, respons\u00e1vel por sua vez em reproduzir a <em>playlist<\/em> de musicas, tamb\u00e9m \u00e9 finalizado, por conta de v\u00e1rios motivos, desde uma  musica que o programa n\u00e3o encontrou no diret\u00f3rio, at\u00e9 arquivos listados  dentro da <em>playlist<\/em> que n\u00e3o arquivos de \u00e1udio.<\/p>\n<h2 style=\"text-align: justify\">2 &#8211; A pesquisa<\/h2>\n<p style=\"text-align: justify\">Para sana os problemas citados foi feita uma pesquisa para se descobrir  se h\u00e1 possibilidade do sistema verificar e reativar os processos que n\u00e3o  est\u00e3o em execu\u00e7\u00e3o. N\u00e3o foram encontrados <em>pacotes prontos<\/em>, no  sistema de empacotamento de arquivos do Debian. Portanto, numa pesquisa  refinada na internet foi descoberto um script que faz a verifica\u00e7\u00e3o de  execu\u00e7\u00e3o de programas, dispon\u00edvel em <a href=\"http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa\" target=\"_top\" rel=\"noopener\">http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa<\/a> . Com isto veio a fase de adapta\u00e7\u00e3o do script para as nossas  necessidades. Para solucionar o problema do processo ices2 foi adaptado o  seguinte script:<\/p>\n<table id=\"table1\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>#!\/bin\/bash\r\n# Script do Vivaolinux\r\n# SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO]\r\n# Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa\r\n# Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 \r\n\r\nps -C ices2 &gt; \/dev\/null\r\nif [ $? = 0 ]\r\nthen\r\necho \"O programa esta rodando\"\r\nelse\r\necho \"Iniciando programa\"\r\n\/usr\/bin\/ices2 \/etc\/radio\/ices2_config_transmissao.xml &amp;\r\nfi\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">A primeira linha <em>ps -C ices2 &gt; \/dev\/null<\/em> procura pelo processo se esta ativo no sistema, caso a resposta seja positiva entra em a\u00e7\u00e3o as linhas <em>if [ $? = 0 ]<\/em> , <em>then<\/em>, <em>echo &#8220;O programa esta rodando&#8221;<\/em> . Caso a resposta seja negativa (\u2260 0) as linhas <em>else<\/em> , <em>echo &#8220;Iniciando programa&#8221;<\/em> , <em>\/usr\/bin\/ices2 \/etc\/radio\/ices2_config_transmissao.xml &amp;<\/em>, s\u00e3o executadas. Esta explica\u00e7\u00e3o serve tamb\u00e9m para solucionar o problema do processo <em>mplayer<\/em> com a adapta\u00e7\u00e3o seguinte:<\/p>\n<table id=\"table2\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>#!\/bin\/bash\r\n# Script do Vivaolinux\r\n# SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO]\r\n# Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa\r\n# Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 \r\n\r\nps -C mplayer &gt; \/dev\/null\r\nif [ $? = 0 ]\r\nthen\r\necho \"O programa esta rodando\"\r\nelse\r\necho \"Iniciando programa\"\r\n\/usr\/bin\/mplayer -shuffle -playlist \/HD_BK\/administrador\/Desktop\/ListadeReproducao.pls &amp;\r\nfi\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 style=\"text-align: justify\">3 &#8211; O(s) outro(s) problema(s)<\/h2>\n<p style=\"text-align: justify\">Com os script&#8217;s prontos veio outro problema, como fazer para que os  mesmos ficassem em execu\u00e7\u00e3o, ou melhor, como de tempo em tempo estes  script&#8217;s fossem executados automaticamente no sistema. Poder\u00edamos  coloca-los na inicializa\u00e7\u00e3o dentro do arquivo <em>\/etc\/rc.local<\/em>, contudo estes script&#8217;s n\u00e3o seriam executados de tempo em tempo. Ent\u00e3o surgiu o estudo do software <strong>cron<\/strong>,  em pouca palavras, este software executa a\u00e7\u00f5es agendadas. O problema  que ele \u00e9 executado sob um serie de depend\u00eancias, ou seja, para o <strong>cron<\/strong> entrar em a\u00e7\u00e3o s\u00e3o necess\u00e1rios outros softwares. Ent\u00e3o vamos as  configura\u00e7\u00f5es. Como usu\u00e1rio de administra\u00e7\u00e3o do sistema (root) vamos  editar o arquivo <em>\/etc\/crontab<\/em>.<\/p>\n<table id=\"table3\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>bruno@debian:~$ su\r\nSenha:\r\ndebian:\/home\/bruno#  nano etc\/crontab\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Antes do sinal <strong>#<\/strong> adicione a linha <strong>0-59\/5 * * * * root anacron<\/strong>, resultando em:<\/p>\n<table id=\"table4\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre># \/etc\/crontab: system-wide crontab\r\n# Unlike any other crontab you don't have to run the `crontab'\r\n# command to install the new version when you edit this file\r\n# and files in \/etc\/cron.d. These files also have username fields,\r\n# that none of the other crontabs do. \r\n\r\nSHELL=\/bin\/sh\r\nPATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin \r\n\r\n# m h dom mon dow user   command\r\n17 *   * * *   root    cd \/ &amp;&amp; run-parts --report \/etc\/cron.hourly\r\n25 6   * * *   root   test -x \/usr\/sbin\/anacron || ( cd \/ &amp;&amp; run-parts --report \/etc\/cron.daily )\r\n47 6   * * 7   root   test -x \/usr\/sbin\/anacron || ( cd \/ &amp;&amp; run-parts --report \/etc\/cron.weekly )\r\n52 6   1 * *   root   test -x \/usr\/sbin\/anacron || ( cd \/ &amp;&amp; run-parts --report \/etc\/cron.monthly )\r\n0-59\/5 *    * * *   root    anacron\r\n#\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Salve as modifica\u00e7\u00f5es pressionando as teclas <strong>Ctrl +<\/strong> o e feche o nano com <strong>Ctrl + x<\/strong>. Agora vamos a agendar uma duas tarefas no crontab. Para abrir o \u201cagendador\u201d digite os comandos <strong>su<\/strong> e depois <strong>crontab -e<\/strong>.<\/p>\n<table id=\"table5\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>bruno@debian:~$ su\r\nSenha:\r\ndebian:\/home\/bruno#  crontab -e\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Depois vamos adicionar:<\/p>\n<table id=\"table6\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>0-59\/5 * * * * \/home\/administrador\/radio\/.\/verifica_transmissao.sh\r\n0-59\/6 * * * * \/home\/administrador\/radio\/.\/verifica_mplayer.sh\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"text-align: justify\">3.1 &#8211; Explicando<\/h3>\n<h4 style=\"text-align: justify\">3.1.1 &#8211; Criando os script&#8217;s<\/h4>\n<p style=\"text-align: justify\">Vamos criar o script <em>.\/verifica_transmissao.sh<\/em>. Execute <strong>cd radio<\/strong> e depois <strong>nano .\/verifica_transmissao.sh<\/strong>.<\/p>\n<table id=\"table7\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>bruno@debian:~$ cd radio\r\nbruno@debian:~\/radio$ nano  verifica_transmissao.sh\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Dentro do aquivo ser\u00e1 adicionado:<\/p>\n<table id=\"table8\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>#!\/bin\/bash\r\n# Script do Vivaolinux\r\n# SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO]\r\n# Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa\r\n# Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 \r\n\r\nps -C ices2 &gt; \/dev\/null\r\nif [ $? = 0 ]\r\nthen\r\necho \"O programa esta rodando\"\r\nelse\r\necho \"Iniciando programa\"\r\n\/usr\/bin\/ices2 \/etc\/radio\/ices2_config_transmissao.xml &amp;\r\nfi\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Depois salve as modifica\u00e7\u00f5es pressionando as teclas <strong>Ctrl + o<\/strong> e feche o nano com <strong>Ctrl + x<\/strong>. Agora \u00e9 a vez de criar o script <em>.\/verifica_mplayer.sh<\/em>. Execute <strong>nano .\/verifica_transmissao.sh<\/strong>.<\/p>\n<table id=\"table9\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>bruno@debian:~\/radio$ nano  verifica_mplayer.sh\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Dentro do aquivo ser\u00e1 adicionado:<\/p>\n<table id=\"table10\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>#!\/bin\/bash\r\n# Script do Vivaolinux\r\n# SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO]\r\n# Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa\r\n# Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 \r\n\r\nps -C mplayer &gt; \/dev\/null\r\nif [ $? = 0 ]\r\nthen\r\necho \"O programa esta rodando\"\r\nelse\r\necho \"Iniciando programa\"\r\n\/usr\/bin\/mplayer -shuffle -playlist \/HD_BK\/administrador\/Desktop\/ListadeReproducao.pls &amp;\r\nfi\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Agora \u00e9 s\u00f3 salvar as modifica\u00e7\u00f5es pressionando as teclas <strong>Ctrl + o<\/strong> e fechar o nano com <strong>Ctrl + x<\/strong>.<\/p>\n<h4 style=\"text-align: justify\">3.1.1 &#8211; Explicando o <em>cron<\/em><\/h4>\n<p style=\"text-align: justify\">Fizemos a edi\u00e7\u00e3o do arquivo <em>\/etc\/crontab<\/em> com a adi\u00e7\u00e3o da linha <strong>0-59\/5 * * * * root anacron<\/strong>. Este arquivo \u00e9 o que configura o <em>cron<\/em>, a adi\u00e7\u00e3o da linha, traduzindo fica assim: entre os minutos 0 e 59 de 5 em 5 minutos <strong>(0-59\/5)<\/strong>, todas as horas <strong>(<em>*<\/em>)<\/strong>, todos os dias do m\u00eas <strong>(<em>*<\/em>)<\/strong>, todos os meses <strong>(<em>*<\/em>)<\/strong>, todos os dias da semana <strong>(<em>*<\/em>)<\/strong>, o usu\u00e1rio <strong>(root)<\/strong>, vai executar o comando <strong>(anacron)<\/strong>.<\/p>\n<p style=\"text-align: justify\">Em linha gerais o <em>anacron<\/em> \u00e9 parte do cron que deveria ser inicializado junto com o sistema. Depois editamos o \u201cagendador\u201d do cron com o comando <em>crontab -e<\/em> e nele adicionamos as linhas:<\/p>\n<table id=\"table11\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>0-59\/5 * * * * \/home\/administrador\/radio\/.\/verifica_transmissao.sh\r\n0-59\/6 * * * * \/home\/administrador\/radio\/.\/verifica_mplayer.sh\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Traduzindo:<\/p>\n<table id=\"table12\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>0-59\/5 * * * * \/home\/administrador\/radio\/.\/verifica_transmissao.sh\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Entre os minutos 0 e 59 de 5 em 5 minutos <strong>(0-59\/5)<\/strong>, todas as horas <strong>(<em>*<\/em>)<\/strong>, todos os dias do m\u00eas <strong>(<em>*<\/em>)<\/strong>, todos os meses <strong>(<em>*<\/em>)<\/strong>, todos os dias da semana <strong>(<em>*<\/em>)<\/strong>, ser\u00e1 executado o  script <strong>(\/home\/administrador\/radio\/.\/verifica_transmissao.sh)<\/strong>.<\/p>\n<table id=\"table13\" style=\"text-align: justify\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" rules=\"rows\">\n<tbody>\n<tr>\n<td valign=\"top\" bgcolor=\"#ffffff\">\n<pre>0-59\/6 * * * * \/home\/administrador\/radio\/.\/verifica_mplayer.sh\r\n<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify\">Entre os minutos 0 e 59 de 5 em 5 minutos <strong>(0-59\/5)<\/strong>, todas as horas <strong>(<em>*<\/em>)<\/strong>, todos os dias do m\u00eas <strong>(<em>*<\/em>)<\/strong>, todos os meses <strong>(<em>*<\/em>)<\/strong>, todos os dias da semana <strong>(<em>*<\/em>)<\/strong>, ser\u00e1 executado o  script <strong>(\/home\/administrador\/radio\/.\/verifica_mplayer.sh)<\/strong>.<\/p>\n<h2 style=\"text-align: justify\">4 &#8211; Referencias<\/h2>\n<ul style=\"text-align: justify\">\n<li> Linux: Shell Script &#8211; Verificar execu\u00e7\u00e3o de programa [RESOLVIDO], disponivel em, <a href=\"http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa\" target=\"_top\" rel=\"noopener\">http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa<\/a><\/li>\n<li> Utilizando o crontab, disponivel em <a href=\"http:\/\/www.devin.com.br\/crontab\/\" target=\"_top\" rel=\"noopener\">http:\/\/www.devin.com.br\/crontab\/<\/a><\/li>\n<li> Proteja o Linux contra quedas de energia com o Anacron, disponivel em <a href=\"http:\/\/www.ibm.com\/developerworks\/br\/library\/l-anacron\/index.html\" target=\"_top\" rel=\"noopener\">http:\/\/www.ibm.com\/developerworks\/br\/library\/l-anacron\/index.html<\/a><\/li>\n<li> Usando cron e crontab para agendar tarefas, disponivel em, <a href=\"http:\/\/www.infowester.com\/linuxcron.php\" target=\"_top\" rel=\"noopener\">http:\/\/www.infowester.com\/linuxcron.php<\/a><\/li>\n<\/ul>\n<p style=\"text-align: justify\"><!-- fim id=\"btsPower\" --><strong> <\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1 &#8211; Introdu\u00e7\u00e3o Depois de um tempo percebemos que o processo de automatiza\u00e7\u00e3o da radio d\u00e1 certo, por\u00e9m, observamos dois problemas. No primeiro detectamos que a radio n\u00e3o ficava online por muito tempo, o processo em execu\u00e7\u00e3o ices2 \u00e9 finalizado, por falta de conex\u00e3o que leva ao fechamento do processo (ices-core\/main Shutdown complete). O segundo problema \u00e9 que as vezes a r\u00e1dio esta online, mas n\u00e3o estava tocando m\u00fasica, o processo mplayer, respons\u00e1vel por sua vez em reproduzir a playlist de musicas, tamb\u00e9m \u00e9 finalizado, por conta de v\u00e1rios motivos, desde uma musica que o programa n\u00e3o encontrou no diret\u00f3rio, at\u00e9 arquivos listados dentro da playlist que n\u00e3o arquivos de \u00e1udio. 2 &#8211; A pesquisa Para sana os problemas citados foi feita uma pesquisa para se descobrir se h\u00e1 possibilidade do sistema verificar e reativar os processos que n\u00e3o est\u00e3o em execu\u00e7\u00e3o. N\u00e3o 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\u00e7\u00e3o de execu\u00e7\u00e3o de programas, dispon\u00edvel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa . Com isto veio a fase de adapta\u00e7\u00e3o 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\u00e7\u00e3o de programa [RESOLVIDO] # Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa # Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 ps -C ices2 &gt; \/dev\/null if [ $? = 0 ] then echo &#8220;O programa esta rodando&#8221; else echo &#8220;Iniciando programa&#8221; \/usr\/bin\/ices2 \/etc\/radio\/ices2_config_transmissao.xml &amp; fi A primeira linha ps -C ices2 &gt; \/dev\/null procura pelo processo se esta ativo no sistema, caso a resposta seja positiva entra em a\u00e7\u00e3o as linhas if [ $? = 0 ] , then, echo &#8220;O programa esta rodando&#8221; . Caso a resposta seja negativa (\u2260 0) as linhas else , echo &#8220;Iniciando programa&#8221; , \/usr\/bin\/ices2 \/etc\/radio\/ices2_config_transmissao.xml &amp;, s\u00e3o executadas. Esta explica\u00e7\u00e3o serve tamb\u00e9m para solucionar o problema do processo mplayer com a adapta\u00e7\u00e3o seguinte: #!\/bin\/bash # Script do Vivaolinux # SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO] # Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa # Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 ps -C mplayer &gt; \/dev\/null if [ $? = 0 ] then echo &#8220;O programa esta rodando&#8221; else echo &#8220;Iniciando programa&#8221; \/usr\/bin\/mplayer -shuffle -playlist \/HD_BK\/administrador\/Desktop\/ListadeReproducao.pls &amp; fi 3 &#8211; O(s) outro(s) problema(s) Com os script&#8217;s prontos veio outro problema, como fazer para que os mesmos ficassem em execu\u00e7\u00e3o, ou melhor, como de tempo em tempo estes script&#8217;s fossem executados automaticamente no sistema. Poder\u00edamos coloca-los na inicializa\u00e7\u00e3o dentro do arquivo \/etc\/rc.local, contudo estes script&#8217;s n\u00e3o seriam executados de tempo em tempo. Ent\u00e3o surgiu o estudo do software cron, em pouca palavras, este software executa a\u00e7\u00f5es agendadas. O problema que ele \u00e9 executado sob um serie de depend\u00eancias, ou seja, para o cron entrar em a\u00e7\u00e3o s\u00e3o necess\u00e1rios outros softwares. Ent\u00e3o vamos as configura\u00e7\u00f5es. Como usu\u00e1rio de administra\u00e7\u00e3o 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&#8217;t have to run the `crontab&#8217; # 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 \/ &amp;&amp; run-parts &#8211;report \/etc\/cron.hourly 25 6 * * * root test -x \/usr\/sbin\/anacron || ( cd \/ &amp;&amp; run-parts &#8211;report \/etc\/cron.daily ) 47 6 * * 7 root test -x \/usr\/sbin\/anacron || ( cd \/ &amp;&amp; run-parts &#8211;report \/etc\/cron.weekly ) 52 6 1 * * root test -x \/usr\/sbin\/anacron || ( cd \/ &amp;&amp; run-parts &#8211;report \/etc\/cron.monthly ) 0-59\/5 * * * * root anacron # Salve as modifica\u00e7\u00f5es pressionando as teclas Ctrl + o e feche o nano com Ctrl + x. Agora vamos a agendar uma duas tarefas no crontab. Para abrir o \u201cagendador\u201d 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 &#8211; Explicando 3.1.1 &#8211; Criando os script&#8217;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\u00e1 adicionado: #!\/bin\/bash # Script do Vivaolinux # SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO] # Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa # Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 ps -C ices2 &gt; \/dev\/null if [ $? = 0 ] then echo &#8220;O programa esta rodando&#8221; else echo &#8220;Iniciando programa&#8221; \/usr\/bin\/ices2 \/etc\/radio\/ices2_config_transmissao.xml &amp; fi Depois salve as modifica\u00e7\u00f5es pressionando as teclas Ctrl + o e feche o nano com Ctrl + x. Agora \u00e9 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\u00e1 adicionado: #!\/bin\/bash # Script do Vivaolinux # SMarcell em Verificar execu\u00e7\u00e3o de programa [RESOLVIDO] # Disponivel em http:\/\/www.vivaolinux.com.br\/topico\/Shell-Script\/Verificar-execucao-de-programa # Adpta\u00e7\u00e3o de Bruno Gonsalves para a o programa ices2 ps -C mplayer &gt; \/dev\/null if [ $? = 0 ] then echo &#8220;O programa esta rodando&#8221; else echo &#8220;Iniciando programa&#8221; \/usr\/bin\/mplayer -shuffle -playlist \/HD_BK\/administrador\/Desktop\/ListadeReproducao.pls &amp; fi Agora \u00e9 s\u00f3 salvar as modifica\u00e7\u00f5es pressionando as teclas Ctrl + o e fechar o nano com Ctrl + x. 3.1.1 &#8211; Explicando o cron Fizemos a edi\u00e7\u00e3o do arquivo \/etc\/crontab com a adi\u00e7\u00e3o da linha 0-59\/5 * * * * root anacron. Este arquivo \u00e9 o que configura o cron, a adi\u00e7\u00e3o 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\u00eas (*), todos os meses (*), todos os dias da semana (*), o usu\u00e1rio (root), vai executar o comando (anacron). Em linha gerais o anacron \u00e9 parte do cron que deveria ser inicializado junto com o sistema. Depois editamos o \u201cagendador\u201d do cron com<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":329,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pgc_meta":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","episode_type":"","audio_file":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","date_recorded":"","explicit":"","block":"","filesize_raw":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-341","page","type-page","status-publish","hentry","entry"],"pgc_meta":"","_links":{"self":[{"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/pages\/341"}],"collection":[{"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/comments?post=341"}],"version-history":[{"count":0,"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/pages\/341\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/pages\/329"}],"wp:attachment":[{"href":"https:\/\/blog.ufba.br\/radiofacedweb\/wp-json\/wp\/v2\/media?parent=341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}