Ho appena scoperto che cron
è stato deprecato in Mac OS X. Perché è presente e alla fine verrà completamente rimosso dalle versioni future?
Con il rilascio di Mac OS 10.4, launchd
è stato scelto per sostituire cron
in Mac OS. Ecco una versione cache della pagina di avvio dal Apple Developer Connection nel 2005. Spiega perché cron
è stato deprecato, così come i benefici di launchd
dal punto di vista di Apple.
Il riepilogo: launchd
è stato creato non solo per sostituire cron
ma anche init
, xinetd
per prestazioni migliori e un migliore controllo sulla configurazione e sulle attività effettive stesse.
The
launchd
daemon offers a single, standardized, interface to any and all programs started automatically by the system. Furthermore, the configuration files that determine when to run a given program can also specify resource limits and environment variables, which simplifies setup and security for many programs. The same configuration file format is used whether a job is launched once at system startup or user login, on demand over the network, or at intervals.
L'articolo di wikipedia su launchd ha un ottimo sommario, discussioni estese e alcuni fantastici video e link esterni per un tuffo più profondo in questa decisione di Apple.
In poche parole, launchd
sostituisce 7 attività principali e un carico imbarcato di script ( inetd , init e rc e script shell associato strutture, crond , atd , watchdogd , SystemStarter ) con uno strumento open source molto più potente.
Perché:
Quando: 29 aprile 2005 (quando OS X Tiger è stato rilasciato per la vendita)
Non c'è nulla che impedisca a tutti noi di usare launchd per avviare cron ora su Tiger, Leopard o Snow Leopard.
Se il futuro Apple smetterà di spedire /usr/sbin/cron
, sicuramente finirà come wget e altri strumenti open source maturi che viene compilato e deve essere aggiunto come strumento a riga di comando separato.
Non so nemmeno se cron è stato deprecato. man crontab
sembra indicare che non ha:
(Darwin note: Although cron(8) and crontab(5) are officially supported under Darwin, their functionality has been absorbed into launchd(8), which provides a more flexible way of automatically executing commands. See launchctl(1) for more information.)
Guida alla programmazione dei demoni e dei servizi afferma che è stato tuttavia deprecato:
Note: Although it is still supported, cron is not a recommended solution. It has been deprecated in favor of launchd.
crontab è anche richiesto da POSIX , e OS X dovrebbe essere conforme a SUS.
In ogni caso, cron probabilmente non smetterà di funzionare in qualsiasi momento presto, e non so se si può dire che sia più lento o meno sicuro di launchd. Il processo cron dovrebbe utilizzare quasi nessun tempo o memoria della CPU. Alcuni vantaggi dell'uso o dell'apprendimento di cron sono che è disponibile anche su altre piattaforme e il formato di configurazione è più semplice.