作者 主題: linux中输出重定向到文件后的缓存问题  (閱讀 405 次)

0 會員 與 1 訪客 正在閱讀本文。

hezemail

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
内核:2.6.39-400.278.2.el6uek.i686
操作系统:Oracle Linux Server release 6.8

在shell中启动kettle的服务器软件
[root@mldap01 kettle6]# ./carte.sh pwd/carte-config-master-8080.xml
可以看到日志正常输出到console中,但是当使用重定向将日志重定向到文件后,文件中的日志并不是实时更新的
[root@mldap01 kettle6]#nohup  ./carte.sh pwd/carte-config-master-8080.xml >> kettle.log &
[root@mldap01 kettle6]# tail -f kettle.log
最新的日志并不会立刻写入到日志文件中。当正常停止服务时,日志会全部刷新到日志文件中。
在网上查了好久,可以肯定是因为linux的缓冲区在捣鬼,但是网上都是说怎么样在写代码时不使用缓冲区,而没人告知当不能改动程序时,怎么解决日志实时显示的问题。
已经试过contos7.2仍然有这个问题,请问该怎么操作才能使日志实时的刷新到文件中?

已经使用sync命令了,完全不起作用。因为不能将日志刷新到文件中,所以也不敢修改/proc/sys/vm/drop_caches来清除缓存,求大神帮忙!

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17453
    • 檢視個人資料
    • http://www.study-area.org
Re: linux中输出重定向到文件后的缓存问题
« 回覆 #1 於: 2019-06-21 20:43 »
將 redirection 的命令寫進 carte.sh 裏面呢?

hezemail

  • 可愛的小學生
  • *
  • 文章數: 2
    • 檢視個人資料
Re: linux中输出重定向到文件后的缓存问题
« 回覆 #2 於: 2019-06-21 21:44 »
將 redirection 的命令寫進 carte.sh 裏面呢?

仍然不行,carte.sh里面其实是使用java命令执行一个jar程序,只要是重定向,不管怎么做都还是无法查看到最新的日志,已经放弃了