Назад | Перейти на главную страницу

Как получить часовой пояс образа системы?

Я бы хотел узнать часовой пояс системы. Теперь несколько предостережений ...

Я думал об использовании / etc / localtime, но иногда это настоящий файл, а иногда символическая ссылка. В любом случае я не могу получить описание формата файла, из которого нужно выполнить синтаксический анализ.

У кого-нибудь есть идеи?

Спасибо

Этот файл будет в формате tz, который является двоичным форматом. Ты можешь использовать DateTime :: TimeZone :: Tzfile чтобы разобрать его, если вы знаете Perl. Если это символическая ссылка, она не должна иметь значения, потому что, если она смонтирована, вы можете просто следовать по ней.

Наконец, если вы можете контролировать создание изображения, я настоятельно рекомендую вам просто установить системное время на UTC.

Простой способ справиться с этим в системах Linux - использовать команду file;

file /etc/timezone

или

file /etc/sysconfig/clock

Однако, поскольку вы можете использовать образы систем UNIX (я надеюсь, что это Solaris настолько, насколько я знаком), это может немного отличаться.

На самом деле, не написав для вас сценарий, вот мой взгляд на него в псевдокоде

get mount
if mount is ext3 ... then assume linux
 if exists /etc/timezone
 then
   check if file is ascii or gz
    if ascii then cat the timezone
    else
    if exists /etc/redhat-release
    then
     assume redhat
     TZ = cat /etc/sysconfig/clock
   fi

Да, это менее чем элегантно, но вы должны уловить мою мысль. Таким образом, вы можете сделать некоторые предположения об операционной системе на основе крепления.

Процесс будет таким же, скажем, для монтирования Solaris, вы можете определить, где находится файл, использовать команду file для определения типа файла и оттуда либо просто получить его содержимое с помощью cat или grep ^ TZ

Надеюсь, это поможет.

Жестокий способ ....: p Если монтирование доступно только для чтения, коснитесь файла и после этого ... ls -lah ....

тогда у вас будет время, когда файл был создан. Имеется в виду ... время системы +/- несколько секунд.

Или как-нибудь, попробуйте изменить что-то явно или неявно и посмотреть время:>

Вы знаете, что это за разновидность UNIX?

Помимо / etc / localtime,

  • Варианты Redhat используют /etc/sysconfig/clock
  • Варианты Debian используют /etc/timezone

Из командной строки вы можете получить его более безопасным способом, чем чтение / etc / localtime, запустив:

date +%Z