我无法成功重定向使用磁盘操作的命令上的 STDOUT+STDERR。始终有效的标准重定向是不知何故现在捕获输出。两个实际例子:
示例1:
# wipefs --all --force /dev/sda >>/var/log/custom.log 2>&1
[ 20.169018 ] sda: sda1
示例2:
# mount --verbose --options defaults --types ext4 /dev/sda1 /path/is/here >>/var/log/custom.log 2>&1
[ 30.947410 ] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
有趣的是,这只在以某种方式接触磁盘时才会发生。脚本中的所有其他重定向均按预期工作。
有任何想法吗?
答案1
这不是命令的输出,这是内核日志消息。由于消息不是来自命令,因此它们不受重定向的影响。
内核日志消息通常进入日志文件,并且重要消息另外显示在控制台上。 “重要”和“控制台”的确切含义取决于日志记录配置。如果您使用 sysklogd,则配置文件为/etc/syslog.conf
.如果您使用 rsyslog,则它是/etc/rsyslog.conf
和/etc/rsyslog.d/*
。如果您使用 systemd 的内置日志记录,那么它就是/etc/systemd/journal.conf
.内核还可以直接将日志打印到控制台,而无需通过可以配置的日志守护进程dmesg --console-…
(但这通常是通过日志守护进程的配置间接完成的)。