GNU/Linux >> Belajar Linux >  >> Linux

Linux – Mengerti Login di Linux?

Seperti yang saya pahami, kernel Linux masuk ke /proc/kmsg file (kebanyakan pesan terkait perangkat keras) dan /dev/log stopkontak? Di tempat lain? Apakah aplikasi lain juga dapat mengirim pesan ke /proc/kmsg atau /dev/log ? Last but not least, apakah saya benar bahwa itu adalah daemon syslog(rsyslog , syslog-ng ) yang memeriksa pesan dari dua tempat tersebut dan kemudian mendistribusikannya ke berbagai file seperti /var/log/messages atau /var/log/kern.log atau bahkan server syslog pusat?

Jawaban yang Diterima:

Sederhananya, kurang lebih seperti ini:

Kernel mencatat pesan (menggunakan printk() function) ke buffer cincin di ruang kernel. Pesan-pesan ini tersedia untuk aplikasi ruang pengguna dalam dua cara:melalui /proc/kmsg file (asalkan /proc sudah terpasang), dan melalui sys_syslog panggilan sys.

Ada dua aplikasi utama yang membaca (dan, sampai batas tertentu, dapat mengontrol) buffer ring kernel:dmesg(1) dan klogd(8) . Yang pertama dimaksudkan untuk dijalankan sesuai permintaan pengguna, untuk mencetak konten buffer cincin. Yang terakhir adalah daemon yang membaca pesan dari /proc/kmsg (atau panggil sys_syslog , jika /proc tidak dipasang) dan mengirimkannya ke syslogd(8) , atau ke konsol. Itu mencakup sisi kernel.

Di ruang pengguna, ada syslogd(8) . Ini adalah daemon yang mendengarkan sejumlah soket domain UNIX (terutama /dev/log , tetapi yang lain juga dapat dikonfigurasi), dan secara opsional ke port UDP 514 untuk pesan. Itu juga menerima pesan dari klogd(8) (syslogd(8) tidak peduli dengan /proc/kmsg ). Ia kemudian menulis pesan-pesan ini ke beberapa file di /log , atau ke pipa bernama, atau mengirimkannya ke beberapa host jarak jauh (melalui syslog protokol, pada port UDP 514), sebagaimana dikonfigurasi dalam /etc/syslog.conf .

Aplikasi ruang pengguna biasanya menggunakan libc fungsi syslog(3) untuk mencatat pesan. libc mengirimkan pesan-pesan ini ke soket domain UNIX /dev/log (di mana mereka dibaca oleh syslogd(8) ), tetapi jika suatu aplikasi adalah chroot(2) -ed pesan mungkin akan ditulis ke soket lain, f.i. ke /var/named/dev/log . Tentu saja ini penting untuk aplikasi yang mengirimkan log ini dan syslogd(8) untuk menyetujui lokasi soket ini. Untuk alasan ini syslogd(8) dapat dikonfigurasi untuk mendengarkan soket tambahan selain dari /dev/log standar .

Terakhir, syslog protokol hanyalah protokol datagram. Tidak ada yang menghentikan aplikasi mengirim datagram syslog ke soket domain UNIX mana pun (asalkan kredensialnya mengizinkannya untuk membuka soket), melewati syslog(3) fungsi di libc sama sekali. Jika datagram diformat dengan benar syslogd(8) dapat menggunakannya seolah-olah pesan dikirim melalui syslog(3) .

Tentu saja, di atas hanya mencakup teori logging "klasik". Daemon lain (seperti rsyslog dan syslog-ng , seperti yang Anda sebutkan) dapat menggantikan syslogd(8) plain biasa , dan melakukan segala macam hal bagus, seperti mengirim pesan ke host jarak jauh melalui koneksi TCP terenkripsi, memberikan stempel waktu resolusi tinggi, dan sebagainya. Dan ada juga systemd , yang secara perlahan memfagosit bagian UNIX dari Linux. systemd memiliki mekanisme pencatatan sendiri, tetapi cerita itu harus diceritakan oleh orang lain.

Terkait:Linux – Bagaimana cara menghentikan skrip shell jika curl gagal?

Perbedaan dengan *dunia BSD:

Di *BSD tidak ada klogd(8) , dan /proc tidak ada (di OpenBSD) atau sebagian besar sudah usang (di FreeBSD dan NetBSD). syslogd(8) membaca pesan kernel dari perangkat karakter /dev/klog , dan dmesg(1) menggunakan /dev/kmem untuk memecahkan kode nama kernel. Hanya OpenBSD yang memiliki /dev/log . FreeBSD menggunakan dua soket domain UNIX /var/run/log dan var/rub/logpriv sebagai gantinya, dan NetBSD memiliki /var/run/log .


Linux
  1. Cara menggunakan iMessage Apple di Linux (semacam)

  2. Linux non-blocking fifo (on demand logging)

  3. Muat ulang tugas grup pengguna Linux tanpa keluar

  1. Perintah mv Linux

  2. Linux du perintah

  3. Perintah ip Linux

  1. Perintah cd Linux

  2. Memeriksa Repositori dan Logging Linux

  3. Periksa dan Cetak Siapa yang Masuk di Linux / Unix