Dificuldade para executar um bash no crontab

1. Dificuldade para executar um bash no crontab

Robson Martins de Oliveira Junior
robsonmartins

(usa Ubuntu)

Enviado em 02/03/2024 - 19:28h

Fala galera, não estou conseguindo rodar um bash via crontab root.
Detalhe, uso ubuntu server 22.04

O bash tem o intuito de:
1ºparar o tomcat,
2º apagar arquivos especificos temporarios,
3ºrealizar um backup do meu postgres
4ºiniciar o tomcat
5º reiniciar meu servidor

Se eu chamar ele via terminal ele roda perfeito porém via crontab nada.

#!/bin/bash

#Parando o Tomcat

service tomcat stop

sleep 1m

#Começando Backup das Bases

su -c /opt/backup/Scripts/Script_Backup.sh postgres

#Rodando Vacuum

su -c /opt/backup/Scripts/vacuum.sh postgres

#Apagando arquivos

rm -rf /opt/backup/Bases/p*
rm -rf /opt/backup/Base/CariocaPneus_A*
find /opt/backup/Bases/C* -mtime +03 -exec rm {} \;

#Apagando arquivos tomcat
rm /opt/tomcat/logs/*
rm /opt/tomcat/temp/*
rm /opt/tomcat/webapps/Carioca/tmp/*
rm /opt/tomcat/.wine/drive_c/users/tomcat/Temp/*.tmp
rm /opt/tomcat/*.png
rm -rf /opt/tomcat/settings/config/saved/SOU_SETTINGS//grid.xml

#Iniciando Tomcat novamente

service tomcat start

sleep 6m


Esse é o conteudo e essa foi a linha adicionada no crontab:

00 19 * * * sh /opt/backup/rodar_diario.sh


Conseguem me ajudar?


  


2. Re: Dificuldade para executar um bash no crontab

Robson Martins de Oliveira Junior
robsonmartins

(usa Ubuntu)

Enviado em 02/03/2024 - 19:52h


Aparentemente o crontab log é esse:




3. Re: Dificuldade para executar um bash no crontab

Robson Martins de Oliveira Junior
robsonmartins

(usa Ubuntu)

Enviado em 02/03/2024 - 21:53h

Descobri que os comandos quando dão erros ou fazem output no SH pro usuário, eles travam o contrab de executa-los.

Logo só podem rolar comandos que sejam do tipo silenciosos.

Descobri tbm que pra ver o log do crontab é só:
grep CRON /var/log/syslog 


Descobri que a argumentação abaixo após o comando também ajuda a deixar silencioso, mas nem sempre resolve o problema:
 00 23 * * * sh /opt/backup/Scripts/Rodar_Backup.sh >/dev/null 2>&1 


Precisava descobrir um modo de parar o tomcat e startar ele pelo crontab, já tentei diversas coisas, porém sem sucesso.


4. Re: Dificuldade para executar um bash no crontab

Buckminster
Buckminster

(usa Debian)

Enviado em 04/03/2024 - 09:39h

O aviso 'No MTA (Mail Transfer Agent)' diz que não tem um servidor de email, instale, se quiser:
https://cronitor.io/guides/no-mta-installed-discarding-output
https://askubuntu.com/questions/222512/cron-info-no-mta-installed-discarding-output-error-in-the-sys...

Primeiro veja qual o shell padrão do teu sistema:
# echo $0

Não tem necessidade de colocar o Shell no Cron.
Ver qual é o Shell padrão é para colocar no início do script, no teu caso está #!/bin/bash, então o Shell padrão deve coincidir com o bash, caso não for, altere o script para o Shell padrão, por exemplo: #!/bin/sh.
A extensão .sh é a mesma independente do Shel utilizado.

Lembre de ter dado permissão de execução:
# chmod +x /opt/backup/rodar_diario.sh

Depois coloque no Cron usando crontab -e:
00 19 * * * /opt/backup/rodar_diario.sh

Mas caso quiser colocar o Shell no Cron:
00 19 * * * /bin/bash /opt/backup/rodar_diario.sh

Para mudar o shell padrão:
# chsh -s /bin/bash <<< mudará para o bash
# chsh -s /bin/sh <<< mudará para o sh


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts