访问启动和关闭日志

Dan*_*iel 5 command-line reboot logging log

我的问题受到项目的启发 rawhen

该项目使用命令last -R -F reboot源代码中的第 163 行)查看计算机运行的时间段。您可以在文档中看到,此命令允许我们查看例如83 days ago - 447 hours.

原始文档

该项目已经4年没有更新了。

2 年前在这个网站上有人问过这个问题:如何使用“last”命令读取旧的登录信息?答案表明:

last -2000 -f /var/log/wtmp.1                       // 83 lines (28 days)
Run Code Online (Sandbox Code Playgroud)

如果我过滤这个我得到。

last -R -F reboot -f /var/log/wtmp.1                // 33 lines (28 days)
Run Code Online (Sandbox Code Playgroud)

但在这个答案中,建议的行数是 2000,而且似乎有一个假设,比如/var/log/wtmp.xwhere xis a number。

在我/var/log的只有两个文件wtmp

wc /var/log/wtmp*
    3    19  6144 /var/log/wtmp
   37   253 93696 /var/log/wtmp.1
   40   272 99840 together
Run Code Online (Sandbox Code Playgroud)

这些文件只包含最近 1-2 个月的数据。

我的问题是:

如何访问最旧的日志或防止 Ubuntu 删除它们,或将这些日志保存在一个文件中(我只需要重新启动过滤器),而不会出现连接这些数据的问题。

我的系统是 Ubuntu 16.04。它是标准的家庭版,而不是服务器。

这可能是一个意外,但我明白了,rawhen它显示478 h上个月计算机开机时间为 447 小时,而本月为 10 小时。是否有任何运行系统的时间,然后删除日志?

Rav*_*ina 6

我不确定我是否正确理解了您的问题,但是要解决您提出的问题(粗体部分),您应该更改logrotate配置。

看看这个文件:

less /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)

应该有如下几行:

/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}
Run Code Online (Sandbox Code Playgroud)

如果从文件中删除这些行,“logrotate”不再删除此日志,您可以将“monthly”更改为“yearly”以使其在一年后删除文件;rotate 1意味着在删除旧备份之前保留一份备份:

$ ls /var/log/wtmp*
/var/log/wtmp  /var/log/wtmp.1
Run Code Online (Sandbox Code Playgroud)

如果您将其更改为 2,您将获得:

$ ls /var/log/wtmp*
/var/log/wtmp  /var/log/wtmp.1  /var/log/wtmp.2
Run Code Online (Sandbox Code Playgroud)