我可以删除其中的所有内容/var/log
吗?还是应该只(递归地)删除文件/var/log
夹中的文件而保留文件夹?
有人有一个好的rm
命令行吗?(我的管理技能使我感到紧张。)
注意:我正在使用Debian。我不确定是哪个版本。
我可以删除其中的所有内容/var/log
吗?还是应该只(递归地)删除文件/var/log
夹中的文件而保留文件夹?
有人有一个好的rm
命令行吗?(我的管理技能使我感到紧张。)
注意:我正在使用Debian。我不确定是哪个版本。
Answers:
而不是删除文件,您应该旋转文件,例如使用logrotate
。
您永远都不知道从何时开始真正需要日志,因此最好将它们归档(最长期限是合理的,例如3个月)。
logrotate
可以压缩您的旧日志文件,以便它们不占用大量磁盘空间。
如果删除/ var / log中的所有内容,则极有可能在很短的时间内收到大量错误消息,因为其中存在预期存在的文件夹(例如exim4,apache2,apt,cups,mysql,samba和更多)。另外:如果不存在某些服务或应用程序,则不会创建其日志文件。他们希望至少存在一个空文件。因此,您问题的直接答案实际上是“不要这样做!!!” 。
正如joschi指出的那样,没有理由这样做。我运行的Debian服务器多年来没有删除任何日志文件。
在不删除文件的情况下清除 Linux系统上的所有日志:
for CLEAN in $(find /var/log/ -type f)
do
cp /dev/null $CLEAN
done
Samba(/var/www/samba
)使用IP地址创建日志文件名,您可能希望删除它们:
for CLEAN in $(find /var/log/samba -type f)
do
rm -rf $CLEAN
done
cp /dev/null $CLEAN
通过交换> $CLEAN
。
您可以使用选项ctime查找旧文件...例如:
find -ctime +30
正如bindbn所解释的,首先尝试查找获取文件,然后使用选项delete:D
/var/log
通常具有的权限drwxrwxr-x
,因此用户不可写,除非该用户是root用户或属于特权组。这意味着非特权用户无法创建新的日志文件。
期望登录到某个位置的应用程序通常会在安装期间/var/log
使文件接触到/var/log
层次结构中的某个位置(通常以提升的特权出现),并且在那时chmod
可能(并且有可能)chown
获得适合将要成为非特权用户的权限的文件。使用该应用程序。
例如,Apache日志通常由写入nobody
,该用户是具有尽可能少的特权的用户,以便Apache能够完成其工作而不会给系统带来不必要的风险。但是,甚至更普通的应用程序通常也希望能够写入中的日志文件/var/log
。
那么,如果日志文件和日志文件的路径不存在怎么办?这完全取决于应用程序。一些应用程序将悄悄地跳过日志记录。其他人会发出很多警告。其他人则可以纾困。没有硬性规定。这取决于应用程序开发人员的警惕性以及开发人员认为其日志记录功能的重要性。充其量,该应用程序将尝试写入或可能创建一个日志文件,然后写入内的目标位置/var/log
,并且会发现自己无法执行此操作,因为该文件正在由没有特权写入的用户运行文件系统的那部分。
因此,简短的答案是“否”,不要删除其中的所有内容/var/log
-它破坏了具有足够特权的合同用户,使其无法在其系统上运行的应用程序执行此类操作,并且会引起噪音,某些日志静默失败以及一些全面的破坏。
要采取的适当措施是logrotate
使用适当的配置文件进行设置。通常,旋转将与cron作业相关联。旋转可以基于间隔或基于大小,或两者兼而有之。如果间隔到期时日志文件仍然为空,则甚至可以设置规则以避免基于间隔的轮换。轮换可以包括日志文件的邮寄,压缩,删除,粉碎等。
一般用户无需太担心日志轮换。开发人员可能希望确保他们使用的日志已建立轮换规则。实际上,对于软件将要创建和编写的任何特定于软件的日志,开发人员最好在安装时设置日志轮换的良好方式。
我在这里实现了一个简单的清洁器:
https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner
它只是:
/var/log
^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
^.*/.+\.old$
(不区分大小写)/var/log
^.*/.+\.log$
(不区分大小写)