Use date "+%u"
para obter um dia numérico da semana (1 é segunda-feira).
if [ $(date "+%u") != "4" ]; then
cd /home/test/check
perl test.pl check.ini parameters
fi
Eu tenho um cenário em que preciso executar um script de shell de acordo com o dia em que ele é. aqui está o código:
cd /home/test/check
perl test.pl check.ini parameters
Eu quero executar essas duas linhas apenas se o dia não for uma quinta-feira se o dia for quinta-feira, não deverá executar as linhas a seguir. Como eu posso conseguir o mesmo? Eu sou novo em shell scripts, qualquer ajuda é apreciada.
Você pode usar crontab
para executar scripts em um determinado momento.
Editar crontab usando crontab -e
# Use the hash sign to prefix a comment
# +---------------- minute (0 - 59)
# | +------------- hour (0 - 23)
# | | +---------- day of month (1 - 31)
# | | | +------- month (1 - 12)
# | | | | +---- day of week (0 - 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
#--------------------------------------------------------------------------
, por exemplo, isso ocorre todos os dias às 11h59, exceto na quinta-feira. :
59 11 * * 1,2,3,5,6,7 nohup /usr/local/bin/perl /home/test/check/perl.pl check parameters > /tmp/script.log 2>&1
Isso ocorre seis dias por semana e é bastante autodocumentado. Substitua || com & & se você quiser correr apenas 1 dia, na quinta-feira.
cd /home/test/check
date | egrep '^Thu ' || perl test.pl check.ini parameters
Tags shell scripting shell-script rhel