3

У меня есть ПК с двойной загрузкой, и для того, чтобы Windows и Linux договорились о времени, я установил аппаратные часы на локальное время в Linux, как описано здесь.

Теперь я хочу сделать скрипт, чтобы проверить, соответствует ли мой параметр Linux тому, что я хочу - для этого мне нужно проверить, сохранены ли аппаратные часы по местному времени или по UTC. Но часы hwclock только время по местному времени, даже если аппаратные часы в UTC.

Итак, как мне узнать, установлены ли аппаратные часы в linux на местное время или на UTC?

(Linux - это Crunchbang 11 - семейство Debian, а Windows - 8.1)

2 ответа2

1

Вы можете использовать hwclock , чтобы показать результаты в localtime или utc

Просто используйте соответствующий флаг для каждого случая:

jim@g6:~$ sudo hwclock --localtime
lun 11 ago 2014 03:12:18 CLT  -0.547401 seconds

jim@g6:~$ sudo hwclock --utc
dom 10 ago 2014 23:12:22 CLT  -0.672848 seconds

Затем запустите date и проверьте, какой из приведенных выше результатов соответствует выходным данным date .

0

Вы можете попробовать скрипт ниже:

#!/bin/bash

curl time.nist.gov:13 2>&1|tee time_nist_gov_13
while cat time_nist_gov_13|grep 'Empty\|denied\|unreachable'
do
 sleep 0.1
 curl time.nist.gov:13 2>&1|tee time_nist_gov_13
done

str=$(cat time_nist_gov_13 | sed '1,3d'|awk  '{print $3}')

hh=$(echo $str|awk -F':' '{print $1}')
mm=$(echo $str|awk -F':' '{print $2}')

a=$(date -u | awk '{print $4 }'| awk -F':' '{print $1}') 
b=$(date -u | awk '{print $4 }'| awk -F':' '{print $2}')

mindiff=$(echo "$b-$mm"|bc)

if [ $mindiff == "-1" ] ; then $mindiff = "1"; 
fi

if [ "$hh" == "$a" ] && ([ "$mm" == "$b" ] || [ "$mindiff" == "1" ])   ; then echo "Your Local time is assigned to UTC";
 else echo "Your Local time is NOT assigned to UTC";
fi

Объяснение следующее: сценарий получает время UTC+0 и сравнивает его с date -u местным временем, вычтенным из разницы часовых поясов со ссылкой на время UTC+0, и, если оно совпадает, это означает, что ваше местное время является правильным для вашего времени зона.

Он не всегда будет работать идеально, потому что сервер может быть иногда недоступен, и сценарий будет ожидать, и сценарий обрабатывает только древовидные типы ошибок, фильтруя по 'Empty\|denied\|unreachable'

Итак, как только вы получили "Ваше местное время привязано к UTC", вот и все, местное время привязано к UTC со смещением местного часового пояса.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .