Systemd, похоже, не учитывает зависимость After=?

У меня есть сервер PostgreSQL () и базовый сценарий оболочки (который запускается для предоставления некоторых утверждений в базе данных третьему сервису (Mobilizon).

Поэтому, естественно, настроена зависимость для:

      # systemctl show mobilizon-postgresql.service | grep After=
After=basic.target system.slice systemd-journald.socket sysinit.target postgresql.service

Хотя после перенастройки системы (которая не затронула эти зависимости) я наблюдаю в логах следующее поведение:

      1677672119.103035 myserver systemd[1]: Starting Mobilizon PostgreSQL setup...
...
1677672119.153192 myserver systemd[1]: Starting PostgreSQL Server...

Так,mobilizon-postgresql.serviceзапускается до запуска .

      1677672119.279742 myserver mobilizon-postgresql-start[329444]: psql: error: could not connect to server: No such file or directory
1677672119.279742 myserver mobilizon-postgresql-start[329444]:         Is the server running locally and accepting
1677672119.279742 myserver mobilizon-postgresql-start[329444]:         connections on Unix domain socket "/run/postgresql/.s.PGSQL.543>
1677672119.283558 myserver systemd[1]: mobilizon-postgresql.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
1677672119.283707 myserver systemd[1]: mobilizon-postgresql.service: Failed with result 'exit-code'.
1677672119.289678 myserver systemd[1]: Failed to start Mobilizon PostgreSQL setup.

Так что, конечно,mobilizon.postgresqlне могу настроить соединение с БД.

      1677672119.503881 myserver postgres[329458]: [329458] LOG:  starting PostgreSQL 13.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11>
1677672119.512541 myserver postgres[329458]: [329458] LOG:  listening on IPv4 address "0.0.0.0", port 5432
1677672119.512863 myserver postgres[329458]: [329458] LOG:  listening on IPv6 address "::", port 5432
1677672119.519498 myserver postgres[329458]: [329458] LOG:  listening on Unix socket "/run/postgresql/.s.PGSQL.5432"
...
1677672119.871989 myserver systemd[1]: Started PostgreSQL Server.

Лишь позднееpostgresql.serviceСообщается, что он полностью запущен.

Такое поведение полностью противоречит моему пониманиюAfter=. Отsystemd.unit(5):

Если модуль foo.service содержит настройку Before=bar.service и оба модуля запускаются, запуск bar.service откладывается до тех пор, пока foo.service не завершит запуск.

У меня здесь неправильные предположения?

Версия Systemd — 251.12, дистрибутив — NixOS 22.11.

0 ответов

Другие вопросы по тегам