Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Задать переменную для systemd  (Прочитано 1515 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Задать переменную для systemd
« : 17 Июня 2021, 17:32:40 »
Здравствуйте!

У меня на работе не работают никакие порты, кроме ХТТП, посему ntp также не работает. В силу вышеизложенного я возжелал использовать htpdate. И ежели его запускать из командной строки, то всё ок. А вот sudo systemctl start htpdate.service говорит, что шиш с маслом:

Цитировать
transgeneprep@transgeneprep-System-Product-Name:~/dima/exons_lengths_test$ sudo systemctl start htpdate.service
Job for htpdate.service failed because a timeout was exceeded.
See "systemctl status htpdate.service" and "journalctl -xe" for details.
transgeneprep@transgeneprep-System-Product-Name:~/dima/exons_lengths_test$ systemctl status htpdate.service
● htpdate.service - HTTP based time synchronization tool
     Loaded: loaded (/lib/systemd/system/htpdate.service; enabled; vendor preset: enabled)
     Active: failed (Result: timeout) since Thu 2021-06-17 17:23:48 MSK; 5min ago
       Docs: man:htpdate
    Process: 501289 ExecStart=/usr/sbin/htpdate $HTP_OPTIONS $HTP_PROXY -i /run/htpdate.pid $HTP_SERVERS (code=exited, status=0/SUCCESS)

июн 17 17:22:17 transgeneprep-System-Product-Name systemd[1]: Starting HTTP based time synchronization tool...
июн 17 17:22:17 transgeneprep-System-Product-Name htpdate[501291]: htpdate version 1.2.2 started
июн 17 17:22:17 transgeneprep-System-Product-Name systemd[1]: htpdate.service: Can't open PID file /run/htpdate.pid (yet?) after start: Operation not permitted
июн 17 17:23:48 transgeneprep-System-Product-Name systemd[1]: htpdate.service: start operation timed out. Terminating.
июн 17 17:23:48 transgeneprep-System-Product-Name systemd[1]: htpdate.service: Failed with result 'timeout'.
июн 17 17:23:48 transgeneprep-System-Product-Name systemd[1]: Failed to start HTTP based time synchronization tool.

Пораскинув мозгами, я догадался, что надобно задать переменную $HTP_SERVERS. Однако ж сколько я её ни задавал, результат означенной команды совершенно не изменялся. Ни export, ни set, ни /etc/environment, ни задание от рута не помогают. Поиск в интернете на тему того, как этот несчастный htpdate.service настраивать, также молчит, как рыба об лёд, разве что вот здесь https://snapcraft.io/install/htpdate-daemon/ubuntu в укромном месте содержится тайное знание:

Цитировать
To allow the snap package to adjust the time you need to connect the time-control interface after installation and restart the daemon: . snap connect htpdate-daemon:time-control . You can set the list of hosts (default: google.com) to query for time via a snap setting like: . snap set htpdate-daemon hosts="google.com www.linux.org" . You can also set additional options for the daemon . snap set htpdate-daemon extra-opts="-d"

Но это же, простите, бред - вызывать из ада какой-то snap, чтобы изменить одну несчастную переменную. Ну и к тому же сей манускрипт беззастенчиво врёт, ибо htpdate -q google.com превосходно работает, а htpdate.service не дожидается ответа, посему по дефолту в оной переменной явно не google.com (а что именно - загадка природы).

Как можно задать оную переменную, чтобы она передалась в htpdate.service? Или без перезагрузки не получится?

Заранее благодарен.
« Последнее редактирование: 17 Июня 2021, 17:41:47 от Обедающий философ »
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

shamanhuev

  • Гость
Re: Задать переменную для systemd
« Ответ #1 : 17 Июня 2021, 18:20:30 »
timedatectl status   ?

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Задать переменную для systemd
« Ответ #2 : 17 Июня 2021, 18:26:59 »
               Local time: Чт 2021-06-17 18:21:12 MSK
           Universal time: Чт 2021-06-17 15:21:12 UTC
                 RTC time: Чт 2021-06-17 15:21:52   
                Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: no                       
              NTP service: active                   
          RTC in local TZ: no                       

А что?

Последовал также оному совету https://serverfault.com/questions/413397/how-to-set-environment-variable-in-systemd-service (а именно systemctl edit) с тем же результатом. А также догадался посмотреть, какие у systemctl вообще команды бывают, нашёл там set-environment и show-environment, обрадовался, однако радость моя была несколько преждевременна. Переменная-то установилась, только htpdate.service всё равно уходит в таймаут.
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6753
  • 20% Cooler
    • Просмотр профиля
Re: Задать переменную для systemd
« Ответ #3 : 17 Июня 2021, 19:32:07 »
какая версия ubuntu? в 20.04 всё работает. Ругается, правда на pid, но он и не нужен.
systemctl status htpdate.service
● htpdate.service - HTTP based time synchronization tool
     Loaded: loaded (/lib/systemd/system/htpdate.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-06-17 19:32:45 MSK; 3s ago
       Docs: man:htpdate
    Process: 1832 ExecStart=/usr/sbin/htpdate $HTP_OPTIONS $HTP_PROXY -i /run/htpdate.pid $HTP_SERVERS (code=exited, status=0/S>
   Main PID: 1849 (htpdate)
      Tasks: 1 (limit: 2318)
     Memory: 460.0K
     CGroup: /system.slice/htpdate.service
             └─1849 /usr/sbin/htpdate -D -s -i /run/htpdate.pid www.pool.ntp.org www.ntp.br www.wikipedia.org

июн 17 19:32:45 echelonIV systemd[1]: Starting HTTP based time synchronization tool...
июн 17 19:32:45 echelonIV systemd[1]: htpdate.service: Can't open PID file /run/htpdate.pid (yet?) after start: Operation not p>
июн 17 19:32:45 echelonIV systemd[1]: Started HTTP based time synchronization tool.

Пользователь добавил сообщение 17 Июня 2021, 19:43:49:
показывайте
systemctl cat htpdate | egrep -v '^$|^#'
egrep -v '^$|^#' /etc/default/htpdate
« Последнее редактирование: 17 Июня 2021, 19:44:42 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Задать переменную для systemd
« Ответ #4 : 17 Июня 2021, 19:51:22 »
> что мешает прописать НЕ-переменные?

Какие-какие переменные? Это как хлопок одной ладонью?

> и какая версия ubuntu?

20.04

> в 20.04 всё работает.

А вот у меня не работает. Причём на двух компах, на один из которых Ubuntu ставилась совсем недавно и никаких извращений вроде не производилось (хотя, быть может, конечно, админ по ночам играется..). И /usr/sbin/htpdate -q -i /run/htpdate.pid www.pool.ntp.org www.ntp.br www.wikipedia.org при этом работает.

Я ажно сделал sudo apt --purge reinstall htpdate - а воз и ныне там.

Чувствую, придётся кроном запускать.

Пользователь добавил сообщение 17 Июня 2021, 19:52:56:
transgeneprep@transgeneprep-System-Product-Name:~/dima/projects/smoothtemp$ systemctl cat htpdate | egrep -v '^$|^#'
[Unit]
Description=HTTP based time synchronization tool
Documentation=man:htpdate
After=network.target remote-fs.target
[Service]
EnvironmentFile=/etc/default/htpdate
ExecStart=/usr/sbin/htpdate $HTP_OPTIONS $HTP_PROXY -i /run/htpdate.pid $HTP_SERVERS
ExecReload=/bin/kill -HUP $MAINPID
Type=forking
PIDFile=/run/htpdate.pid
InaccessibleDirectories=/boot /home /media /mnt /root /opt /srv
PrivateTmp=yes
ReadOnlyDirectories=/etc /usr /var
ReadWriteDirectories=/var/run
[Install]
WantedBy=multi-user.target
[Service]
Environment='HTP_SERVERS="time.windows.com time.google.com ya.ru habr.com"'
transgeneprep@transgeneprep-System-Product-Name:~/dima/projects/smoothtemp$ egrep -v '^$|^#' /etc/default/htpdate
HTP_SERVERS="www.pool.ntp.org www.ntp.br www.wikipedia.org"
HTP_OPTIONS="-D -s"

Пользователь добавил сообщение 17 Июня 2021, 19:58:09:
А это с третьего компа, куда я поставил htpdate буквально только что и соответственно ничего с ним не делал, однако ж он также не работает:

transgen@transgen-3:~$ systemctl cat htpdate | egrep -v '^$|^#'
[Unit]
Description=HTTP based time synchronization tool
Documentation=man:htpdate
After=network.target remote-fs.target
[Service]
EnvironmentFile=/etc/default/htpdate
ExecStart=/usr/sbin/htpdate $HTP_OPTIONS $HTP_PROXY -i /run/htpdate.pid $HTP_SERVERS
ExecReload=/bin/kill -HUP $MAINPID
Type=forking
PIDFile=/run/htpdate.pid
InaccessibleDirectories=/boot /home /media /mnt /root /opt /srv
PrivateTmp=yes
ReadOnlyDirectories=/etc /usr /var
ReadWriteDirectories=/var/run
[Install]
WantedBy=multi-user.target
transgen@transgen-3:~$ egrep -v '^$|^#' /etc/default/htpdate
HTP_SERVERS="www.pool.ntp.org www.ntp.br www.wikipedia.org"
HTP_OPTIONS="-D -s"
« Последнее редактирование: 17 Июня 2021, 19:58:09 от Обедающий философ »
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

shamanhuev

  • Гость
Re: Задать переменную для systemd
« Ответ #5 : 17 Июня 2021, 20:08:59 »
А что?
Просто почему то подумал , что сейчас по дефолту включен systemd-timesyncd.service

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6753
  • 20% Cooler
    • Просмотр профиля
Re: Задать переменную для systemd
« Ответ #6 : 17 Июня 2021, 20:09:35 »
с третьего компа, куда я поставил htpdate буквально только что и соответственно ничего с ним не делал, однако ж он также не работает:
еще с него:

journalctl -eu htpdate
Пользователь добавил сообщение 17 Июня 2021, 20:13:10:
[Service]
Environment='HTP_SERVERS="time.windows.com time.google.com ya.ru habr.com"'
ваши правки убрать. Для этого есть файл /etc/default/htpdate
« Последнее редактирование: 17 Июня 2021, 20:13:10 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Задать переменную для systemd
« Ответ #7 : 18 Июня 2021, 12:47:01 »
transgen@transgen-3:~$ sudo journalctl -eu htpdate
-- Logs begin at Fri 2021-01-22 15:33:33 UTC, end at Fri 2021-06-18 09:46:12 UTC. --
Jun 17 19:50:41 transgen-3 systemd[1]: Starting HTTP based time synchronization tool...
Jun 17 19:50:41 transgen-3 systemd[1]: htpdate.service: Can't open PID file /run/htpdate.pid (yet?) after start: Operation not permitted
Jun 17 19:50:41 transgen-3 htpdate[673820]: htpdate version 1.2.2 started
Jun 17 19:50:45 transgen-3 htpdate[673821]: Setting -10591.000 seconds
Jun 17 19:50:45 transgen-3 htpdate[673821]: Set: Thu Jun 17 16:54:14 2021
Jun 17 16:55:40 transgen-3 systemd[1]: htpdate.service: start operation timed out. Terminating.
Jun 17 16:55:40 transgen-3 systemd[1]: htpdate.service: Failed with result 'timeout'.
Jun 17 16:55:40 transgen-3 systemd[1]: Failed to start HTTP based time synchronization tool.

> ваши правки убрать

А как мне это поможет, ежели искаропки оно не работает?
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

Dzhoser

  • Гость
Re: Задать переменную для systemd
« Ответ #8 : 18 Июня 2021, 12:56:57 »
Покажите sudo ntpq -p

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6753
  • 20% Cooler
    • Просмотр профиля
Re: Задать переменную для systemd
« Ответ #9 : 18 Июня 2021, 13:17:46 »
Jun 17 19:50:41 transgen-3 htpdate[673820]: htpdate version 1.2.2 started
Jun 17 19:50:45 transgen-3 htpdate[673821]: Setting -10591.000 seconds
Jun 17 19:50:45 transgen-3 htpdate[673821]: Set: Thu Jun 17 16:54:14 2021
Работает

Jun 17 16:55:40 transgen-3 systemd[1]: htpdate.service: start operation timed out. Terminating.
Jun 17 16:55:40 transgen-3 systemd[1]: htpdate.service: Failed with result 'timeout'.
Jun 17 16:55:40 transgen-3 systemd[1]: Failed to start HTTP based time synchronization tool.
Отвалилось по таймауту. Не было интернета?
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

shamanhuev

  • Гость
Re: Задать переменную для systemd
« Ответ #10 : 18 Июня 2021, 13:22:17 »
Я хотел уточнить , нет ли конфликтов с новой дефолтной синхронизацией времени и ntpd .

Оффлайн Обедающий философ

  • Автор темы
  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
    • Искусственная жизнь по-русски
Re: Задать переменную для systemd
« Ответ #11 : 18 Июня 2021, 14:19:48 »
transgeneprep@transgeneprep-System-Product-Name:~/dima/projects/smoothtemp$ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000

> Работает
> htpdate.service: start operation timed out. Terminating.

> Не было интернета?

Конечно, не было. А на настоящий форум я по астральной связи постил, видимо. И из командной строки htpdate по той же связи коннектился.
Боится смерти тот, кто мало сделал за свою жизнь. /Фидель Кастро/

 

Страница сгенерирована за 0.119 секунд. Запросов: 25.