Linux truncate 命令实战:清理日志与调整大小
truncate 通常用于将文件缩小或扩展到指定的大小。如果文件大于指定大小,多余数据会被丢弃;如果文件较短,则会用零字节填充。
环境准备
大多数 Linux 发行版默认已安装该命令,它属于 coreutils 包。若未找到,可使用以下命令安装:
yum -y install coreutils
常用参数
掌握几个关键参数能让操作更灵活:
-c, --no-create:不创建新文件,仅修改现有文件。-o, --io-blocks:按存储块数量而非字节计算大小。-r, --reference=RFILE:参考指定文件的当前大小。-s, --size=SIZE:直接设定目标大小(支持 K/M/G 等单位)。
清空日志文件
这是运维中最常见的场景。相比删除后重建,truncate 能保留文件权限和所有者,确保正在写入日志的服务不会中断。
假设我们要清空 /var/log/yum.log:
du -sh /var/log/yum.log
truncate -s 0 /var/log/yum.log
du -sh /var/log/yum.log
执行后文件大小变为 0,但文件本身依然存在,权限保持不变。
调整文件尺寸
设定固定大小
可以将文件填充到特定容量,例如 10K:
touch file.txt
truncate -s 10k file.txt
ll -h file.txt
单位支持 K, M, G, T 等后缀。
扩展与缩减
利用 + 和 - 符号可以相对调整:
# 扩展 200K
truncate -s +200k file.txt
# 缩减 250K
truncate -s -250k file.txt
这种方式适合动态调整测试文件或模拟磁盘压力。
总结
truncate 是一个轻量且高效的文件管理工具。在处理日志轮转或需要快速调整文件占位时,它能提供比 rm 和 cat 更安全、更便捷的方案。


