/dev/log
は、システムロギングのデフォルトのエントリです。システムの実装の場合(この場合)は、/run/systemd/journal/dev-log
へのシンボリックリンクです。以前は、syslogデーモンによって処理されるUNIXソケットの受信側でした。
~$ echo "hello" > /dev/log
bash: /dev/log: No such device or address
~$ fuser /dev/log
~$ ls -la /dev/log
lrwxrwxrwx 1 root root 28 Aug 23 07:13 /dev/log -> /run/systemd/journal/dev-log
書き込もうとすると表示されるエラーの説明と、そのファイルを保持しているプロセス(fuser /dev/log
からの出力が空のプロセスがないのはなぜですか?
ロギングはシステムで正常に機能します。
~$ logger test
~$ journalctl --since=-1m
-- Logs begin at Thu 2018-05-24 04:23:46 CEST, end at Thu 2018-08-23 13:07:25 CEST. --
Aug 23 13:07:24 alan-N551JM alan[12962]: test
コメント提案で拡張する
~$ Sudo fuser /dev/log
/run/systemd/journal/dev-log: 1 311
~$ ls -lL /dev/log
srw-rw-rw- 1 root root 0 Aug 23 07:13 /dev/log
私は完全な答えへのコメントを要約しています。 @ MarkPlotnick が最初に正しいソリューションを示したことに注意してください。
ls -lL
出力、リンクが指すファイルはsocketであり、通常のファイルまたはパイプではありません。
~$ ls -lL /dev/log
srw-rw-rw- 1 root root 0 Aug 23 07:13 /dev/log
出力の最初の文字を見てください。そのs
は、ファイルがソケットであることを意味します。
リダイレクトメカニズムは使用できません>
of bash
(または、AFIK、その他のシェル)はソケットに書き込みます。シェルはファイルをopenしようとし、open
はソケットをサポートしていません。詳細は man open を参照してください。
ソケットに接続するプログラムを使用する必要があります。詳細は man connect を参照してください。
例として、netcat
またはsocat
を使用できます( Debian Squeezeのシェルを介してUnixドメインソケットと通信するにはどうすればよいですか? を参照)。
完全を期すために、パイプのリダイレクトを使用できます。
~$ mkfifo /tmp/fifo
~$ ls -l /tmp/fifo
prw-rw-rw- 1 root root 0 27 ago 15.04 /tmp/fifo
~$ echo "hello" > /tmp/fifo
ls
出力の最初の文字を見てください。そのp
は、ファイルがパイプであることを意味します。