日志文件占用太多空间,我无法删除\清除它们

日志文件占用太多空间,我无法删除\清除它们

使用 Ubuntu 2.5 个月后,我的 /var 目录大小达到37 GB或 RAM,而我的/目录全部是50 GB或 RAM,其余空间供我使用/home

我发现以下文件占用了太多空间/var/log

-rw-r----- 1 syslog            adm   14G Feb  2 07:46 kern.log.1
-rw-r----- 1 syslog            adm   13G Feb  2 07:46 ufw.log.1
-rw-r----- 1 syslog            adm  5.9G Feb  2 07:46 syslog.1
-rw-r----- 1 syslog            adm  451M Feb  2 23:53 syslog
-rw-r----- 1 syslog            adm  451M Feb  2 23:53 kern.log
-rw-r----- 1 syslog            adm  441M Feb  2 23:51 ufw.log

附带问题,什么是syslogadm?!

看到ufw那里,我检查了它的配置

$ sudo ufw status verbose
Status: active
Logging: on (full) <<<<<

所以我把日志记录设置为低

$sudo ufw logging low

我读到 logrotate 应该处理日志滚动,但是它的配置似乎/var/log默认不处理目录。

这是我的/etc/logrotate.conf文件内容

$ cat /etc/logrotate.conf 
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 1
}

# system-specific logs may be configured here

我尝试删除log-file-name.log.digit(即kernel.log.1,,ufw.log.1whatever.log.0,但无法删除。我试过sudo echo '' > kernel.log.1,但也失败了。它总是说

$ sudo echo '' > kern.log.1 
bash: kern.log.1: Permission denied

重启也没有用。日志目录没有被清除(我以为 Linux 在重启时会清除所有日志,显然我错了),而且我仍然无法清除\删除提及日志。

我怎样才能清除这些日志并确保不再遇到这种情况?

使用 Ubuntu 13.10

回答

sudo rm /var/log/*.1

但是我怀疑导致我的命令失败的原因是我在目录中尝试执行相同的操作/var/log(即 pwd = /var/log,然后运行sudo rm kernel.1.log​​)。如果有人遇到同样的情况,请尝试在/var/log目录中删除 *.1 文件(即cd /var/log;sudo rm*.1)并报告结果。谢谢。

答案1

您当前的日志仍然很好,但没有 的日志.1。这很好,您可以使用以下命令将其删除:

sudo rm /var/log/*.1

现在你的命令由于以下原因而不起作用:

sudo 'Everything here runs as root' > Everything here run as user

因此,如果您想做您尝试过的事情,正确的做法是:

sudo sh -c "echo '' > kern.log.1"

这是因为管道使用当前用户打开了一个 shell。

答案2

您可以通过以下方式截断日志而不删除

cat /dev/null > file.log

但是在执行命令之前备份和存档日志是有用的。

相关内容