Я бы хотел узнать часовой пояс системы. Теперь несколько предостережений ...
Я думал об использовании / 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,
/etc/sysconfig/clock
/etc/timezone
Из командной строки вы можете получить его более безопасным способом, чем чтение / etc / localtime, запустив:
date +%Z