Respuestas:
No puede programar el trabajo cada diez segundos, pero supongo que podría programar el trabajo para que se ejecute cada minuto y dormir en un ciclo en intervalos de 10 segundos. Esto se basaría en que su comando se complete antes de que expire el intervalo de diez segundos, o se superpondrá cuando se ejecute el siguiente comando. Esto parece una solución precaria, pero si puede garantizar una ejecución muy corta del comando principal del script, funcionaría.
#!/bin/bash
i=0
while [ $i -lt 6 ]; do
/run/your/command &
sleep 10
i=$(( i + 1 ))
done
Tuve una tarea similar la semana pasada. Mi solución fue multiplicar las entradas cron estándar a la frecuencia deseada. Mi crontab se ve así:
* * * * * /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 10; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 20; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 30; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 40; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 50; /usr/local/bin/php /var/www/myscript.php
Si desea verificar los resultados de myscript.php, por ejemplo, para depurar, simplemente agregue
&> /tmp/myscipt.log
a cada línea en el crontab de arriba. Luego, stderr y stdout se redirigen al archivo de registro.
Que haría uso de Monit y establecer el tiempo de ciclo de 10 segundos. Esta es una forma limpia de administrar esto fuera del sistema cron.
Hago esto con ciertos scripts que necesitan ejecutarse en un intervalo de 15 segundos.
Consulte: ¿Cómo realizar copias de seguridad incrementales / continuas del grupo zfs?
Si desea pasar menos de 10 segundos, por ejemplo, 5 segundos, le recomiendo hacer un bucle de trabajo con un pequeño script como ese:
#!/bin/bash
INTERVAL=5
while true; do
echo "do something"
# wait for next interval
WAIT_UNTIL=$(($(date +%s) + $INTERVAL))
while [ $(date +%s) -lt $WAIT_UNTIL ]; do
sleep 1
done
done
Si necesita ir por debajo del segundo, agregue microsegundos al comando de fecha.
* * * * * script to run
* * * * * sleep 10; script to run
* * * * * sleep 20; script to run
Aquí el script se puede ejecutar con el intervalo de 10 segundos ...