Perché cron richiede MTA per la registrazione?


11

Perché cron richiede MTA per la registrazione? C'è qualche vantaggio particolare in questo? Perché non è possibile creare un file di registro come la maggior parte delle altre utility?


Un po 'pignolo, ma sono abbastanza sicuro che cron non abbia bisogno di un MTA; a meno che non spediate cron mail a un altro host, tutto ciò di cui avrebbe bisogno è un MDA ( agente di consegna della posta ).
un CVn

Risposte:


19

Si consideri che il modo tradizionale "standard" di registrare i dati è syslog , in cui i metadati inclusi nei messaggi sono il "codice della struttura" e il livello di priorità. Il codice di funzione può essere utilizzato per separare i flussi di registro da servizi diversi in modo che possano essere suddivisi in file di registro diversi, ecc. (Anche se i codici di struttura sono in qualche modo limitati in quanto hanno significati tradizionali fissi).

Ciò che syslog non ha, è un modo per separare i messaggi per o da utenti diversi, ed è qualcosa che cronnecessita di un sistema multiutente tradizionale. Inutile raccogliere i messaggi dai lavori cron di tutti gli utenti in un file di registro comune in cui solo l'amministratore di sistema può vederli. D'altra parte, la posta elettronica prevede naturalmente l'invio di messaggi a diversi utenti, quindi è una scelta logica qui. L'alternativa sarebbe che cron eseguisse il lavoro manualmente e creasse i file di log nella home directory di ciascun utente, ma si presumeva che un sistema Unix multiutente tradizionale avesse un MTA funzionante, quindi implementarlo in cron sarebbe stato principalmente un esercizio inutile.

Sui sistemi moderni, ci potrebbero essere scelte alternative, ovviamente.


13

Presumo che per "registrazione" si intenda memorizzare l'output effettivo dei lavori. L' esecuzione dei lavori è già registrata nel registro cron /var/cron/log(il percorso potrebbe differire tra i sistemi). Non è richiesto MTA per questo registro.

Un cron job viene eseguito come l'utente di cui fa parte il crontab del job.

Nel caso generale, non esiste alcuna garanzia che questo utente sia in grado di creare file sul sistema (un utente potrebbe non essere un utente interattivo), in particolare non nella /vargerarchia in cui vengono solitamente creati i registri. Il modo più sicuro per avvisare l'utente di errori e altri risultati di un lavoro è quindi quello di raccoglierli e inviarli via e-mail all'utente. Ciò consentirebbe inoltre all'utente di impostare il reindirizzamento della posta elettronica affinché l'account possa vedere, ad esempio, errori nella posizione preferita.

Se l'utente desidera salvare l'output di un lavoro su un file, può farlo con un semplice reindirizzamento nel crontab:

0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1

Questo verrebbe eseguito "$HOME/scripts/myscript"ogni ora, ogni ora, e salverebbe tutto l' output "$HOME/logs/myscript.log". Non verranno create e-mail eseguendo questo lavoro poiché tutto l'output viene reindirizzato. Senza il 2>&1, i messaggi di errore verrebbero comunque inviati via e-mail.

Ciò consente all'utente di scegliere la destinazione dell'output.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.