truncate
是一个用来调整文件大小的命令,能够截断或扩展文件。它常用于清理日志文件、裁剪不再需要的内容或者将文件大小调整为特定值。
📌 基本语法:
truncate [选项] <文件名>
主要选项:
选项 | 描述 |
---|---|
-s | 设置文件的大小(以字节为单位),如果文件大于指定大小,则会截断;如果文件小于指定大小,则会用零填充。 |
-c | 只更改文件大小,如果文件已经是目标大小,什么也不做。 |
--size | 等同于 -s ,指定文件的目标大小。 |
📂 常用用法:
1. 截断文件内容
如果你希望将一个文件截断为 0 字节(例如清空日志文件):
truncate -s 0 /path/to/logfile.log
这个命令会把 logfile.log
的内容清空,但保留文件本身。
2. 设置文件大小
如果你希望将文件调整为特定大小,可以使用 -s
参数。例如,要将文件大小设置为 10MB:
truncate -s 10M /path/to/file
这会将文件扩展或截断至 10MB:
- 如果文件大于 10MB,则会截断。
- 如果文件小于 10MB,则会用零填充。
3. 扩展文件(零填充)
如果文件小于目标大小,truncate
会使用零填充。例如,将文件扩展为 1GB:
truncate -s 1G /path/to/file
如果 file
文件小于 1GB,它会被填充为 1GB。
4. 扩展为负大小(删除内容)
你还可以通过指定负值来从文件的末尾删除指定字节数。例如,要删除文件的最后 100 字节:
truncate -s -100 /path/to/file
这个命令会将文件从尾部截断,去掉最后的 100 字节。
💡 实际应用场景:
1. 清空日志文件
有时候 Docker 或应用的日志文件会非常大,你可以使用 truncate
来清空日志文件,而不删除文件本身:
truncate -s 0 /var/lib/docker/containers/<container-id>/<container-id>-json.log
2. 管理磁盘空间
当磁盘空间不够时,你可能会使用 truncate
来减少大文件的大小,例如清理大文件但保留其结构(如数据库文件、虚拟机磁盘等)。
3. 快速测试文件大小
truncate
也可以用于快速创建一个特定大小的文件,用于测试或填充磁盘空间。例如,创建一个 100MB 的文件:
truncate -s 100M testfile
🧠 总结
truncate -s 0 <file>
:清空文件内容但保留文件。truncate -s <size> <file>
:调整文件为指定大小,可以是正数(截断)或负数(删除末尾内容)。truncate -s <size> <file>
:如果文件小于指定大小,文件会用零填充。