情况是这样的,由于我的服务器上的日志文件已经增长到几 GB,我备份了目录 /var/log,然后手动备份到 /var/log 的每个子目录,而那些文件的大小很大,我
cat > /var/log/file_which_is_big
按两次回车键(基本上用空格覆盖了这些文件),然后
Ctrl+C
所以基本上我把那些文件覆盖成了空白。
现在,当我打开 /var/log/auth.log 时,我看不到任何条目(这也是预料之中的,因为我覆盖了它),但是当我退出 SSH 会话并再次登录时,我也没有在 auth.log 中看到任何条目,除了重新启动机器之外,还有其他方法可以确保我能继续获取 /var/log/auth.log 中的条目,我不确定哪个服务写入了这个文件。
这是一个 Ubuntu 10.04 服务器。
答案1
重新启动rsyslog:
$sudo 服务 rsyslog 重启
使用 echo,则不必重新启动 rsyslog
$ sudo echo -n > /var/log/file_which_is_big
答案2
在 Ubuntu 10.04 上
sudo service syslog-ng restart
答案3
系统日志服务很可能会写入此文件以及许多其他文件。
检查文件/etc/syslog.conf
以查看哪些服务记录到哪个文件(它不是一个非常复杂的文件,但如果您需要一些解释,它应该有自己的手册页)。只要您确定它/var/log/auth.log
列在那里,并且您确定该文件存在(sys 不会创建文件,只会附加到它),那么
/etc/init.d/syslog restart
应确保文件被记录。
编辑:我与上述 alvosu 的回答有冲突,我听从他的意见选择 rsyslog 而不是 syslog。我是 Red Hat 的粉丝,他们仍在使用 syslog。