
Estou desenvolvendo um script shell ksh no servidor AIX que deve ser executado exatamente às 13h todos os dias. Não tenho permissão para usar CRONTAB, AT, WATCH, inotify, date -d, etc. A única opção é usar para fazer com que o script faça um loop contínuo e seja executado em segundo plano.
while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done
Tentei o código acima, mas não quero que ele while
seja executado continuamente em segundo plano até que a condição se torne verdadeira. Sugira-me qualquer outra maneira de usar sleep
ou while
loop ou qualquer outra que seja executada apenas uma vez, em vez de continuamente.
Responder1
Eu só fiz isso em perl
e nunca usei ksh
, mas não vejo por que não deveria ser possível, mas fiz algo assim (provavelmente não é um código válido em qualquer idioma):
while(true)
starttime=`date +%s`
actions
sleep starttime+24*60*60-`date +%s`
end
Isso só faz com que as ações comecem a cada 24 horas. Meu pensamento era fazer com que ele rodasse às 13h, basta adicionar um loop no início que espera até as 13h. Pensando nisso talvez seja melhor substituir starttime+24*60*60
por algo como date -d "13:00 tomorrow" +%s
.