/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.
syslogd
logger
次のコマンドを使用して使用方法を表示できます。
$ 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 syscalls
libc APIを介して使用されるシステムコール(にもリストされています)。dmesg
klogctl
カーネルメッセージの読み取りおよび/または消去リングバッファは次の目的syslog(3)
で使用されます。送るsyslogdにメッセージが送信されました。これら2つの関数は名前は同じですが、目的は完全に異なり、内部の動作方法も異なります。
答え2
/dev/log
AF_LOCAL
アプリケーションが使用する必要があるデータグラムソケット(またはシンボリックリンク)。送るデータグラム到着、いいえ読むストリーミングデータ~からそしてcat
。これは、Cライブラリやそのライブラリ機能などの機能のルールであり、syslog()
Linux自体の一部ではありません。そのリーダーはsyslog-read
syslogバリアントの1つのようなデーモンですsystemd-journald
。/dev/kmsg
ストリーミングデバイスですはいアプリケーションが消費すると予想されるLinux循環メッセージバッファの内容を提供するLinuxの一部次から読む通常の状況では、カーネルログデータを取得するために実際の書き込みは行われません。一般的なリーダーは、syslogバリアントの1つである、などのdmesg
プログラムとデーモンです。klog-read
klogd
systemd-journald
追加読書
- https://unix.stackexchange.com/a/294206/5132
- ジョナサンデボインポラード(2016)。 」以前のロギング機構の処理」。 スナックガイド。ソフトウェア。