如何使新的 log 输出放在前面?

2015-12-15 18:31:23 +08:00
 Devin
假设多次成功运行 test.sh >> abc.log 输出 log 如下:
1 OK!
2 OK!
3 OK!
4 OK!
5 OK!

在不修改 test.sh 的前提下,如何使新的 log 输出放在前面,变成如下形式:
5 OK!
4 OK!
3 OK!
2 OK!
1 OK!

PS: 不是要对 abc.log 进行二次处理,是对 test.sh 的输出进行处理
2869 次点击
所在节点    Linux
13 条回复
terrancy
2015-12-15 19:58:39 +08:00
文件指针在最后面就是第一种,文件指针在最前面就是第二种.
raysonx
2015-12-15 20:01:47 +08:00
往前插入非常影響效率,每次寫入都要重建文件。這是文件系統決定的。
建議還是用追加方式輸出日誌,然後用 tac 讀取
gamexg
2015-12-15 20:06:41 +08:00
@terrancy 修改文件指针会覆盖老内容。我记得文件系统只能在后面追加,无法在前面插入内容啊。
knightdf
2015-12-15 20:18:57 +08:00
把 abc.log 换成你自己写的一个 FIFO 队列。。。
jarlyyn
2015-12-15 20:26:05 +08:00
为啥不是对显示 log 的方式进行处理呢……

tac+1
Devin
2015-12-15 20:31:11 +08:00
@jarlyyn 有些场景,比如说把服务器的 log 文件下载到客户端查看,但客户端是 win 不支持 tac 命令。。。不过权衡下还是用追加的好了
jarlyyn
2015-12-15 20:33:32 +08:00
test.sh | tac >> abc.log
Devin
2015-12-15 20:34:48 +08:00
@knightdf 这样的话输入到数据库再排序可能更简捷
Devin
2015-12-15 20:38:52 +08:00
@jarlyyn 不对,单次执行的输出是这样的
1 OK!
这里 tac 没意义😂
jarlyyn
2015-12-15 20:40:33 +08:00
还有就是为了做日志的话,完全可以

tar abc.log |gzip> abcrev.log.gz

数据生成的时候没必要去做这些特殊操作吧?
Devin
2015-12-15 20:47:41 +08:00
@jarlyyn 一开始 Google 没搜到答案,觉得奇怪难道没人这么用?看了 2 楼才知道
matrix67
2015-12-15 21:13:00 +08:00
我就知道有人会说这个是 X-y problem[1]。

[1].http://xyproblem.info/


颇有 hack news 风范。
songco
2015-12-24 13:04:52 +08:00
目前的文件系统不支持这么玩...所以效率是个问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/243755

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX