Самый простой стандартный способ напечатать последнюю команду bash с отметкой времени

Поскольку OP сказал

Это должно предпочтительно учитывать перенос журналов в новые файлы.

(обратите внимание на «предпочтительно»), и пока нет другого ответа, и в моем случае не было задействовано лог-ротация, я думаю, что это «достаточно хорошее» решение и, по крайней мере, отвечает на заголовок вопроса.

Я предполагаю, что это входной файл с именем input.txt, и написал сценарий, который выводит только новые строки с момента последнего вызова, принимая входной файл в качестве параметра. Здесь я показываю (довольно примитивный) скрипт и как он работает.

[user@system test]$ ll
insgesamt 8
-rwxrwxr-x 1 user user 304 30. Jan 11:33 find-new-lines
-rw-rw-r-- 1 user user   6 30. Jan 10:42 input.txt
[user@system test]$ cat find-new-lines
#!/bin/bash

# We need last line count. Assume 0 on first run.
if [ ! -f "$1-last-lines-count.txt" ]; then
   echo 0 > $1-last-lines-count.txt
fi
# Find current line count
wc -l $1 | cut -d' ' -f1 > $1-current-lines-count.txt
# Find number of new lines, if any
expr `cat $1-current-lines-count.txt` - `cat $1-last-lines-count.txt` > $1-new-lines-count.txt
# Save current line count for next call
mv -f $1-current-lines-count.txt $1-last-lines-count.txt
# Output only new lines, if any
tail -`cat $1-new-lines-count.txt` $1
[user@system test]$ cat input.txt
a
b
c
[user@system test]$ ./find-new-lines input.txt
a
b
c
[user@system test]$ ll
insgesamt 16
-rwxrwxr-x 1 user user 304 30. Jan 11:33 find-new-lines
-rw-rw-r-- 1 user user   6 30. Jan 10:42 input.txt
-rw-rw-r-- 1 user user   2 30. Jan 12:30 last-lines-count-input.txt
-rw-rw-r-- 1 user user   2 30. Jan 12:30 new-lines-count-input.txt
[user@system test]$ ./find-new-lines input.txt
[user@system test]$
7
12.06.2016, 00:44
0 ответов

Теги

Похожие вопросы