2009-09-24 8 views

Respuesta

8

UNIX La API de cron es el sistema de archivos. Hay un comando crontab para instalar/editar crontabs de usuario. El motivo principal del comando crontab es imponer restricciones de seguridad a los usuarios (por ejemplo, /etc/cron.allow y /etc/cron.deny).

Las pestañas de cron del sistema son solo archivos colocados en /etc/cron.d (y cron.daily/weekly/monthly). No se necesita cuidado especial; solo deja caer el archivo en su lugar. Para citar a la parte superior de /etc/crontab:

# /etc/crontab: system-wide crontab 
# Unlike any other crontab you don't have to run the `crontab' 
# command to install the new version when you edit this file 
# and files in /etc/cron.d. These files also have username fields, 
# that none of the other crontabs do. 

El formato es el mismo que crontabs usuario, documentados en crontab (5), pero con un campo de usuario justo antes de la orden. Donde el espacio significa un espacio en blanco (uno o más) y ambos 0 y 7 media Domingo:

minutos a ESPACIO horas ESPACIO día de mes ESPACIOS meses ESPACIO días de la semana ESPACIO usuario ESPACIO comando

Usando el acceso a archivos POSIX normal no va a pisar los pies de cron. Recuerde, rename siempre tendrá el nombre de destino apuntando al archivo antiguo o nuevo, nunca a nada. Entonces puede escribir el archivo con un nuevo nombre y luego cambiarle el nombre por encima del anterior.

Muchos lenguajes de programación tienen API para ayudar a escribir crontabs. Por ejemplo, CPAN (Perl) has several.

+1

Así que si dejo caer un archivo en /etc/cron.d/, cron lo detectará en su próxima iteración sin daños? No necesito pasar por crontab? – jldupont

+2

@ Jean-Lou Dupont: Correcto. Solo puede soltar el archivo en /etc/cron.d. – derobert

-2

No como tal, aunque escribir una modificación con crontab no es tan difícil. Ese tipo de cosas (trabajar con herramientas de texto en lugar de esperar una API de nivel de código para las instalaciones del sistema) es realmente parte del paradigma de Unix.

Alternativamente, se puede implementar una "API de cron" bastante trivial usando una secuencia de comandos rápida en el idioma que prefiera y "dormir". :)

0

Definitivamente puede envolverlo. Vea la gema rubí Whenever.

0

En caso de que se refiera a una API basada en web, hemos creado una API REST que su aplicación web puede usar para desencadenar devoluciones de llamada/webhooks. Consulte SaturnAPI's Cron. Realiza solicitudes HTTP para programar, ver y eliminar trabajos. A continuación se muestra un ejemplo para programar un trabajo:

curl -X POST \ 
    https://saturnapi.com/cron/jobs \ 
    -H saturnapi-access-key:'YOUR_SATURNAPI_ACCESS_KEY' \ 
    -d dateTimeUTC='2015:09:25 14:30' \ 
    -d dateTimeFormat='YYYY:MM:DD HH:mm' \ 
    -d callbackURL='https://your.verified.domain.com' \ 
Cuestiones relacionadas