LINUX.ORG.RU

no limit при завершении пользовательского сеанса

 ,


0

2

Что работает верно:

  • Если останавливается системная служба, то на неё действует таймайт 90s до прибития.
  • Если вручную останавливать пользовательский сеанс через systemctl stop, то на него действует таймайт 90s до прибития.

Что работает неверно:

  • Если выключать систему через systemctl poweroff, то при остановке пользовательского сеанса пишет ‘no limit’ вместо таймаута и висит там вечно.

Что делать?

Конфег:

$ grep -v '^#' /etc/systemd/system.conf
[Manager]
DefaultTimeoutStopSec=90s

@intelfx

Ответ на: комментарий от intelfx

если ты уверен, что это именно он

Висит сеанс aka Session, т.к. воспроизводимость 100%:

Запускаем из-под сеанса юзера любой код, который игнорирует сигналы и убивается только по SIGKILL и при выключении системы получаем:

A stop job is running for Session ... of user ... ( время / no limit)

(Пишу по памяти, может сообщение не точно такое, но суть эта.)

А в самом user@.service что написано

# systemctl show user@1000.service | grep -E -i 'timeout|limit|interval|infinity|[0-9]s$'
TimeoutStartUSec=1min 30s
TimeoutStopUSec=2min
TimeoutAbortUSec=2min
TimeoutStartFailureMode=terminate
TimeoutStopFailureMode=terminate
RuntimeMaxUSec=infinity
MemoryAvailable=infinity
CPUQuotaPerSecUSec=infinity
CPUQuotaPeriodUSec=infinity
MemoryHigh=infinity
MemoryMax=infinity
MemorySwapMax=infinity
MemoryZSwapMax=infinity
MemoryLimit=infinity
TasksMax=infinity
ManagedOOMMemoryPressureLimit=0
LimitCPU=infinity
LimitCPUSoft=infinity
LimitFSIZE=infinity
LimitFSIZESoft=infinity
LimitDATA=infinity
LimitDATASoft=infinity
LimitSTACK=infinity
LimitSTACKSoft=8388608
LimitCORE=infinity
LimitCORESoft=infinity
LimitRSS=infinity
LimitRSSSoft=infinity
LimitNOFILE=524288
LimitNOFILESoft=1024
LimitAS=infinity
LimitASSoft=infinity
LimitNPROC=63611
LimitNPROCSoft=63611
LimitMEMLOCK=8388608
LimitMEMLOCKSoft=8388608
LimitLOCKS=infinity
LimitLOCKSSoft=infinity
LimitSIGPENDING=63611
LimitSIGPENDINGSoft=63611
LimitMSGQUEUE=819200
LimitMSGQUEUESoft=819200
LimitNICE=0
LimitNICESoft=0
LimitRTPRIO=0
LimitRTPRIOSoft=0
LimitRTTIME=infinity
LimitRTTIMESoft=infinity
LogRateLimitIntervalUSec=0
LogRateLimitBurst=0
TimeoutCleanUSec=infinity
JobTimeoutUSec=infinity
JobRunningTimeoutUSec=infinity
JobTimeoutAction=none
StartLimitIntervalUSec=10s
StartLimitBurst=5
StartLimitAction=none
wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от wandrien

Без поллитры не разобраться, что к чему отноcится. Вот еще что-то:

# systemctl show session-2.scope | grep -E -i 'timeout|limit|interval|infinity|[0-9]s$'
TimeoutStopUSec=1min 30s
RuntimeMaxUSec=infinity
MemoryAvailable=infinity
CPUQuotaPerSecUSec=infinity
CPUQuotaPeriodUSec=infinity
MemoryHigh=infinity
MemoryMax=infinity
MemorySwapMax=infinity
MemoryZSwapMax=infinity
MemoryLimit=infinity
TasksMax=infinity
ManagedOOMMemoryPressureLimit=0
JobTimeoutUSec=infinity
JobRunningTimeoutUSec=infinity
JobTimeoutAction=none
StartLimitIntervalUSec=10s
StartLimitBurst=5
StartLimitAction=none
wandrien ★★
() автор топика

Проверил заново все кейсы. После каких-то обновлений поведение изменилось:

  • Теперь systemctl stop session... сразу закрывает сеанс и выкидывает в дисплейный менеджер. Даже таймаут не ждёт.
  • Теперь зависший процесс не мешает сделать poweroff, система выключается через указанный таймаут. Но при этом пишет no limit почему-то. Пишет неверно, а работает верно.

Помечаю как решенную.

wandrien ★★
() автор топика