2009-09-24 7 views

risposta

8

UNIX cron's API è il filesystem. C'è un comando crontab per l'installazione/modifica di crontabs utente. Il motivo principale del comando crontab è l'applicazione delle restrizioni di sicurezza agli utenti (ad esempio, /etc/cron.allow e /etc/cron.deny).

Le schede cron di sistema sono solo file inseriti in /etc/cron.d (e cron.daily/weekly/monthly). Non è necessaria alcuna cura particolare; basta rilasciare il file in posizione. Per citare cima /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. 

Il formato è lo stesso di crontabs utente, documentate nel crontab (5), ma con un campo di diritto utente prima del comando. Dove lo spazio significa spazi bianchi (uno o più) ed entrambi 0 e 7 media Domenica:

minuti di SPAZIO ora SPACE giorno-di-mese SPAZI mese SPACE giorno della settimana SPAZIO utente SPAZIO comando

Usando il normale accesso ai file POSIX non pestare i piedi a cron. Ricorda che rename avrà sempre il nome di destinazione che punta al vecchio o al nuovo file, mai a nulla. Quindi puoi scrivere il file con un nuovo nome e rinominarlo sopra quello vecchio.

Molti linguaggi di programmazione dispongono di API per semplificare la scrittura di crontabs. Ad esempio, CPAN (Perl) has several.

+1

Quindi se si rilascia un file in /etc/cron.d/, verrà rilevato da cron alla sua successiva iterazione nessun danno fatto? Non ho bisogno di passare attraverso crontab? – jldupont

+2

@ Jean-Lou Dupont: corretto. Puoi semplicemente rilasciare il file in /etc/cron.d. – derobert

-2

Non come tale, sebbene lo scripting di una modifica mediante crontab non sia così difficile. Quel genere di cose (lavorare attraverso strumenti di testo invece di aspettarsi un'API a livello di codice per le strutture di sistema) fa parte del paradigma Unix, davvero.

In alternativa, una "API cron" piuttosto banale può essere implementata utilizzando uno script rapido in qualsiasi lingua preferita e "sleep". :)

0

Si può sicuramente avvolgerlo. Vedi la gemma rubino Whenever.

0

Se si fa riferimento a un'API basata sul Web, abbiamo creato un'API REST che l'app Web può utilizzare per attivare callback/webhook con. Controlla SaturnAPI's Cron. Effettuate richieste HTTP per pianificare, visualizzare ed eliminare lavori. Di seguito è riportato un esempio per la pianificazione di un lavoro:

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' \