Самый простой способ сделать это — создать два файла
/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 минут каждый час.
Да, можно, например. 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
Нельзя, но можно разобратьdmesg
-вывод:
dmesg --time-format iso \
| while read datestring rest; do \
printf '%s\n' "$(date -d "$datestring" +%F-%T) $rest"; done