Автор Тема: Не выключается комп  (Прочитано 2446 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Не выключается комп
« Ответ #15 : 19.10.2017 15:10:28 »
Тогда актуальный вопрос.
Как мне надо было правильно выполнить обновления времени при включении компа ?

Всё, время горит. :-) Вечером отвечу, вкратце объясню и ссылку дам на почитать, где почти пошагово, о другом, но принцип тот же.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Не выключается комп
« Ответ #16 : 19.10.2017 19:49:41 »
Комп старый, аккумулятор севший, при включении время 2000 год.
...
Тогда актуальный вопрос.
Как мне надо было правильно выполнить обновления времени при включении компа ?

Сервис синхронизации времени и аппаратных часов BIOS
для систем на System V init
Может применяться если сел элемент питания CMOS и RTC на системной плате (при наличии сети)

Первое с чем нужно определиться:
- В каком формате должно храниться время в BIOS (utc или localtime)
- Выяснить очередь старта сервисов network и NetworkManager

Формат времени в RTC (Real Time Clock) узнаём тут:
- Если false, - время в localtime
- Если true - время в utc
$ grep ^UTC /etc/sysconfig/clock
UTC=false

Определяемся с опциями команды (одноимённый пакет):
# man ntpdate | sed -n '71,78p'
       -t timeout
              Specify  the  maximum  time waiting for a server response as the value timeout, in seconds and fraction. The
              value is is rounded to a multiple of 0.2 seconds. The default is 1 second,  a  value  suitable  for  polling
              across a LAN.

       -u     Direct  ntpdate to use an unprivileged port or outgoing packets.  This is most useful when behind a firewall
              that blocks incoming traffic to privileged ports, and you want to synchronise with hosts  beyond  the  fire‐
              wall. Note that the -d option always uses unprivileged ports.

Определяемся с опциями другой команды:
# man hwclock|sed -n '130,133p; 198,200p'
       -w, --systohc
              Set the Hardware Clock from the System Clock, and update the timestamps in /etc/adjtime.  When the --update-
              drift option is given, then also (re)calculate the drift factor.

       --localtime
       -u, --utc
              Indicate which timescale the Hardware Clock is set to.

Узнаём очередь старта сервисов:
$ grep chkconfig /etc/rc.d/init.d/{NetworkManager,network,ntpd,dm}
/etc/rc.d/init.d/NetworkManager:# chkconfig: - 12 90
/etc/rc.d/init.d/network:# chkconfig: 345 10 90
/etc/rc.d/init.d/ntpd:# chkconfig: - 40 60
/etc/rc.d/init.d/dm:# chkconfig: 5 45 05

После этого внимательно читаем тут:
https://forum.altlinux.org/index.php?topic=32361.msg253079#msg253079
намечая опорные точки:

- сервис должен отрабатывать после network и NetworkManager, но до сервиса dm
- требуется только старт сервиса, значит lock-файл не нужен.

Листинг файла-сервиса:
# cat /etc/rc.d/init.d/synctime
#!/bin/bash
#
# chkconfig: 2345 15 87
# description:  system time synchronization service and Real Time Clock


# Source function library.
. /etc/rc.d/init.d/functions


start() {
    ntpdate -t 0.5 -u by.pool.ntp.org &>/dev/null
    hwclock -w --localtime
}

stop() {
    # not needed
    echo
}


case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    *)
        echo $"Usage: $0 {start}"
        exit 1
esac
exit 0

Команды в листиге адаптированы к Беларуси и localtime в CMOS. Адаптируйте под себя
http://www.pool.ntp.org/zone/europe
http://www.pool.ntp.org/zone/ru

Время ожидания ответа сервера времени выставлено в полсекунды, - будет необходимость, увеличьте. По-дефолту 1 секунда.
Не забудьте сделать файл сервиса исполняемым
# chmod +x /etc/rc.d/init.d/synctime

И про пустую строку в конце файла тоже не забудьте.
Сервис можно включать и выключать, - вмешиваться в последующем в листинг необязательно.
Сервис будет стартовать со 2-го по 5-й уровень запуска.


Команды добавления и проверки сервиса:
# chkconfig --list synctime
сервис synctime поддерживает chkconfig, но не используется ни на одном уровне выполнения (запустите 'chkconfig --add synctime')
# chkconfig --add synctime
# chkconfig --list synctime
synctime        0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл


В моей конфигурации для ntpd стоит запрет синхронизации времени на старте системы, чтобы исключить задержку на старте, на случай если сети не будет:
$ grep ^NTPD /etc/sysconfig/ntpd
NTPD_ARGS=-S

Детали по ссылке. Её содержимое может служить моделью для написания своего сервиса, если такая необходимость возникнет.
Сервис гарантированно работает и исправляет огромную разбежку во времени.


Проверка работы сервиса на любых платах:

Устанавливаем ложную дату и время имитируя севший элемент
# date -s "1 JAN 2000 00:00:00"
Сб янв  1 00:00:00 EET 2000
# date
Сб янв  1 00:00:15 EET 2000
# hwclock -w --localtime
# hwclock
2000-01-01 00:00:59.791045+0200

Восстанавливаем верное время
# service synctime start

Проверяем
Системное время
# date
Чт окт 19 20:10:40 +03 2017

и время BIOS
# hwclock
2017-10-19 20:10:46.545657+0300


Вроде бы всё упомянул и ничего не забыл, но если что, спрашивайте.

Дополнительно о настройке времени можно почитать тут:
Устанавливаем в системе Linux время, дату и часовой пояс из командной строки или из Gnome | Используем ntp

Сообщите, если это то что нужно и проверьте у себя, тогда это можно будет отправить в советы.


Чуть-чуть офтопика:
В стародавние времена была у меня Intel'овская плата под Pentium 200MMX. На плате была не "таблетка", а чип DALLAS. Хорошая плата, но аккумулятор на нуле и плату выбросил. А зря. Позже в сети нашёл простейшее аппаратное решение для использования "таблетки". Требуемая сложность владения паяльником на уровне мало-мальски приличного электрика.
« Последнее редактирование: 20.10.2017 01:20:43 от Speccyfighter »

Оффлайн him

  • Завсегдатай
  • *
  • Сообщений: 1 035
Re: Не выключается комп
« Ответ #17 : 20.10.2017 10:47:03 »
Фундаментально. Спасибо. Я завис.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Не выключается комп
« Ответ #18 : 20.10.2017 13:07:39 »
Фундаментально. Спасибо. Я завис.

:-)
Листинг выше, с start и stop, это как пример что, где и зачем.

Функцию stop из скрипта можно и убрать, чуть сократив скрипт, оставить только старт и привести к виду,
# cat /etc/rc.d/init.d/synctime
#!/bin/bash
#
# chkconfig: 2345 15 87
# description:  system time synchronization service and Real Time Clock


# Source function library.
. /etc/rc.d/init.d/functions


start() {
    ntpdate -t 0.5 -u by.pool.ntp.org &>/dev/null
    hwclock -w --localtime
}


case "$1" in
    start)
    start
    ;;
    *)
        echo $"Usage: $0 {start}"
        exit 1
esac
exit 0

он всё равно будет отрабатывать
# chkconfig --list synctime
сервис synctime поддерживает chkconfig, но не используется ни на одном уровне выполнения (запустите 'chkconfig --add synctime')
# chkconfig --add synctime
# chkconfig --list synctime
synctime        0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
# ls -lR /etc/rc{0,1,2,3,4,5,6}.d/*synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc0.d/K87synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc1.d/K87synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc2.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc3.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc4.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc5.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:40 /etc/rc6.d/K87synctime -> ../init.d/synctime
# date -s "1 JAN 2000 00:00:00"
Сб янв  1 00:00:00 EET 2000
# hwclock -w --localtime
# date
Сб янв  1 00:00:24 EET 2000
# hwclock
2000-01-01 00:00:37.310828+0200
# service synctime start
# date
Пт окт 20 12:42:12 +03 2017
# hwclock
2017-10-20 12:42:17.119133+0300

Тем более что stop сервису не нужен. Да он и не будет делать stop без лок-файла.
Но для chkconfig из листинга очередь stop убирать нельзя, иначе chkconfig сообщит что скрипт не chkconfig-совместимый
# chkconfig --del synctime
сервис synctime не поддерживает chkconfig

и не будет отрабатывать команды --add, --del, --list, on, off.


И немного про команду ls:
Она может быть и с таким вариантом маски путей, результат будет один и тот же
# ls -lR /etc/rc[0-6].d/*synctime
lrwxrwxrwx 1 root root 18 окт 20 12:57 /etc/rc0.d/K87synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:57 /etc/rc1.d/K87synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc2.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc3.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc4.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc5.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:57 /etc/rc6.d/K87synctime -> ../init.d/synctime
# ls -lR /etc/rc[0-4,5,6].d/*synctime
lrwxrwxrwx 1 root root 18 окт 20 12:57 /etc/rc0.d/K87synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:57 /etc/rc1.d/K87synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc2.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc3.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc4.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 13:02 /etc/rc5.d/S15synctime -> ../init.d/synctime
lrwxrwxrwx 1 root root 18 окт 20 12:57 /etc/rc6.d/K87synctime -> ../init.d/synctime

Первый из этих быстрее в наборе, но тот что выше, нагляднее для отображения: визуально, более наглядно видно, какие каталоги будет опрашивать ls.
« Последнее редактирование: 20.10.2017 18:14:06 от Speccyfighter »