Você não pode ficar abaixo da granularidade de um minuto com o cron. O que você pode fazer é, a cada minuto, executar um script que executa seu trabalho, aguarda 15 segundos e repete. A seguinte linha crontab iniciará some_job
a cada 15 segundos.
* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job
Esse script pressupõe que o trabalho nunca levará mais de 15 segundos. O script a seguir, um pouco mais complexo, cuida de não executar a próxima instância se demorar muito para ser executado. Ele depende de date
suportando o formato %s
(por exemplo, GNU ou Busybox, então você ficará bem no Linux). Se você colocá-lo diretamente em um crontab, observe que %
caracteres devem ser escritos como \%
em uma linha crontab.
end=$(($(date +%s) + 45))
while true; do
some_job &
[ $(date +%s) -ge $end ] && break
sleep 15
wait
done
[ $(date +%s) -ge $(($end + 15)) ] || some_job
Entretanto, observarei que, se você precisar executar um trabalho com a mesma frequência que a cada 15 segundos, o cron provavelmente será a abordagem errada. Embora os unices sejam bons com processos de curta duração, a sobrecarga de lançar um programa a cada 15 segundos pode ser não negligenciável (dependendo de quão exigente é o programa). Você não pode executar seu aplicativo o tempo todo e executá-lo a cada 15 segundos?