Para verificar se um arquivo está presente em um local, você pode usar o -f em uma instrução if.
if [ $FILE -f ]; then
(Como o the_velour_fog disse, a expressão retornará True mesmo que o arquivo esteja vazio)
Eu quero verificar o arquivo xx_x__x.log
está presente no local ou o tamanho do arquivo é 0 a cada domingo 2:30 da manhã. Eu tenho um script para verificar o tamanho do arquivo e verificar se ele existe, mas não sei como verificar em um determinado momento.
De man bash | less '+/^\s*CONDITIONAL'
-s file
True if file exists and has a size greater than zero.
Para fazer com que o script seja executado em um horário pré-definido, coloque seu código em um scipt executável e carregue-o em um cronjob.
Eu suspeito que você poderia colocar seu comando em um forro e carregá-lo em um crobtab? (Eu estaria interessado em saber se alguém fez isso com sucesso)
Mas o problema com os comandos do cron é que
lsof
ou algo assim} - para que você não obtenha nenhuma saída / feedback de depuração sobre o que deu errado ao construir seu cron comando por essas razões, eu recomendaria apenas colocar seus comandos em um script executável, para que você possa escrever seu código em um ambiente amigável ao codificador - ou seja, um terminal, e quando você estiver satisfeito com o comportamento correto, carregue um comando para chamar em um crontab
então diga que este é seu script /tmp/checksize.sh
#!/bin/bash
if [[ -s /tmp/xx_x__x.log ]]
then
printf "\n\n%s\n\n\n" true > /tmp/sizelog.log
else
printf "\n\n%s\n\n\n" false > /tmp/sizelog.log
fi
apenas execute crontab -e
e adicione o comando
5 0 * * * /tmp/checksize.sh
que significa: # executar cinco minutos depois da meia-noite, todos os dias
de man 5 crontab
Commands are executed by cron(8) when the minute, hour, and month of
year fields match the current time, and when at least one of the two
day fields (day of month, or day of week) match the current time (see
''Note'' below). cron(8) examines cron entries once every minute. The
time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
[...]
EXAMPLE CRON FILE
The following lists an example of a user crontab file.
# use /bin/bash to run commands, instead of the default /bin/sh
SHELL=/bin/bash
# mail any output to 'paul', no matter whose crontab this is
MAILTO=paul
#
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 2:15pm on the first of every month -- output mailed to paul
15 14 1 * * $HOME/bin/monthly
# run at 10 pm on weekdays, annoy Joe
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
5 4 * * sun echo "run at 5 after 4 every sunday"
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"
Tags files scheduling