2010-03-04 59 views
2

我想弄清楚在目前相当大的服务器负载方面哪些更高效,额外的过载不是一个好主意。这里是我需要做的:什么更有效率:从java或shell脚本中读入文件?

我有一个日志文件的变化,有时每隔几分钟其他时间更改,这是不是真的与这个问题有关。我试图找出用cron作业启动java文件是否更有效率,或者编写将由cron执行的shell脚本,这些都在linux下。哪个更好?

+1

'tail -f'可能正是你所需要的 – 2010-03-04 11:24:02

回答

3

无论如何检查日志文件主要是I/O,所以这两种情况下的实际CPU时间都是可以忽略的。所以重要的是启动时间,并且在Linux中产生一个shell脚本比启动JVM快得多。

0

一般的Perl被认为是最好的进行文本分析,但因为所有你需要做的是打印的变化来安慰你应该简单地做一尾-f而不是cron作业等

+3

我不会用10英尺的杆子碰perl。我知道它非常擅长处理文本文件,但对于外行来说,阅读它可能非常困难。 – extraneon 2010-03-04 11:32:51

1

正如彼得说,这取决于程序应该做什么。

通常,与shell脚本相比,启动Java程序有相当多的开销。但是,如果需要完成一些复杂的操作,java可能是您最好的选择。

我个人会选择Python的脚本,其外壳是不是真的适合用于哪些Java可能是矫枉过正:)

阿尔斯意识到,系统管理员可以经常阅读和理解shell脚本不错,但Java是另一个问题。这可能是一个问题,或者可能不是。

0

* nix中有很多工具可以高效地解析文件。例如grep,tail。这些工具使用非常高效的解析文件的算法用C编码。绝对要用这些shell工具。没有Java请。首先,启动起来很慢。你不能将它与运行像grep这样的C程序进行比较。其次,如果出现任何问题,你会发现它麻烦(在编译方面)排除脚本的故障。

0

如果您必须为n行日志文件产生n^2个进程,则必须优化甚至超出bash。如果你只想产生一个单独的过程,语言不会有什么区别,恕我直言。

我宁愿查看哪种语言的I/O和文本处理更适合您的需求。如果Java中的简单文本处理在“服务器”上太多,则在汇编中执行相同的操作也会太多。