dmesg: пользовательский формат времени

Самый простой способ сделать это — создать два файла

  • /etc/cron.hourly/file1содержащийcommand1
  • /etc/cron.hourly/file2содержащийcommand2

Я не рекомендую запускать одно задание cron command1 && command2, потому что, если первая команда завершится ошибкой, вторая не будет выполняться по замыслу.

Отредактируйте :, если вам нужно, чтобы команда1 выполнялась перед командой2, используйте стандартный файл /etc/crontabи заполните его как таковой:

0 * * * *  root  command1
5 * * * *  root  command2

Команда 1 будет запускаться в 00 минут каждый час, а команда 2 — в 05 минут каждый час.

5
31.08.2019, 08:45
2 ответа

Да, можно, например. re -форматирование времени с помощьюgawk(GNUawk)следующим образом:

dmesg --time-format iso | gawk '{ printf (strftime("+%F-%T",mktime(gensub("[-+T:,]"," ","g",$1)))) ; $1 = ""; print $0}'

dmesgпечатает здесь iso-даты вот так:

2019-09-02T06:10:30,708864+02:00 this is an important message

Мы удаляем первую строку специальных символов, затем используем функцию mktimeв (g)awk, чтобы преобразовать строку в дату, затем strftimeдля форматирования -, используя ваши любимые параметры.

Это дает что-то вроде

+2019-09-02-06:10:30 this is an important message

Небольшие примечания:

  • Здесь мы игнорируем часовой пояс, предполагая, что это очевидно, так как мы запускаем команду локально.

  • Обратите внимание, что время, указанное в dmesg, может быть неточным (на самом деле, иногда далеко ), если вы приостановите, а затем разбудите компьютер из-за способа хранения временных меток, см.dmesg(1):

    man 1 dmesg
    
2
27.01.2020, 20:39

Нельзя, но можно разобратьdmesg-вывод:

dmesg --time-format iso \
| while read datestring rest; do \
  printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done
3
27.01.2020, 20:39

Теги

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