如何将日志文件的尾部传递给命令?

时间:2015-07-14 15:24:02

标签: bash tail

我有很多长时间运行的进程,我使用此命令在整个脚本的各个点向我发送短信,并在完成某些事情时通知我:

 - e_jets cutflow:
                                  cut         events
      1                       INITIAL          13598
      2                           GRL           7250
      3               EL_N 25000 >= 1            326
      4               EL_N 25000 == 1            313
      5               MU_N 25000 == 0            313
      6             JETCLEAN LooseBad            313
      7              JET_N 25000 >= 1            113
      8              JET_N 25000 >= 2             26
      9              JET_N 25000 >= 3              8
     10              JET_N 25000 >= 4              2
     11      MVA_BTAG MV2c20 -0.4434               2
     12                     VARIABLES              2
     13                          SAVE              2

 - mu_jets cutflow:
                                  cut         events
      1                       INITIAL          13598
      2                           GRL           7250
      3               MU_N 25000 >= 1            326
      4               MU_N 25000 == 1            313
      5               EL_N 25000 == 0            313
      6             JETCLEAN LooseBad            313
      7              JET_N 25000 >= 1            127
      8              JET_N 25000 >= 2             47
      9              JET_N 25000 >= 3             15
     10              JET_N 25000 >= 4              4
     11      MVA_BTAG MV2c20 -0.4434               4
     12                     VARIABLES              4
     13                          SAVE              4

我希望在消息中包含日志文件的尾部而不是这条基本消息,以便我可以看到最后几行知道它是否成功并查看结果。如果可能的话,我希望包含当前时间(或在第二条消息中)。

2 个答案:

答案 0 :(得分:1)

步骤:

a)执行“日期”以检索当前日期

b)执行“tail -n nnn”以检索“nnn”日志文件的最后几行

c)使用“--data-binary @file”或“--data-binary @ - ”或“-F field = @ filename”执行“curl”以发布以前的信息。

您可以在curl: pass a named parameter from stdin看到类似的示例:

tail -n 20 my.log | curl -d date="$(date)" -d number="555123" -F log=@- "http://somewhere" 

答案 1 :(得分:0)

我不知道你能用尾巴和烟斗做些什么,但是你可以用inotify库做些什么。

看看iwatch,它可以在修改文件时触发事件并运行脚本。

阅读本文。

http://arkanis.de/weblog/2014-02-16-iwatch-run-a-command-when-a-file-changes