Cron? Launchd? iCal ??
In caso affermativo, come?
Per riferimento, tutte e tre le opzioni functionrebbero. L'opzione iCal tuttavia ha più limitazioni rispetto agli altri.
(Ci sono GUI per la modifica di cron e launchd come menzionato in altre risposte)
Cron è la più diretta e ben nota e ci sono molti tutorial disponibili. Le note Coles devono aggiungere l'ultima row dal basso alla tua crontab (modificando /etc/crontab
o utilizzando crontab
nella row di command):
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon) MM HH * * * USERNAME /PATH/TO/SCRIPT 00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
In Mac OS X, il cron
è stato effettivamente sostituito da launchd
ma launchd
è compatibile all'indietro con il cron
significa che è ancora ansible utilizzare cron
ma è in realtà launchd
fare tutto il lavoro.
Se si desidera utilizzare launchd
si desidera launchd
altre domande qui anche su Super User: (ad esempio, come eseguire un command launchd come root? ) In cui si desidera salvare il file di configuration (il file plist ) come quando viene eseguito dipende da quale directory è memorizzata e come è caricata (ad esempio se hai usato sudo o no) – simile a cron.
Un campione eseguire il lancio di each giorno (assicurarsi che il file e l'etichetta siano gli stessi – less il plist per l'etichetta) segue – questo script viene eseguito each giorno a 3 minuti dopo la mezzanotte:
<?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>Label</key> <string>local.IDENTIFIER_HERE.SOMETHING</string> <key>KeepAlive</key> <false/> <key>RunAtLoad</key> <false/> <key>UserName</key> <string>USERNAME HERE</string> <key>Program</key> <string>/PATH/TO/SCRIPT</string> <key>ProgramArguments</key> <arrays> <string>Argument_1</string> <string>Argument_2</string> </arrays> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>00</integer> <key>Minute</key> <integer>03</integer> </dict> </dict> </plist>
È anche importnte notare che le attività di lancio se fossero state pianificate per quando il computer è addormentato o spento, functionranno quando il computer diventa nuovamente disponibile (accendendolo o svegliandolo) – anche se solo una volta non import quanti giorni avrà stato. Modifica: ero appena in un documento di Apple che ha detto che se la macchina è spenta, allora si perderanno eventuali events di lancio durante quel tempo (il tuo script non verrà avviato all'avvio), (il sonno lancia script durante il risveglio)
Un'altra opzione è usare " a " (controllare la pagina manuale con "uomo a"). Lo script può riprogrammarsi con ad esempio:
echo "sh $0 [email protected]" | at `date +%H:%M` tomorrow
(usa "10 minuti" invece di "domani" per eseguirlo each 10 minuti; per interrompere la pianificazione, basta fare "a -l" per elencare gli id degli ordini programmati e poi "a -r id " per rimuovere il lavoro)
Potrebbe essere necessario avviare prima il demone corrispondente (atrun) con (vedi https://superuser.com/a/43680 ):
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Vantaggi: la correzione rapida, nessun accesso sudo / root necessario, facile da eseguire schemi di pianificazione complicati Svantaggio: metodo di pianificazione non standard per OS X (che è launchd)
LaunchControl è un'altra GUI per launchd / launchctl. Mentre le alternative menzionate da altri sono perfettamente in grado di lanciare uno script su base giornaliera, con LaunchControl è ansible configurare pianificazioni complesse (come "una volta each giorno alla settimana, nei fine settimana each ora tra le 2 e le 8:00"). Inoltre è (AFAIK) l'unico strumento che in realtà validation il lavoro. Se un lavoro non funziona come previsto, ti mostrerà perché.
È libero di provare per tutto il tempo che vuoi.
CronniX è un bel frontend della GUI per pianificare i lavori di cron sul mac … Abbastanza decente se non vuoi andare a finire nella documentazione cron.
cron
se lo fai per google. Dipende da ciò che si desidera: gli script iCal verranno eseguiti solo se si è connessi, cron
esegue lo script senza essere connessi. Non so se iCal esegue uno script se il Mac è stato triggersto al momento dello script sono state eseguite. cron
sta facendo questo.
Un aggiornamento: è ansible controllare alcune applicazioni nell'App Store Mac OS X che eseguono questa operazione:
LaunchD Task Scheduler
Plisterine
Anche Lingon sembra essere disponibile, a seconda di quale OS in esecuzione.
Io uso sempre Lingon per questo, ma sembra che sia fuori sviluppo. Potresti provare Crontooie , ma non l'ho mai usata personalmente. O semplicemente modificare il file crontab nel terminal.
[email protected] ~ $ crontab -l */5 * * * * /usr/local/bin/cinco.sh [email protected] ~ $ cat /usr/local/bin/cinco.sh #!/bin/sh ....cut.... [email protected] ~ $
… qualunque linea di command in cui ti metti per "…. tagliato" … verrà eseguito each cinque minuti.
30 anni di progressi, e 'cron' è ancora il mio programmatore preferito.
-C
Se vuoi provare il GRATUITO, ti suggerisco Task Till Dawn
Ecco una semplice utility gratuita per generare XML plist:
http://www.gieson.com/Library/projects/utilities/launcha/
Con questo util non è necessario installare un programma, basta salvare i risultati nella cartella Library / LaunchAgents.