Linux使用busybox

时间:2017-07-13 07:28:56

标签: linux bash logging busybox

在我的bash脚本中,我试图从/ var / log / message日志文件中监视出来 - 并且即使文件旋转(重新创建并重新启动)也会继续。我尝试使用tail -f filename,但很快意识到这对文件旋转没有好处。

因此,使用tail -F filenametail -f --retry filename(以及其他一些变体)有很多答案。

但是在我的嵌入式Linux上,我使用的是busybox,它有一个轻量级的tail:

tail [OPTIONS] [FILE]...

Print last 10 lines of each FILE to standard output. With more than one
FILE, precede each with a header giving the file name. With no FILE, or
when FILE is -, read standard input.

Options:
        -c N[kbm]       Output the last N bytes
        -n N[kbm]       Print last N lines instead of last 10
        -f              Output data as the file grows
        -q              Never output headers giving file names
        -s SEC          Wait SEC seconds between reads with -f
        -v              Always output headers giving file names

If the first character of N (bytes or lines) is a '+', output begins with
the Nth item from the start of each file, otherwise, print the last N items
in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2).

所以我无法执行通常的tail -F ...,因为该选项未实现。上面的文档片段是最新的busybox版本 - 我的版本有点旧。

所以我需要另一种记录/ var / log / messages的方法,因为文件被覆盖了一定的大小。

我在想一些简单的bash系列。所以我看到像inotifywait这样的东西,但busybox没有。我看了看这里:

busybox docs并且有一个inotifyd,但我的版本没有那个特定的命令。所以,如果有一个聪明的方法可以通过简单的Linux命令/ watchtail -fcat/less/more之类的命令组合来实现这一点...我无法弄清楚我需要用有限的命令做什么:(

1 个答案:

答案 0 :(得分:0)

日志如何旋转?您使用的是logrotate实用程序吗? 如果是,您是否尝试将行添加到配置文件中的postrotate部分?

来自man logrotate的

postrotate / endscript               postrotate和endcript之间的界限(两者都必须               在日志文件之后执行               旋转。这些指令可能只出现在日志中               文件定义。参见prerotate。