相关疑难解决方法(0)

了解 Linux 中的日志记录

据我了解,Linux 内核会记录到/proc/kmsg文件(主要是与硬件相关的消息)和/dev/log套接字吗?还有其他地方吗?其他应用程序是否也能够向/proc/kmsg或发送消息/dev/log?最后但并非最不重要的,我是正确的,这是系统日志守护程序(rsyslog现在syslog-ng的),该检查的消息来自这两个地方,然后分发到那些像各种文件/var/log/messages或者/var/log/kern.log甚至是中央系统日志服务器?

syslog-ng rsyslog syslog linux-kernel

77
推荐指数
2
解决办法
6万
查看次数

将命令的输出存储到环形缓冲区中

我有一个长时间运行的命令,它会在 stdout 上生成大量输出。例如,我希望能够仅保留最后三天或最后一个 gibibyte(避免在中间切线),并且如果可能,文件块不大于 20 MiB。每个文件块都以数字后缀或时间戳命名。

就像是:

my-cmd | magic-command --output-file-template=my-cmd-%t \
                       --keep-bytes=1G \
                       --keep-time=3d \
                       --max-chunk-size=20M \
                       --compress=xz
Run Code Online (Sandbox Code Playgroud)

会写:

my-cmd-2014-09-05T10:04:23Z
Run Code Online (Sandbox Code Playgroud)

当它达到20M时,它会压缩它并打开一个新的,等等,然后它会开始删除最旧的文件。

有这样的命令吗?

我知道logrotate它管理其他应用程序编写的文件的能力,但我正在寻找更简单的东西,不需要设置 cron 作业、指定规则、暂停进程等。

logs utilities text-processing

16
推荐指数
2
解决办法
4156
查看次数

如何在 grep 输出中附加/预先添加时间戳?

我在家里运行一个小型 linux 服务器,我正在编写一个脚本来每 5 秒记录一次 CPU 内核的温度,但我需要时间戳才能有用。到目前为止,我有一些东西可以将sensors命令的输出保存到一个文件中,并且我有一个打印日期和时间的命令。我只需要弄清楚如何将这两者结合起来。

sensors | grep ^Core* >> temps.log 以以下格式将临时文件保存在 temps.log 中:

Core 0:       +39.0°C  (high = +76.0°C, crit = +100.0°C)
Core 1:       +40.0°C  (high = +76.0°C, crit = +100.0°C)
Run Code Online (Sandbox Code Playgroud)

对于我可以做的date +%m/%d/%y-%H:%M:%S返回日期

mm/dd/yy-hh:mm:ss
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,看到有人建议使用,gawk但我完全不知道如何gawk工作。

grep logs timestamps temperature gawk

6
推荐指数
3
解决办法
1万
查看次数