linux 动态清空 nohup 清空后,发现文件大小不变

关注:282  答案:2  mip版

解决时间 2021-01-18 22:48

提问者〖舉燈向ηáη〗

2021-01-18 15:17

用> nohup.out 或者cat /dev/null > nohup.out等各种方式,清空nohup.out文件

执行后,文件大小不变,vi nohup.out 发现第一行的内容是:

用dd命令删除掉第一行的内容后,文件大小才减少到0,请问这是什么原因,是linux 主机是虚拟机的原因吗?

但是还是不知道为什么启动时候用">"重定向到nohup.out就不能动态清空,不知道原理是什么。

最佳答案

二级知识专家白衣衬衫净少年

2021-01-18 16:13

如果有权限cat /dev/null > nohup.out应该可以清成0,除非还有程序往这个文件里写内容。

另外多问一句,

执行cat /dev/null > nohup.out的用户,和执行vi nohup.out 是同一个吗?

全部回答

1楼嘴硬欠吻

2021-01-18 16:44

未释放磁盘空间原因:
在linux或者unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被
打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是oracle的告警log文件
删除的时候文件应该正在被使用
解决方法
首先获得一个已经被删除但是仍然被应用程序占用的文件列表,如下所示:
[root@ticketb ~]# lsof |grep deleted
oracle    12639  oracle    5w    reg    253,0    648    215907 /home/oracle/admin/dbticb/udump/dbticb_ora_12637.trc (deleted)
oracle    12639  oracle    6w    reg    253,0 16749822091    215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
oracle    12639  oracle    7u    reg    253,0    0    36282 /home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstdbticb (deleted)
oracle    12639  oracle    8w    reg    253,0 16749822091    215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
oracle    12641  oracle    5w    reg    253,0    648    215907 /home/oracle/admin/dbticb/udump/dbticb_ora_12637.trc (deleted)
oracle    12641  oracle    6w    reg    253,0 16749822091    215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)



oracle    23492  oracle    6w    reg    253,0 16749822091    215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
oracle    23492  oracle    7u    reg    253,0    0    36282 /home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstdbticb (deleted)
oracle    23492  oracle    8w    reg    253,0 16749822091    215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
oracle    23494  oracle   10u    reg    253,0    0    36307 /home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstrmandb (deleted)
从输出结果可以看到/home/oracle/admin/dbticb/bdump/alert_dbticb.log还被使用,未被释放空间
如何让进程释放呢?
一种方法是kill掉相应的进程,或者停掉使用这个文件的应用,让os自动回收磁盘空间
我这个环境有很多进程在使用的这个文件,停掉进程有点麻烦,再有就是风险很大
当linux打开一个文件的时候,linux内核会为每一个进程在/proc/ 『/proc/nnnn/fd/目录(nnnn为pid)』建立一个以其pid
为名的目录用来保存进程的相关信息,而其子目录fd保存的是该进程打开的所有文件的fd(fd:file descriptor)。
kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。
这是一项高级技术,仅到管理员确定不会对运行中的进程造成影响时使用。应用程序对这种方
式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

linux清空动态文件内容,linux 动态清空 nohup 清空后,发现文件大小不变相关推荐

  1. linux命令看文件内容,Linux文件内容查看相关命令

    1.more命令 在Linux中,more命令是一个基于vi编辑器的文本过滤器,它能以全屏的方式按页显示文本文件的内容,more里面内置了一些快捷键. (1)命令语法 more(选项)(参数) (2) ...

  2. linux替换大文件内容,Linux批量替换文件内容

    今天测试人员一不小心把导航的地址改错了,大约6000多个导航文件,要通过后台配置的话也很麻烦,可以通过linux命令实现对批量文件进行内容替换,但是技术经理不在,我对linux命令不熟,没办法只好硬着 ...

  3. linux读整个文件内容,Linux查看整个文件

    Linux查看整个文件 使用cat命令显示文本文件的内容 使用cat命令可以显示文本文件的内容.cat后面可以不加任何选项,直接跟文件名 功能说明:查看某个文件的内容 ###cat命令语法 cat [ ...

  4. linux 恢复修改文件内容,Linux备份及恢复及Linux文件权限详解

    Linux备份及恢复及Linux文件权限详解 概述 一个系统管理员菜鸟不小心输入"chmod -R 777 /"从而导致了巨大的悲剧,使得整个系统遭到了严重的破坏.在日常管理中,我 ...

  5. linux如何改文件内容,linux下用命令修改文件内容

    linux下vi命令修改文件及保存的使用方法 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi n filename :打开文件,并将光标置于第n行首 vi fil ...

  6. linux sed写文件内容,Linux学习——文本处理:sed

    事先说明,这是我在跟随老师学习过程中,从老师笔记中吸取的一点点经验,有很多都是老师笔记上的.我写这个博客,更多的是记录自己的学习过程,不喜勿碰. 一个超级有脑洞的流编辑器:sed ps:反正我个人认为 ...

  7. linux修改程序文件内容,linux 批量修改文件内容

    如果有批量修改文件内容的需求,可参考下面这些方法 1.批量查找某个目下文件的包含的内容,例如: #   grep -rn或l "要找查找的文本"  路径或文件 rn表示匹配查找字符 ...

  8. linux text html文件内容,linux – 为什么curl会给我html而不是文件?

    我正在尝试(学习)使用curl下载文件http://cscope.sourceforge.net/cscope_maps.vim.我尝试过的命令是: curl -o cscope_maps.vim c ...

  9. Linux比较大文件内容,Linux系统最大文件打开数优化,解决Too many open files报错

    这是一个Linux系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需. 一.报错截图: 图为resin的报错日志,很明显提示了Too many ...

最新文章

  1. CopyOnWriteArrayList实现原理及源码分析
  2. flutter dio+rxdart
  3. (0080)iOS开发之上传本地项目到github
  4. android 相册 uri空,Android---相册getContentResolver().query结果为空指针
  5. 3D字体海报的这么玩?效果很赞,不得不学!
  6. vue router children 路由变了 组件没变_Vue.js从零开始——路由(2)
  7. 【printf函数与scanf函数】(学习笔记5--标准I/O函数)
  8. python如何请求curl_Python爬虫偷懒神器 —— 一键构造请求头!
  9. 高斯勒让德求积公式matlab通用程序,MATLAB软件及高斯勒让德求积公式.doc
  10. 自己整理的scratch说课讲义
  11. 高压电控产品电气设计入门与进阶(下)
  12. 希望OL修改服务器经验,希望OL服务端架设技术教程
  13. VS中让console程序不显示(隐藏)命令行窗口
  14. java.sql.SQLException: Subquery returns more than 1 row
  15. 【Linux】Linux的共享内存
  16. remote: Support for password authentication was removed on August 13, 2021
  17. 斗地主游戏Landlord
  18. DVWA---跨站请求伪造CSRF
  19. 最近在某外卖平台上点了一份米粉加了份青菜
  20. 关注国外学术团队的年度研究报告

热门文章

  1. Matplotlib学习---用matplotlib画箱线图(boxplot)
  2. 17.vue移动端项目二
  3. Mac开发必备工具(二)—— iTerm 2
  4. 如何计算代码的运行性能
  5. SVD — 奇异值分解
  6. SqlServer-函数
  7. 中文版Visual Studio 2008 SP1 智能提示为英文的补丁发布
  8. Flutter PageView 使用详细概述
  9. 06 ansible剧本功能实践介绍
  10. Java 多条件复杂排序小结