追加読書

追加読書

/dev/logの実際の用途は何ですか?インターネットを検索しながら、これはユーザースペースからSyslogにログを記録するために使用されることがわかりました。私は/ dev / kmsgがこの役割に適していると思います。私は何を逃したことがありませんか?

メモ:

test@test:~$ cat /dev/log
cat: /dev/log: No such device or address

答え1

説明は次のとおりですman syslogd

   /dev/log
          The Unix domain socket to from where local syslog messages are read.

syslogdlogger次のコマンドを使用して使用方法を表示できます。

$ strace -f logger a 2>&1 | grep  /dev/log
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0

またはlsof(利用可能な場合):

$ sudo lsof /dev/log
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /home/ja/.cache/gvfs
      Output information may be incomplete.
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF  NODE NAME
syslogd 860 root    0u  unix 0x0000000003d863fa      0t0 18404 /dev/log type=DGRAM

さまざまなシステムにはいくつかの実装がありますsyslogd。たとえば、Slackwareはsysklogdに付属していますが、さまざまな組み込みプラットフォームにはBusyboxなどの独自の実装があります。

私はあなたも混乱する可能性があると思いますsyslog(2)syslog(3)

$ man -k syslog | grep '^syslog '
syslog (2)           - read and/or clear kernel message ring buffer; set console_loglevel
syslog (3)           - send messages to the system logger

syslog(2)man syscallslibc APIを介して使用されるシステムコール(にもリストされています)。dmesgklogctlカーネルメッセージの読み取りおよび/または消去リングバッファは次の目的syslog(3)で使用されます。送るsyslogdにメッセージが送信されました。これら2つの関数は名前は同じですが、目的は完全に異なり、内部の動作方法も異なります。

答え2

  • /dev/logAF_LOCALアプリケーションが使用する必要があるデータグラムソケット(またはシンボリックリンク)。送るデータグラム到着、いいえ読むストリーミングデータ~からそしてcat。これは、Cライブラリやそのライブラリ機能などの機能のルールであり、syslog()Linux自体の一部ではありません。そのリーダーはsyslog-readsyslogバリアントの1つのようなデーモンですsystemd-journald
  • /dev/kmsgストリーミングデバイスですはいアプリケーションが消費すると予想されるLinux循環メッセージバッファの内容を提供するLinuxの一部次から読む通常の状況では、カーネルログデータを取得するために実際の書き込みは行われません。一般的なリーダーは、syslogバリアントの1つである、などのdmesgプログラムとデーモンです。klog-readklogdsystemd-journald

追加読書

関連情報