如何在systemd中跳过90年代超时


15

是否可以以交互方式跳过systemd中的90年代超时?例如,何时正在等待磁盘可用或用户注销?我知道它最终会失败,所以我现在可以使它失败吗?我讨厌无奈地盯着屏幕。

Answers:


11

您有两种选择:

  1. 您可以将TimeoutStopSpec=特定的UNIT设置为特定的值(以秒为单位*)以等待。您还可以将其设置为infinity在这种情况下,将永远不会发送SIGKILL(不建议这样做,因为这样最终可能会导致难以调试的失控服务)。

  2. DefaultTimeoutStopSec=内部/etc/systemd/system.conf(或user.conf,或在*.d目录之一中)设置为所有未TimeoutStopSpec=指定的UNIT都将使用的默认值。此设置的默认设置是您通常看到的90年代。

手册页参考:

  • man systemd.service 对于 TimeoutStopSpec=
  • man systemd-system.conf 对于 DefaultTimeoutStopSec=

* systemd还接受时间规格,例如“ 2min 3s”。那个人对此有详尽的描述。


10
这不是交互式的。当systemd已经开始倒计时90年代时,进行这些更改为时已晚,我被迫无奈地坐下来。
user7610 '16

@JiriDanek-这是因为systemd不是交互式的,它并不意味着是交互式的。您的tty进程(在其中您看到90年代)作为init的子进程(系统)运行,即,显示(getty)90年代的进程是对它们进行计数(系统化)的子进程。而且,systemd会忽略大多数信号。systemd并不意味着由tty前面的随机用户控制(这将带来巨大的安全风险)。
俗的

4
我主要是台式机用户,因此我倾向于以不同的方式看待事情。还记得托瓦尔兹的女儿的打印机吗?出于安全考虑,可以证明许多设计上的不足。
user7610

@JiriDanek - systemd是不是关注,这将是一个实际的攻击向量。如果您可以在适当的时候瞄准正确的信号,则可以(作为普通用户)禁用系统服务(例如SELinux)。只需进入/etc/systemd/system.con并添加DefaultTimeout = 3。或者,更好地,修复失败的服务。某些服务总是失败的事实不是systemd的不好设计,而是编写单位文件的人的不好的设计。
grochmal

在我的特定情况下,单位文件的编写者是无辜的。复制粘贴磁盘UUID时,我只是打错了字。我只是觉得烦恼,要等一整分半钟才能让systemd放弃安装,让我进入系统并解决问题。在这里,长时间超时实际上是有意义的。除非我的管理员知道不知道。
user7610


6

您可以在/etc/systemd/system.conf以下行中取消注释:

DefaultTimeoutStartSec=90s
DefaultTimeoutStopSec=90s

并将值更改为您认为合适的值。


7
与其他答案相同,这不是交互式的。当systemd已经开始倒计时90年代时,进行这些更改为时已晚,我被迫无奈地坐下来。
user7610
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.