klogd i syslogd

Demony - programy uruchamiane zwykle przy starcie systemu, działające w tle.

Tak można stworzyć demona:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>

int main(int argc, char **argv) {
  int pid;

  pid = fork();
  if (pid < 0) {
    fprintf(stderr"pid: %s\n", strerror(errno));
    exit(EXIT_FAILURE);
  }
  else if (pid == 0) {
    setsid(); /* funkcja tworzy nową sesję i odłącza proces od konsoli */

    /* kod wykonywany przez demona */
  }

  return EXIT_SUCCESS;
}

klogd jest demonem przechwytującym komunikaty jądra linuksa, który przekazuje je do demona syslogd lub zapisuje od pliku podanego jako parametr (opcja -f).

Jeżeli zamontowany jest system plików /proc źródłem komunikatów jest plik /proc/kmsg. W przeciwnym razie do pobierania komunikatów używane jest wywołanie systemowe syslog.

Przed przekazaniem komunikatu do syslogd, klogd tłumaczy go na wpis zrozumiały dla tego ostatniego. Dzieje się tak dlatego, że komunikaty klogd mają inną postać niż te przekazywane przez bibliotekę systemową. Trzeba do nich m.in. dołączyć informacje o typie i priorytecie komunikatu, czasie jego powstania czy maszynie, tak by były zrozumiałe dla syslogd.

Konfiguracja syslogd znajduje się w pliku /etc/syslog.conf. Szczegółowy opis jak z nim pracować znajduje się w manualu (man syslog.conf).