Mengapa cron memerlukan MTA untuk logging?

11

Mengapa cron memerlukan MTA untuk logging? Apakah ada keuntungan khusus untuk ini? Mengapa tidak bisa membuat file log seperti kebanyakan utilitas lain?

Nikhil
sumber
Sedikit nitpick, tapi saya cukup yakin cron tidak membutuhkan MTA; kecuali jika Anda mengirim cron mail ke host lain, yang diperlukan hanyalah MDA ( agen pengiriman surat ).
CVn

Jawaban:

19

Pertimbangkan bahwa cara tradisional "standar" untuk mencatat data adalah syslog , di mana metadata yang termasuk dalam pesan adalah "kode fasilitas" dan tingkat prioritas. Kode fasilitas dapat digunakan untuk memisahkan aliran log dari layanan yang berbeda sehingga mereka dapat dipecah menjadi file log yang berbeda, dll. (Walaupun kode fasilitas agak terbatas karena mereka telah memperbaiki makna tradisional.)

Apa yang tidak dimiliki syslog, adalah cara untuk memisahkan pesan untuk atau dari pengguna yang berbeda, dan itu adalah sesuatu yang crondibutuhkan pada sistem multi-pengguna tradisional. Tidak ada gunanya mengumpulkan pesan dari semua pekerjaan cron pengguna ke file log umum di mana hanya administrator sistem yang dapat melihatnya. Di sisi lain, email secara alami menyediakan untuk mengirim pesan ke pengguna yang berbeda, jadi ini adalah pilihan yang logis di sini. Alternatifnya adalah bagi cron untuk melakukan pekerjaan secara manual, dan untuk membuat file log ke direktori home masing-masing pengguna, tetapi sistem multi-user tradisional Unix akan dianggap memiliki MTA yang berfungsi, jadi mengimplementasikannya dalam cron akan menjadi sebagian besar latihan yang sia-sia.

Pada sistem modern, tentu saja ada pilihan alternatif.

ilkkachu
sumber
13

Saya berasumsi bahwa dengan "logging", Anda berarti menyimpan output aktual dari pekerjaan. The berjalan pekerjaan sudah dicatat di log cron di /var/cron/log(jalan mungkin berbeda antara sistem). Tidak diperlukan MTA untuk log ini.

Pekerjaan cron dijalankan sebagai pengguna yang bagian dari pekerjaannya adalah crontab.

Dalam kasus umum, tidak ada jaminan bahwa pengguna ini dapat membuat file pada sistem (pengguna mungkin bukan pengguna interaktif), terutama tidak di bawah /varhierarki tempat log biasanya dibuat. Karena itu, cara paling aman untuk memberi tahu pengguna tentang kesalahan dan keluaran lain dari suatu pekerjaan adalah mengumpulkannya dan mengirimkannya melalui email ke pengguna. Ini juga akan memungkinkan pengguna untuk mengatur pengalihan email agar akun dapat melihat misalnya kesalahan di lokasi pilihan mereka.

Jika pengguna ingin menyimpan hasil pekerjaan ke file, mereka dapat melakukannya dengan pengalihan sederhana di crontab:

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

Ini akan berjalan "$HOME/scripts/myscript"setiap jam kedua, pada jam tersebut, dan akan menyimpan semua output "$HOME/logs/myscript.log". Tidak ada email yang akan dibuat dengan menjalankan pekerjaan ini karena semua output dialihkan. Tanpa itu 2>&1, pesan kesalahan masih akan dikirim melalui email.

Ini memungkinkan pengguna untuk memilih kemana output pergi.

Kusalananda
sumber