定时任务删除日志

# 只保存当天和昨天的access log0 2 * * *  ls -td /data/nacos/access-logs/logs/* | sed -n '3,$p' | xargs rm -rf

清理日志五种方法

# cat命令可以将标准输入重定向到文件,使用空内容覆盖文件内容
cat /dev/null > filename

: > filename
# 使用>/dev/null重定向:
> filename
# echo命令可以将指定内容重定向到文件,使用空内容覆盖文件内容。
echo "" > filename
# echo命令可以将指定内容重定向到文件,使用空内容覆盖文件内容。
echo > filename
上面这1/2/3种方式,能将文件清空,而且文件大小为0
而下面4/5方式,导致文本都有一个"\\0",清空后文件大小为1

其他:
# truncate命令可以将文件截断为指定大小或清空文件内容。
truncate -s 0 logfile.log
# 使用logrotate工具:
logrotate -f /etc/logrotate.conf

清理后空间不释放

在rm -rf情况

安装lsof 是一种常用的Linux工具,用于列出与打开的文件相关联的进程。它的全称为“列出打开文件的”

yum install
列出所有正在使用已删除文件的进程。
sudo lsof | grep deleted

centos rm -rf * 删除文件后,磁盘空间未释放,需要重新启动进程,释放空间

rm -rf 需要关闭程序,否则删除后du看到空间没了,实际还是被占用了

或者直接将文件内容写入空

> /var/log/messagesecho > /var/log/messagescat > /var/log/messages
truncate -s 0 /home/aiyong/digital_uat_java/target/output.log
truncate -s 0 /home/aiyong/digital_java/target/output.log3

sync同步到磁盘
可以使用 truncate 命令截断文件大小,但是需要注意,如果文件被占用的进程不释放文件描述符,磁盘空间也不会被释放。因此,在使用 truncate 命令之前,最好先确认文件是否被占用。

truncate截断,恢复文件系统空间,内容仍然可以被回复,除非被覆盖,新的也还可以继续使用

删除目录下的所有日志文件

rm -rf /xxx/xxx

文件删除后并不会立即释放磁盘空间,需要重启

解决方法:

lsof | grep deleted

删除占用进程:kill -9 PID

(lsof | grep deleted打印的结果第二列是PID)

以下方式不需要重启服务,但日志文件必须存在

echo " " > xxx.out.log

cat /dev/null > xxx.out.log

‘> ./ 和 >> ./区别’