Существует ли простой способ вставить данные/время перед файлом журнала только с сценариями оболочки?

Не позволяйте домашним рабочим станциям использоваться для работы. Нет никакой причины для них, чтобы использоваться тот путь так или иначе.

2
задан 3 November 2010 в 20:55
4 ответа

Не изобретать велосипед. Запишите сообщения в системный журнал с помощью регистратора (1), который поддерживается на примерно каждой разновидности Unix. Системный журнал будет заботиться о метках времени для Вас. Ваши данные логов будут сохранены к системному журналу как /var/log/messages (Это настраивается). Вы не должны волноваться о чистке файлов журнала позже (особенно, если это прогоны задания навсегда), потому что системные журналы автоматически повернуты на logrotate/newsyslog.

top | grep java | logger -t java_cpuhog

Или, если Вы действительно хотите записать это в свой собственный файл. Но затем необходимо очистить файл впоследствии:

top | grep java | logger -t java_cpuhog -f /var/log/java-top.log
3
ответ дан 3 December 2019 в 09:25
  • 1
    конверта, я думаю, что необходимо быть, поддерживают это (который я не :-() –  James Dean 5 November 2010 в 15:44
  • 2
    @James: Нет, обычные пользователи могут использовать logger записать в системные журналы. Помните обо всех тех других программах Unix, которые работают как другие пользователи - они все еще регистрируются к системному журналу. Многие из них не работают как корень. –  Stefan Lasiewski 5 November 2010 в 23:13
  • 3
    @James: Хотя, Вы, возможно, должны были бы быть корнем для чтения из некоторых системных журналов. Однако я верю этому, /var/log/messages должно быть читаемым большинством пользователей в системе. Для тестирования этого сделать echo jamestest | logger, и затем посмотрите или вывод в /var/log/messages. –  Stefan Lasiewski 5 November 2010 в 23:15
  • 4
    Также, отмечает, что можно все еще использовать вторую опцию выше. echo stefantest | logger -f ~/stefantest.log –  Stefan Lasiewski 5 November 2010 в 23:37
... | awk -f timetag.awk > ...

timetag.awk:

{
  print "[" strftime() "] " $0
}
2
ответ дан 3 December 2019 в 09:25

В оболочке: top | grep java | while read LINE ; do date "+%F %T ${LINE}" ; done

1
ответ дан 3 December 2019 в 09:25

Вы могли создать что-то как stamp содержа

#!/usr/bin/perl -p
s/^/localtime()." "/e;

Затем выполненный

top -b | grep java | stamp > out.log

Не забывайте использовать top -b если Вы не используете его в интерактивном режиме. Конечно, вершина уже помещает метку времени каждый раз, когда она работает. При необходимой необходимости в дате на каждой строке просто используйте вершину самостоятельно, так как она помещает метку времени на каждое повторение. Я иногда использую это, чтобы заставить 10-секундные образцы в течение целого дня рассмотреть позже:

top -b -d 10 -c -n 8640
0
ответ дан 3 December 2019 в 09:25

Теги

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