首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cat /dev/null清空了我的日志文件,但大小没有改变

cat /dev/null清空了我的日志文件,但大小没有改变
EN

Unix & Linux用户
提问于 2014-07-28 18:17:56
回答 2查看 133.9K关注 0票数 4

我对Unix很陌生。使用Solaris 10,我面临以下问题。

有一个大小为9.5G的大型日志文件。我尝试使用下面的命令来清空文件。

代码语言:javascript
运行
复制
# cat /dev/null file_log.txt

通过这样做,我重新获得了文件系统上的空间,但是文件的大小仍然显示相同,而且还在增加。我认为一个进程仍在进入日志文件中。

有办法纠正文件大小吗?这会影响我的文件系统吗?

EN

回答 2

Unix & Linux用户

发布于 2014-07-28 23:50:31

cat /dev/null是一个no,因为它完全没有输出。cp /dev/null file同样毫无意义。

空白文件内容的一种更简单的方法是通过这种方式将null命令重定向到它:

代码语言:javascript
运行
复制
: > file

甚至,对于大多数shell,只使用重定向而不指定任何命令:

代码语言:javascript
运行
复制
> file  

事实上,ls报告的大小仍然很大,这只是由于编写过程中所寻求的预期的概念,即在编写之前文件的结尾应该是什么。因为在寻找点之前没有“什么”,这不应该伤人。唯一的风险是,您希望使用非稀疏文件感知工具来备份或复制受影响的文件。

请注意,重新启动写入过程不会“恢复”空间,因为文件将保持“空洞”。

如果您确实希望报告的文件大小为零,则需要在消除该文件之前停止(终止)写入过程。

票数 12
EN

Unix & Linux用户

发布于 2014-07-28 18:51:58

cat /dev/null file_log.txt

这只会使cat读取/dev/null,并立即读取file_log.txt,并将结果输出到屏幕stdout。这根本不会删除任何东西。

如果您想要测试,请使用cat /dev/null non_existent_file,您将看到它出错了。

截断文件的正确方法是使用shell重定向器或任何类型的编辑器来删除行。你想做的是:

代码语言:javascript
运行
复制
cat /dev/null > file_log.txt

这说明了第一种方法。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/147044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档