Я проигнорировал ошибки SeLinux, понизил версию c3p0 с 9.5 до 9.1, запустил rhn-satellite restart
и теперь вошел в открытый космос. Я также зашел в vi /etc/sysconfig/network
и добавил запись HOSTNAME=my.spacewalk.server
.
Поскольку эпоха Unix 1970 -01 -01 00 :00 :00 UTC, а не 2001 -01 -01 00 :00 :00 UTC, доступно инструменты, такие как команда gnu date, должны просто указывать секунды между ними в дополнение к фактическим данным, чтобы получить результат, используя встроенные -функции преобразования.
$ seconds=500000
$ TZ=UTC date --iso-8601=s -d @$(( $(date +%s -d '2001-01-01T00:00:00+00') + $seconds ))
2001-01-06T18:53:20+00:00
ОБНОВЛЕНИЕ:(благодаря комментарию @Kusalananda )на самом деле даже нет необходимости упоминать эпоху Unix, потому что команда даты GNU допускает прямое добавление смещения времени к заданной дате. Он должен быть снабжен правильным суффиксом (здесьseconds
). Это делает команду более простой, универсальной и удобной для чтения :
$ seconds=500000
$ TZ=UTC date --iso-8601=s -d "2001-01-01T00:00:00+00 + $seconds seconds"
2001-01-06T18:53:20+00:00
Чтобы выводить точно так же, как выходной формат OP, замените --iso-8601=s
на'+%F %T %z'
Приведенная выше команда использует эти опции и параметры:
-d
:использовать заданную дату, а не текущую дату. Может включать добавления смещения времени. --iso-8601=s
— это формат ISO, похожий на (плюс-минус пробелы и т. д.)+%F %T %z
то же, что и+Y-%m-%d %H:%M:%S %z
:не требует пояснений, с %z смещением часового пояса относительно UTC, которое здесь будет +0000, так как TZ=UTC
заставил его. Использование реализации awk
, которая поддерживает mktime()
и strftime()
(, например mawk
или GNUawk
):
$ awk 'BEGIN { epoch = mktime("2001 01 01 00 00 00"); print strftime("%F %T %z", epoch + 500000) }'
2001-01-06 18:53:20 +0000
Сначала создается метка времени UNIX, соответствующая 2001 -01 -01 в 00 :00, а затем добавляется 500000 секунд, форматируется и печатается результат в соответствии со строкой формата strftime()
. Расчеты здесь выполняются по местному времени.
С секундами, взятыми из аргумента в командной строке:
awk -v offset=500000 '
BEGIN { epoch = mktime("2001 01 01 00 00 00")
print strftime("%F %T %z", epoch + offset) }'
Чтение секунд из стандартного ввода (первое слово в каждой строке):
awk 'BEGIN { epoch = mktime("2001 01 01 00 00 00") }
{ print strftime("%F %T %z", epoch + $1) }'
Описание функций mktime()
и strftime()
см. в руководстве awk
, а также доступные строки формата см. в man strftime
.
Установите для переменной среды TZ значение UTC
для выполнения вычислений и вывода в формате UTC, а не по местному времени:
TZ=UTC awk...as above...