Другое время в Windows и Linux Mint

Можно записать единственный сценарий обертки, который выполняет банку, названную в честь способа, которым это называют, и сделайте одну символьную ссылку для каждой банки. Вот сценарий обертки банки (предупреждение, введенное непосредственно в браузер):

#!/bin/sh
name=$(basename "$0")
jar=
for dir in /opt/myjava/*; do
  if [ -e "$dir/$name.jar" ]; then jar=$dir/$name.jar; break; fi
done
if [ -z "$jar" ]; then
  echo 1>&2 "$name.jar not found"
  exit 126
fi
exec /your/favorite/java -jar "$jar" "$@"

Затем создайте как много символьных ссылок на сценарий обертки как Вам угодно и вставьте их Ваш $PATH если Вы хотите:

ln -s wrapper-script myprog1
ln -s wrapper-script myprog2

Если Вы запускаете Linux, и Вы - системный администратор, то можно выбрать интерпретатор Java для создания банок непосредственно исполняемым файлом благодаря binfmt_misc механизму.

Например, в моей системе:

$ cat /proc/sys/fs/binfmt_misc/jar
enabled
interpreter /usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/jexec
flags: 
offset 0
magic 504b0304

Эта система документируется в Documentation/binfmt_misc.txt в документации ядра Linux. Для создания записи как та выше выполните команду

jexec=/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/jexec
echo >/proc/sys/fs/binfmt_misc/register ":jar:M:0:504b0304::$jexec:"

Ваше распределение может иметь в распоряжении механизм для binfmt регистрации во время начальной загрузки. На Debian и производных, это update-binfmts, и пакеты JVM уже регистрируются jexec.

Если необходимо передать опции, зарегистрировать сценарий обертки, который добавляет опции вместо jexec непосредственно.

18
17.02.2019, 17:02
5 ответов

В Windows система часы RTC традиционно сохранены в местное время. В Unix и Linux, это традиционно сохранено в UTC, и /etc/localtime используется для указания на текущий часовой пояс так, чтобы отображенное время было корректно.

Эти два мировоззрения сталкиваются в конфигурациях двойной загрузки, потому что существует только один RTC. Обычно, Вы говорите Linux предполагать, что RTC является местным временем (потому что Windows не может быть сказан). Это варьируется от одного Linux до другого, но так как Монетный двор похож на Ubuntu, которую можно, вероятно, установить UTC=no в /etc/default/rcS. Затем можно установить часы на местное время в Windows, и Linux оставит его в покое после этого.


Примечание редактора:

Тот файл не присутствует начиная с Linux Mint 19 (или более точно начиная с основы Ubuntu 18.04):

/etc/default/rcS
17
27.01.2020, 19:46
  • 1
    UTC уже установлен на не, разница во времени все еще там. –  Ballistic 19.12.2012, 18:32

наиболее общий способ сделать это:

hwclock --systohc --localtime

, который сохраняется при перезагрузках и работает в большинстве систем.

3
27.01.2020, 19:46

ПРЕДУПРЕЖДЕНИЕ

Этот метод содержит ошибки в версиях Windows до 7, но он решает проблему на стороне Windows уравнения, а не на конец Linux: вам не нужно настраивать Linux для использования локального времени .


Взято из самой знаменитой и уважаемой Arch Linux Wiki :

Одной из причин, по которой пользователи часто устанавливают RTC в локальное время, является двойная загрузка с Windows (которая использует локальное время).

Однако Windows [может обрабатывать RTC как UTC] с помощью простого исправления реестра. Рекомендуется настроить Windows для использования UTC, а не для Linux для использования локального времени.

Используя regedit , добавьте значение DWORD с шестнадцатеричным значением 1 в реестр:

 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation \ RealTimeIsUniversal 
 

Вы можете сделать это из командной строки администратора:

 reg add "HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ TimeZoneInformation" / v RealTimeIsUniversal / d 1 / t REG_DWORD / f {{1} } 

В качестве альтернативы создайте файл * .reg (на рабочем столе) со следующим содержимым и дважды щелкните его, чтобы импортировать в реестр:

 Редактор реестра Windows версии 5.00 
 
 [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation] 
 "RealTimeIsUniversal" = dword: 00000001 
 

Если это не действует , и используется 64-разрядный вариант Windows, использование значения QWORD вместо значения DWORD может решить проблему.

Если Windows попросит обновить часы из-за перехода на летнее время, позвольте. Он оставит часы в UTC, как ожидалось, исправляя только отображаемое время.

Аппаратные и системные часы, возможно, потребуется обновить после установки этого значения. Если у вас возникли проблемы со смещением времени, попробуйте переустановить tzdata, а затем снова установите часовой пояс :

 # timedatectl set-timezone America / Los_Angeles 
 
1
27.01.2020, 19:46

Изменить (как корневую переменную)/etc/timeadjс UTCна LOCAL.

Это решило проблему без необходимости возиться с regedit на стороне Windows.

0
27.01.2020, 19:46

Запустите одну из этих двух команд, соответствующих вашему местному времени

timedatectl set-local-rtc 1 --adjust-system-clock

'или'

timedatectl set-local-rtc 0 --adjust-system-clock
0
27.01.2020, 19:46

Теги

Похожие вопросы