删除所有/ var / log?

我可以删除/var/log吗? 或者,我应该只删除/var/log文件(recursion),但离开文件夹?

有没有人有一个很好的rm命令行? (我的pipe理技能让我感到紧张。)

注意:我正在使用Debian。 我不知道是什么版本。

而不是删除文件,你应该旋转它们,例如使用logrotate

你永远不知道什么时候你真的需要这些日志,所以最好把它们归档(到一个合理的年龄,比如3个月)。

logrotate可以压缩你的旧日志文件,所以它们不占用大量的磁盘空间。

如果删除/ var / log中的所有内容,很可能会在很短的时间内收到大量的错误消息,因为在那里有一些文件夹(exim4,apache2,apt,cups,mysql,samba和更多)。 另外:有一些服务或应用程序不会创build他们的日志文件,如果它们不存在。 他们期望至less有一个空文件存在。 所以直接回答你的问题实际上是“不要这样做!

正如乔希指出的那样,没有理由这样做。 我运行的debian服务器没有多年删除一个日志文件。

删除所有文件:

 find /var/log -type f -delete 

删除所有.gz和旋转的文件

 find /var/log -type f -regex ".*\.gz$" find /var/log -type f -regex ".*\.[0-9]$" 

尝试不带“-delete”的运行命令,对其进行testing。

我从一个主人克隆虚拟机。 清理主服务器上的日志是非常有意义的,这样当你启动克隆服务器时,你不会得到主服务器的日志。 我在tcsh做了:

 cd /var/log foreach ii ( `find . -type f` ) foreach? cp /dev/null $ii foreach? end 

清除日志但保留文件。

不删除文件的情况下清除 Linux系统上的所有日志:

 for CLEAN in $(find /var/log/ -type f) do cp /dev/null $CLEAN done 

Samba( /var/www/samba )使用IP地址创build日志文件名,您可能需要删除它们:

 for CLEAN in $(find /var/log/samba -type f) do rm -rf $CLEAN done 

您可以使用选项ctime来查找旧文件…例如:

 find -ctime +30 

作为bindbn解释,首先尝试查找获取文件,并使用选项删除:D

/var/log通常具有drwxrwxr-x权限,因此除非用户是root用户或属于特权组,否则不能用户写入。 这意味着新的日志文件不能由非特权用户创build。

希望logging到/var/log内的某个应用程序通常会在安装时(通常在提升的权限下发生)在/var/log层次结构中的某个位置触及某个文件,并且chmod并可能在此时将其chown以适用于将使用应用程序的非特权用户的权限。

例如,Apache日志通常是由nobody写的,他们是一个拥有尽可能less的权限的用户,以便Apache完成工作,而不会使系统处于不必要的风险之中。 但即使是一个普通的应用程序,通常也希望能够写入/var/log

那么如果日志文件和日志文件的path不存在会发生什么? 这完全取决于应用程序。 一些应用程序将悄悄地跳过日志。 其他人会产生很多警告。 而其他人将只是简单地救助。 没有硬性规定, 这取决于应用程序开发人员的警惕性,以及开发人员对其logging能力的重视程度。 充其量,应用程序试图写入,或者可能创build,然后写入/var/log目标中的日志文件,并发现自己无法这样做,因为它是由没有写入文件系统的那部分的权限。

所以最简单的答案是否定的,不要删除/var/log所有内容 – 这会破坏具有足够特权的合约用户,使得他们的系统上运行的应用程序具有这样的function,并且会造成一些噪音,一些沉默的失败login,以及一些全面的破坏。

采取适当的措施是用适当的configuration文件设置logrotate 。 通常旋转将与cron作业相关联。 旋转可以是基于间隔的,或基于尺寸的,或者两者兼而有之。 如果日志文件在间隔到期时仍然为空,甚至可以设置避免基于时间间隔旋转的规则。 轮转可以包括邮寄日志文件,压缩,删除,粉碎等等。

普通用户不需要太担心日志的旋转。 开发人员可能希望确保他们使用的日志已经build立了轮换规则。

我在这里实现了一个简单的清理

https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner

它只是:

  • /var/log下使用以下经过/var/log文件名模式删除文件名
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (不区分大小写)
  • /var/log下使用以下日志文​​件名模式截断/清空具有文件名的文件
    • ^.*/.+\.log$ (不区分大小写)
 function goodbyelogs { find /var/log -type f } for i in return $(goodbyelogs); do sudo cat /dev/null > $i; echo "Log $i has been cleared"; done 

做一个可执行的脚本,并尝试以root身份运行,如果sudo不工作