2009-11-05 9 views
5

Sto cercando di familiarizzare con i lavori di cron, e penso di avere l'idea di base (pianificazione, sintassi, ecc.), Ma, non riesco a capire bene mac con Terminale - dove esattamente trovo il Crontab? Come dovrei fare riferimento ai percorsi degli script?Iniziare con cronjobs su un Mac

Quello che sto cercando di fare è premere uno script php su una macchina remota (http://...) - È possibile?

risposta

4

per iniziare con launchd (al posto di cron) ti consigliamo di creare prima un file vuoto .plist, ad esempio local.mytask.plist e metterlo da qualche parte. ~/Library/LaunchAgents è probabilmente un buon posto. All'aperto che in editor di testo e copiare il codice qui sotto

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>KeepAlive</key> 
<false/> 
<key>Label</key> 
<string>local.mytask</string> 
<key>ProgramArguments</key> 
<array> 
<string>/opt/local/bin/wget</string> 
<string>http://someserver/somepage.php</string> 
</array> 
<key>StartInterval</key> 
<integer>300</integer> 
<key>RunAtLoad</key> 
<true /> 
<key>StandardErrorPath</key> 
<string>/dev/null</string> 
<key>StandardOutPath</key> 
<string>/dev/null</string> 
</dict> 
</plist> 

Poi "attivare" il file dalla riga di comando:

sudo launchctl load /Users/my_username/Library/LaunchAgents/local.mytask.plist 

Per rendere più caricare automaticamente, creare un file ~/.launchd.conf con la stessa linea (meno sudo launch)

load /Users/my_username/Library/LaunchAgents/local.mytask.plist 

Le istruzioni di cui sopra sopra sono stati copiati da www.davidlanier.com e ripubblicato qui per il tuo riferimento.

+0

Grazie ragazzi, tutte le vostre risposte sono state molto utile Ho finito per utilizzare manualmente Launchd (Lingon era effettivamente helfull con anche la sintassi). Si noti che non è possibile utilizzare wget su un Mac out-of-the-box, quindi ho usato ricciolo invece: \t /usr/bin/ricciolo \t -s \t http: //myserver.com/myscript.php Adam

+0

Ho notato quando il file si trova effettivamente in /Users/my_username/Library/LaunchAgents/local.mytask.plist, si carica automaticamente quando si accede, anche senza il ~/.launchd.conf – commonpike

1

Cron è stato sostituito da launchd dal 10.4. Probabilmente dovresti scrivere le tue attività usando questo a meno che non pianifichi di portarle su sistemi Linux/Unix ad un certo punto.

Se si decide di andare con cron comunque, provare a digitare crontab -e o sudo crontab -e. Questi ti daranno diversi file crontab, il primo per l'utente che stai correntemente eseguendo e il secondo per l'utente root.

"Colpire" un URL può essere ottenuto in molti modi. A seconda dello script locale che si sta utilizzando per "colpirlo", è possibile utilizzare alcuni dei metodi/classi incorporati nella lingua. Ad esempio, uno script Ruby userebbe net/http ma potresti provare anche a arricciare se stai solo scrivendo uno script bash. Fare man curl per saperne di più, ma il comando di base è solo curl http://google.com.

+1

cron non è in esecuzione di default su 10.4 e superiore, dovrete attivarlo prima. Dalla memoria la pagina di manuale crond mostra come fare – saschabeaumont

+0

+1 Buono a sapersi.Il pensiero che sarebbe stato disabilitato non mi è nemmeno venuto in mente –

+1

Ultimi letti, cronjobs in OS X sono implementati * via * launchd, quindi la differenza potrebbe essere discutibile ... –

8

Tipo crontab -e per modificare il tavolo cron e crontab -l per elencare il contenuto corrente .. Tipo man 1 crontab per più informazioni il comando e man 5 crontab per maggiori informazioni sul formato del file tabella di cron.

Ad esempio, per scaricare la pagina StackOverflow ogni giorno alle 10: 00a, eseguire crontab -e, immettere questa riga, quindi salvare/uscire. L'output verrà scritto su un file nella tua home directory.

0 10 * * * /usr/bin/curl -s http://stackoverflow.com > ~/stackoverflow.html 
2

launchd è potente, ma davvero non si vuole scrivere il plist da soli. Ottieni Lingon. È una GUI open-source, davvero ben progettata per la creazione e la gestione delle attività di avvio del sistema.

+0

E mentre Lingon è ancora molto utile e utilizzabile, si noti che lo sviluppatore ha annunciato di aver rinunciato su ulteriore sviluppo di esso. –

0

Non si desidera più utilizzare cron. Come altri hanno già affermato, è stato sostituito da launchd e launchd sarà chiaramente il futuro su Mac OS X.

MacTech Magazine ha recentemente fatto una serie di articoli su launchd e mi raccomando vivamente di leggerli. So di aver sicuramente imparato molto.

settembre 2009 (Volume 25, Issue 9) 25.09 MacEnterprise: launchd per il pranzo

ottobre 2009, (Volume 25, Numero 10) Snow Leopard, launchd, e pranzo Più ricette launchd, e un guarda le modifiche in Snow Leopard

Ci sono stati altri articoli in MacTech e suggerirei di cercare nel loro sito.

3

Nella remota possibilità che qualcun altro che combatte con cron su Snow Leopard inciampa su questo, io driderò su questo vecchio thread.

Sì, launchd dovrebbe sostituire cron, ma in effetti non può fare certe cose che cron può.

Cron non è integrato bene. Se invia un messaggio, finisce in/var/mail/nome_utente che ovviamente Apple Mail non sa nulla.

crontab -e indica "il file temporaneo deve essere modificato sul posto". Apparentemente vim non è compatibile con vi. Puoi quindi crontab "< /tmp/crontab.whatever" (guarda in/tmp e vedi quale nome è effettivamente utilizzato) e finirà nel posto giusto e, supponendo che tu non abbia fatto un refuso, funzionerà.

Sì, c'è voluto un po 'per risolvere questo tutti fuori :(