CRONTAB em Ubuntu Server [RESOLVIDO]

1. CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/10/2012 - 16:30h

Olá a todos!

Estou tendo problemas em executar um agendamento do CRONTAB em uma máquina Ubuntu Server 64bits (modo texto). Ver abaixo:

# 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 )
39 2 9 * * root /home/tasks/ShellScript/LimpezaPublica
49 2 9 * * root /home/tasks/ShellScript/LimpezaFTP
59 2 9 * * root /home/tasks/ShellScript/LimpezaLinksConfirmacao
45 8 * * 7 root /home/tasks/ShellScript/LimpezaEntulho
43 7 * * * root /home/tasks/ShellScript/ybss
48 7 * * * root /home/tasks/ShellScript/ValidataBuscaArquivo
52 7 * * * root /home/tasks/ShellScript/PortalEducacaoBuscaArquivo
56 7 * * * root /home/tasks/ShellScript/SuperAmmsBuscaArquivo
22 10,14 * * * root /home/tasks/ShellScript/ValidataEnviaRetorno
26 10,14 * * * root /home/tasks/ShellScript/PortalEducacaoEnviaRetorno
07 18,21 * * * root /home/tasks/ShellScript/nbss
######################################################

Na linha onde especifica a chamada para o scritp "LimpezaEntulho", pretendo executá-lo aos Domingos às 8:45. Todavia, esta chamada não está executando.

As demais linhas do agendamento estão funcionando normalmente, apenas a linha a qual tento executá-la no Domingo que não funciona. Já pesquisei na WEB onde encontrei que para referenciar o Domingo, utilizamos os números 6 ou 7. Já tentei os dois, mas nada.

Se executo o script manualmente este funciona, já no agendamento não. Estou desconfiado do parâmetro do dia da semana, é a única linha que uso esta condição, e a única que não funciona.

Alguém pode me ajudar?!


  


2. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2012 - 10:18h

Realizei nova pesquisa e vi que para identificar o Domingo no CRONTAB os parâmetros são 7 ou 0. Anteriormente havia tentado com 6 e 7. A rotina não executou. Neste final de semana tentei o parâmetro 0 (zero). Também não executou.

Alguém pode me ajudar ?!


3. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Marcelo Theodoro
mmxx

(usa openSUSE)

Enviado em 08/10/2012 - 10:31h

Dia da semana no crontab é realmente de 0-6.
Mas se tentou com 0 e não funcionou, deve ser outra coisa...
Esse script tá gerando saída na tela?
Tenta substituir eme temporariamente por um script mais simples, que mande um "ok" para um arquivo, por exemplo. Daí a gente consegue descobrir se o problema está na entrada do cron, ou se tem alguma coisa no script causando problemas...


4. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2012 - 10:56h

Olá mmxx,

Quando executo manualmente com ./LimpezaEntulho ele gera o arquivo de LOG com o conteúdo abaixo:

##### Procurando arquivos do tipo .mp3 - pesquisa realizada em Thu Oct 4 11:55:50 BRT 2012
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/01 - Ginete e Pico.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/02 - Farra no Sul.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/03 - Serrano, Sim Senhor!.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/04 - Credo em Cruz Ave Maria.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/05 - Paix\303\243o Brasileira.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/06 - Grudado nas Crinas.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/07 - Doutrina de Ga\303\272cho.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/08 - Bate-Coxa no Bail\303\243o.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/09 - Orgulho do Sul.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/10 - Baile Bom.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/11 - Flor na Arena.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/12 - Tem D\303\263.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/13 - Teu Beija-Flor.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/14 - Quando Ronca a Botoneira.mp3'
removed `/mnt/Checar/BSS-COMERCIAL/Luiz/Serranos/15 - Meu Basto.mp3'

O Script está funcionando quando executo manualmente, e ele apresenta as mesmas permissões (usuário, grupo de usuários, etc) que os demais Scripts. E os outros funcionam conforme seus agendamentos.

Este Script procura por arquivos (do tipo MP3) no servidor da empresa e os remove. É uma maneira que encontrei para que os usuários da rede não adionem arquivos pessoais (músicas e filmes) nos servidores.


5. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Marcelo Theodoro
mmxx

(usa openSUSE)

Enviado em 08/10/2012 - 11:08h

Mas esse log é redirecionado apenas para um arquivo? Realmente não tem nenhuma saída na tela?
Eu já tive algum problema com o crontab parecido com o seu.
E isso acontece porque tinha uma saída pra tela. Hoje eu redireciono tudo pra arquivos(ou então pro /dev/null), mesmo coisas que eu sei que pode não gerar saída, mas acho mais interessante garantir. rs


6. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2012 - 11:18h

Fiz um teste a pouco onde inseri a linha abaixo no CRONTAB
07 11 * * 1 root ll >Teste.txt

A linha acima funcionou, todavia criou um arquivo fazio em vez de listar os arquivos da pasta, no caso \root.

Abaixo segue o conteúdo do Script, nele uso muitas variáveis de ambiente. Será que pode ser isso?!


# Definindo as variaveis a serem utilizadas
log="/mnt/EntulhosProcurados.log"
maq="10.10.0.249"
mapa="Dados"
arq=(3gp 3GP aac AAC ac3 AC3 avi AVI flv FLV ogg OGG mov MOV mp3 MP3 mp4 MP4 mpeg MPEG mpg MPG rmvb RMVB wav WAV wma WMA wmv WMV)
#arq=(mp3 MP3)
tot=${#arq[@]}

# Definindo o ponto de montagem
cd /mnt
mkdir Checar
mount.cifs //$maq/$mapa /mnt/Checar -o credentials=/root/pwdc.txt,uid=1000,gid=1000,rw,umask=777

# Realizando a varredura dos elementos nos locais indicados
for((i<=0; i<$tot; ++i))
do
echo "##### Procurando arquivos do tipo .${arq[$i]} - pesquisa realizada em `date`" >>$log
find /mnt/Checar -name "*.${arq[$i]}" -exec ls -o {} \; >>$log
# find /mnt/Checar -name "*.${arq[$i]}" -exec rm -rfv {} \; >>$log
echo "" >>$log
echo "" >>$log
done

# Desmontando ponto de montagens criados
umount /mnt/Checar
rmdir Checar

# Renomear o caminho do arquivo LOG para o original
sed -i 's/mnt/Radio/g' $log
sed -i 's/Checar/'$mapa'/g' $log

# Apagando o conteudo das variaveis utilizadas
echo "##### Pesquisa finalizada em `date`" >>$log
unset log
unset maq
unset mapa
unset arq
unset tot




7. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2012 - 11:39h


mmxx,

Realizei outro teste onde alterei as informações do CRONTAB de forma que a rotina executasse hoje pelo dia do mês e horário:

30 11 8 * * root /home/tasks/ShellScript/LimpezaEntrulho

Também não funciou, aí resolvi ver o LOG (arquivo syslog) e observei o seguinte:

Oct 8 11:30:01 vm-UbuServer CRON[2652]: (root) CMD ( /home/tasks/ShellScript/LimpezaEntulho)
Oct 8 11:30:01 vm-UbuServer CRON[2651]: (CRON) info (No MTA installed, discarding output)


A mensagem "No MTA installed, discarding output" o que significa?! Ou o que eu teria que instalar?!


8. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Marcelo Theodoro
mmxx

(usa openSUSE)

Enviado em 08/10/2012 - 11:51h

wlfreitas escreveu:

Fiz um teste a pouco onde inseri a linha abaixo no CRONTAB
07 11 * * 1 root ll >Teste.txt

A linha acima funcionou, todavia criou um arquivo fazio em vez de listar os arquivos da pasta, no caso \root.

Abaixo segue o conteúdo do Script, nele uso muitas variáveis de ambiente. Será que pode ser isso?!


# Definindo as variaveis a serem utilizadas
log="/mnt/EntulhosProcurados.log"
maq="10.10.0.249"
mapa="Dados"
arq=(3gp 3GP aac AAC ac3 AC3 avi AVI flv FLV ogg OGG mov MOV mp3 MP3 mp4 MP4 mpeg MPEG mpg MPG rmvb RMVB wav WAV wma WMA wmv WMV)
#arq=(mp3 MP3)
tot=${#arq[@]}

# Definindo o ponto de montagem
cd /mnt
mkdir Checar
mount.cifs //$maq/$mapa /mnt/Checar -o credentials=/root/pwdc.txt,uid=1000,gid=1000,rw,umask=777

# Realizando a varredura dos elementos nos locais indicados
for((i<=0; i<$tot; ++i))
do
echo "##### Procurando arquivos do tipo .${arq[$i]} - pesquisa realizada em `date`" >>$log
find /mnt/Checar -name "*.${arq[$i]}" -exec ls -o {} \; >>$log
# find /mnt/Checar -name "*.${arq[$i]}" -exec rm -rfv {} \; >>$log
echo "" >>$log
echo "" >>$log
done

# Desmontando ponto de montagens criados
umount /mnt/Checar
rmdir Checar

# Renomear o caminho do arquivo LOG para o original
sed -i 's/mnt/Radio/g' $log
sed -i 's/Checar/'$mapa'/g' $log

# Apagando o conteudo das variaveis utilizadas
echo "##### Pesquisa finalizada em `date`" >>$log
unset log
unset maq
unset mapa
unset arq
unset tot



ll = ls, certo?
ll é algum tipo de alias? Se for, acredito que não funciona com shell script..(chute)
O ls normal deve funcionar.

"No MTA installed, discarding output"
MTA é Message(ou mail? rs) Transfer Agent.
É como se tivesse que enviar um email, mas não tem como. E daí e descarta a saída...

Se você executar esse script manualmente, ele realmente não imprime nenhuma saída na tela?
Não tinha visto esse erro antes, mas parece ser algo relacionado a saída sim...


9. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2012 - 12:21h

Ao executar manualmente, a mensagem que dá na tela é:

sed: -e expression #1, char 16: unknown option to `s`


Mas o Script funciona e gera o arquivo de LOG chamado "EntulhosProcurados.log" onde o conteúdo deste está abaixo:

##### Procurando arquivos do tipo .mp3 - pesquisa realizada em Mon Oct 8 12:14:27 BRT 2012

##### Procurando arquivos do tipo .MP3 - pesquisa realizada em Mon Oct 8 12:14:27 BRT 2012

##### Pesquisa finalizada em Mon Oct 8 12:14:28 BRT 2012


Inclusive o ponto de montagem é montado e desmontado sem apresentar erros.

Percebi realmente que o problema não é o CROTAB e sim "algo" contido no Script que não está executando no CRONTAB. (rsrsrs).


10. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Marcelo Theodoro
mmxx

(usa openSUSE)

Enviado em 08/10/2012 - 13:36h

wlfreitas escreveu:

Ao executar manualmente, a mensagem que dá na tela é:

sed: -e expression #1, char 16: unknown option to `s`


Mas o Script funciona e gera o arquivo de LOG chamado "EntulhosProcurados.log" onde o conteúdo deste está abaixo:

##### Procurando arquivos do tipo .mp3 - pesquisa realizada em Mon Oct 8 12:14:27 BRT 2012

##### Procurando arquivos do tipo .MP3 - pesquisa realizada em Mon Oct 8 12:14:27 BRT 2012

##### Pesquisa finalizada em Mon Oct 8 12:14:28 BRT 2012


Inclusive o ponto de montagem é montado e desmontado sem apresentar erros.

Percebi realmente que o problema não é o CROTAB e sim "algo" contido no Script que não está executando no CRONTAB. (rsrsrs).


rs
Esse erro deve ser algum erro de sintaxe em alguns dos sed's, né... Porque não tem suprimir esses seds? Ou redirecionar a saída de erros com 2>>...


11. Re: CRONTAB em Ubuntu Server [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2012 - 14:14h

mmxx,

Vou refazer o Script, testando cada bloco de comandos em separado, e executá-lo pelo CRONTAB. Só assim poderei filtrar a falha na executação do agendamento.


Vou finalizar este tópico. Assim que descobrir a causa, compartilho o resultado.
Obrigado pelas dicas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts