Qual è la differenza tra i vari programmatori di eventi per OS X / Darwin?

7

Sono confuso dalle differenze tra i tre strumenti (che io sappia) per la pianificazione dell'esecuzione del codice su OS X / Darwin:

Comprendo che cron è in gran parte deprecato, ma è ancora utilizzato da alcune utilità (come Super Super !, per qualche motivo) e che pmset ha la capacità di riattivare il computer per eseguire lavori specifici. Ma non sono chiaro cosa guidi la selezione di uno rispetto all'altro in generale.

In che cosa differiscono questi tre metodi di programmazione del sistema operativo (specialmente su Mavericks, se le cose sono diverse lì), specialmente nei ragazzi di compiti a cui sono adatti e come si comportano durante il sonno o il letargo?

    
posta orome 26.11.2013 - 20:41
fonte

2 risposte

5

Utilizza launchd anziché cron , at o altri strumenti UNIX legacy per Mac OS X.

pmset

pmset è uno strumento da riga di comando incorporato per ottenere e impostare valori relativi all'alimentazione su Mac OS X. Una delle abilità di pmset è aggiungere e rimuovere voci da IOPMQueue; IOPMQueue è la coda di livello IOKit che consente al Mac di accendersi e riattivarsi in un momento specifico. IOPMQueue supporta anche la pianificazione di arresti e riavvii.

Il codice arbitrario non può essere programmato tramite pmset o tramite IOPMQueue.

cron

cron è un caposaldo del mondo della pianificazione delle attività. Tuttavia su Mac OS X, l'uso di cron non è raccomandato. Utilizza launchd .

cron viene implementato controllando ogni minuto per le attività che sono dovute. Ciò consente un formato di programmazione potente ed espressivo ma al costo di dover riattivare il processore ogni minuto.

cron non sa del tuo Mac che dorme. Se un'attività è dovuta mentre il Mac è addormentato o spento, l'attività non verrà eseguita. Quando il Mac si riaccende, l'attività non verrà eseguita perché il minuto in cui avrebbe dovuto essere eseguito è stato superato.

Ci sono altri strumenti che si basano su cron e possono eseguire attività mancate al risveglio. Nessuno è incluso per impostazione predefinita con Mac OS X.

launchd

launchd (lancia daemon) è l'avvio di sistema di Apple, lo strumento di pianificazione e il watchdog del processo. launchd è scritto prima per esigenze del sistema operativo e secondo per utenti. È un processo potente e capace utilizzato per gestire o avviare quasi tutti gli altri processi sul tuo Mac.

launchd è un miglioramento di cron per la pianificazione perché non è necessario eseguire il polling per eseguire attività. Invece launchd può rimanere inattivo fino al momento in cui un'attività deve essere eseguita. In un'era di informatica consapevole e mobile, questo è importante.

launchd non riattiverà un Mac dormiente per eseguire attività.

I i job ticket di lancio sono proprietà elenca i file (plist). Questi file possono essere modificati con un editor di testo o con un numero di applicazioni di terze parti.

launchd è raccomandato per, ed è adatto a, la maggior parte delle situazioni di programmazione.

Terze parti

Esistono numerosi strumenti di pianificazione di terze parti disponibili su Mac OS X. Spesso forniscono un'interfaccia grafica o offrono più funzionalità rispetto a quelle degli strumenti da riga di comando standard di Mac OS X. Lo strumento a cui sono associato è Power Manager .

    
risposta data 02.12.2013 - 12:33
fonte
3

pmset è roba di basso livello e in realtà non controlla l'esecuzione del codice in modo specifico, almeno non in modo diretto o previsto. Controlla cose come accendere o spegnere il Mac in momenti specifici, in modo simile a come puoi fare in Preferenze di Sistema »Risparmio Energia. In generale, non devi mai usare pmset per qualcosa direttamente.

cron è ancora lì perché ... beh, perché Apple non l'ha ancora spento, nonostante l'abbia deprecato secoli fa. Ho il sospetto che sia perché ci sono alcuni vecchi Un * x che lavorano ancora alla Apple che non vogliono vederla andare. Ma, davvero, non ha senso usare questo se puoi usare launchd . I processi IIRC cron non vengono eseguiti se il computer era addormentato quando doveva funzionare.

launchd è la sostituzione di Apple per cron che aggiunge molta flessibilità alla pianificazione degli eventi su un Mac. Questo è il modo in cui dovresti programmare eventi su un Mac. Il modo migliore per imparare a usare launchd è LaunchControl , che è un'app di US $ 10 senza DRM, no codici di licenza e nessuna restrizione. (Gli sviluppatori si affidano all'onestà dei loro utenti per pagare la quota di registrazione se usano l'app.) Non solo ottieni funzionalità di trascinamento della selezione di vari elementi di launchd plists, ognuno è documentato in modo da può vedere esattamente quello che fa. Altamente consigliato.

    
risposta data 01.12.2013 - 10:49
fonte

Leggi altre domande sui tag