Crontab não funciona

1. Crontab não funciona

Danilo Martins
danilonthesky

(usa Ubuntu)

Enviado em 05/09/2017 - 09:27h

Galera,

Estou utilizando o CentOS e preciso que todo dia 1 de todos os meses seja executado o script2.sh:


#!/bin/bash
date '+%d %m %y'
#Variaveis data
DIA=$(date --date='1 days ago' +%d)
MES=$(date --date='1 days ago' +%m)
ANO=$(date --date='1 days ago' | awk '{print $6}')
DIAMESANO="$DIA-$MES-$ANO"
#Variavel para o endTime=
FINAL="endTime=$DIA-$MES-$ANO,"
#Comando sera executado pelo crontab todo final de mes (30 ou 31)
sed -i "s/endTime=.*,/$FINAL/" InternetFullVolumeMensal
#Variavel para o startTime=
INICIO="startTime=01-$MES-$ANO,"
#sed startTime
sed -i "s/startTime.*,/$INICIO/" InternetFullVolumeMensal

cd /opt/admin/monitor
monitor.sh -inputFile /opt/admin/RelatoriosMonitorCLI/Mensal/InternetFullVolumeMensal -outputFile /opt/admin/RelatoriosMonitorCLI/Mensal/$DIAMESANO.csv -volume >> /opt/admin/RelatoriosMonitorCLI/Mensal/moni.log



Portanto configurei o arquivo crontab da seguinte maneira:


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

1 0 1 * * root /opt/admin/RelatoriosMonitorCLI/Mensal/script2.sh
~


Porém o crontab não conseguiu rodar o script2.sh todo dia 1, sendo assim configurei para rodar a todo minuto para testar e para minha surpresa rodou, porém os resultados de saída foram incompletos como se o script não rodasse por completo como executado manualmente.


  


2. Re: Crontab não funciona

Phillipe Smith
SmithuX

(usa Arch Linux)

Enviado em 05/09/2017 - 14:55h

Os seus dois comandos SED estão apontando para o caminho relativo do arquivo, ou seja, se a HOME do cron está setada para /, o script está tentando encontrar o arquivo InternetFullVolumeMensal em /InternetFullVolumeMensal.

Portanto, ou você coloca o caminho completo do arquivo nos comandos SED do seu script, recomendado, ou você altera a HOME do cron para o local do arquivo.

#!/bin/bash
date '+%d %m %y'

# Caminho dos relatórios
RELATORIOS=/opt/admin/RelatoriosMonitorCLI/Mensal

#Variaveis data
DIA=$(date --date='1 days ago' +%d)
MES=$(date --date='1 days ago' +%m)
ANO=$(date --date='1 days ago' | awk '{print $6}')
DIAMESANO="$DIA-$MES-$ANO"
#Variavel para o endTime=
FINAL="endTime=$DIA-$MES-$ANO,"
#Comando sera executado pelo crontab todo final de mes (30 ou 31)
sed -i "s/endTime=.*,/$FINAL/" $RELATORIOS/InternetFullVolumeMensal
#Variavel para o startTime=
INICIO="startTime=01-$MES-$ANO,"
#sed startTime
sed -i "s/startTime.*,/$INICIO/" $RELATORIOS/InternetFullVolumeMensal

cd /opt/admin/monitor
monitor.sh -inputFile $RELATORIOS/InternetFullVolumeMensal -outputFile $RELATORIOS/$DIAMESANO.csv -volume >> $RELATORIOS/moni.log



"Não há nada como a liberdade!" (Nelson Mandela)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts