免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: songday
打印 上一主题 下一主题

[系统管理] 如何修改一个文件的inode? [复制链接]

论坛徽章:
21
白羊座
日期:2013-08-23 15:49:17金牛座
日期:2013-10-08 17:00:03处女座
日期:2013-10-12 11:54:11CU十二周年纪念徽章
日期:2013-10-24 15:41:34午马
日期:2013-11-27 14:07:21巨蟹座
日期:2013-12-04 10:56:03水瓶座
日期:2013-12-04 15:58:00亥猪
日期:2014-05-24 16:02:3115-16赛季CBA联赛之辽宁
日期:2016-11-07 13:52:53戌狗
日期:2013-08-23 16:15:31白羊座
日期:2013-08-24 21:59:24巨蟹座
日期:2013-08-25 16:34:24
11 [报告]
发表于 2012-11-30 09:08 |只看该作者
你直接
  1. >  output.out
复制代码
这样就会把里面的内容清空,由于inode 号没变,会继续往里记录日志的,不用重启。

如果你删除 output.out那就需要重新启动java了。

论坛徽章:
0
12 [报告]
发表于 2012-11-30 13:34 |只看该作者
回复 11# zongg


    这个我也试了,效果和 cat /dev/null > output.out 一样
就是 du 看文件大小是小了,但是 ls -l 看大小还是没有变

论坛徽章:
21
白羊座
日期:2013-08-23 15:49:17金牛座
日期:2013-10-08 17:00:03处女座
日期:2013-10-12 11:54:11CU十二周年纪念徽章
日期:2013-10-24 15:41:34午马
日期:2013-11-27 14:07:21巨蟹座
日期:2013-12-04 10:56:03水瓶座
日期:2013-12-04 15:58:00亥猪
日期:2014-05-24 16:02:3115-16赛季CBA联赛之辽宁
日期:2016-11-07 13:52:53戌狗
日期:2013-08-23 16:15:31白羊座
日期:2013-08-24 21:59:24巨蟹座
日期:2013-08-25 16:34:24
13 [报告]
发表于 2012-11-30 13:40 |只看该作者
songday 发表于 2012-11-30 13:34
回复 11# zongg

  1. [man@web-nginx04 logs]$ ls -lh catalina.out
  2. -rw-rw-r-- 1 man man 477M Nov 30 13:38 catalina.out
  3. [man@web-nginx04 logs]$ > catalina.out
  4. [man@web-nginx04 logs]$ du catalina.out
  5. 0       catalina.out
  6. [manzuo@web-nginx04 logs]$ ls -lh catalina.out
  7. -rw-rw-r-- 1 man man 0 Nov 30 13:38 catalina.out
  8. [man@web-nginx04 logs]$ ls -lh catalina.out
  9. -rw-rw-r-- 1 man man 456 Nov 30 13:38 catalina.out
复制代码
按理说不会啊。我是CentOS5.4

论坛徽章:
21
白羊座
日期:2013-08-23 15:49:17金牛座
日期:2013-10-08 17:00:03处女座
日期:2013-10-12 11:54:11CU十二周年纪念徽章
日期:2013-10-24 15:41:34午马
日期:2013-11-27 14:07:21巨蟹座
日期:2013-12-04 10:56:03水瓶座
日期:2013-12-04 15:58:00亥猪
日期:2014-05-24 16:02:3115-16赛季CBA联赛之辽宁
日期:2016-11-07 13:52:53戌狗
日期:2013-08-23 16:15:31白羊座
日期:2013-08-24 21:59:24巨蟹座
日期:2013-08-25 16:34:24
14 [报告]
发表于 2012-11-30 16:51 |只看该作者
  1. 1 : > data.xxx #文件"data.xxx"现在被清空了.
  2. 2
  3. 3 #与 cat /dev/null >data.xxx 的作用相同
  4. 4 #然而,这不会产生一个新的进程,因为":"是一个内建命令.
复制代码

论坛徽章:
0
15 [报告]
发表于 2012-11-30 19:08 |只看该作者
回复 9# songday


    既然已经关了,再重启就用我在4楼写的方法吧

命名管道(fifo)本来没多大用,在你这,它还真能解决问题

论坛徽章:
0
16 [报告]
发表于 2012-12-01 17:18 |只看该作者
回复 13# zongg


    谢谢回复

我也觉得纳闷,我还没有使用过 ls-lh 不过应该和 ls -l 一样

你的 catalina.out 是 Tomcat 的日志输出?

论坛徽章:
0
17 [报告]
发表于 2012-12-01 18:13 |只看该作者
回复 15# darrenlee3


    我试了下你写的
mkfifo output.fifo
cat output.fifo > output.out
java -cp classes App > output.fifo
output.out过大时
rm output.out;cat output.fifo > output.out
方法

我在执行到第二步(cat output.fifo > output.out),感觉命令挂起了,要 Ctrl+C 才中断

然后试了下
rm output.out;cat output.fifo > output.out
还是不行 :(

论坛徽章:
0
18 [报告]
发表于 2012-12-03 08:46 |只看该作者
回复 17# songday


    上面是个思路,具体的根据你的环境自己改一下(建fifo文件,cat到文件,java到fifo,过大时:删文件,杀cat进程,重启cat)
一个控制台的话,把阻塞的进程放到背景里
mkfifo output.fifo;cat output.fifo > output.out&;java -cp classes App > output.fifo&;sleep 1;jobs -l
过大:(同一控制台)
rm output.out;kill `jobs -l | grep "cat output.fifo" | awk '{print $3}'`;cat output.fifo > output.out &;sleep 1;jobs -l

论坛徽章:
0
19 [报告]
发表于 2013-04-18 16:23 |只看该作者
不知道你这个问题搞定了没有 你如果就想改变inode号的话 直接用vim清空这个文件就行了
vi -c ':%!echo ' -c :wq 文件名 清空了,inode也变了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP