Come posso get uno script per eseguire tutti i giorni su Mac OS X?

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.

  • Per iCal puoi leggere questo articolo .
  • Dovresti trovare abbastanza tutorial per il 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

immettere qui la descrizione dell'immagine

http://www.macupdate.com/app/mac/33283/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.