重启Linux中的所有服务而不重启内核?

Lap*_*sio 5 systemd reboot

我有具有加密驱动器的远程计算机,因此每次完全重新启动都需要对计算机进行物理访问。机器刚刚遇到磁盘空间不足的问题,因此部分正在运行的服务崩溃/进入奇怪的故障状态。我想“软重新启动”机器,而不实际重新启动整个内核,以避免重新安装驱动器和输入密码的必要性。

操作系统用于systemd服务管理和内核 4.9。

anx*_*anx 3

我的使用效果好坏参半(这些快捷方式“仅用于兼容性”)

init 1; init 3
Run Code Online (Sandbox Code Playgroud)

现在通常翻译成这样:

systemctl isolate rescue; systemctl isolate default
Run Code Online (Sandbox Code Playgroud)

这会杀死除了被认为是必需的或指定目标的一部分的服务之外的所有内容 - systemd 仍然提供大致模仿部分运行级别的目标。

systemctl 隔离单元

启动在命令行上指定的单元及其依赖项并停止所有其他单元,除非它们具有 IgnoreOnIsolate=yes (请参阅 systemd.unit(5))。如果给出的单元名称没有扩展名,则将假定扩展名为“.target”。-人1系统控制

我不太喜欢推荐这个的原因正是它的杀戮部分:

这类似于更改传统 init 系统中的运行级别。isolate 命令将立即停止新单元中未启用的进程,可能包括您当前正在使用的图形环境或终端。-人1系统控制

我在 Ubuntu 上尝试过,并认为我更喜欢 ifssh.servicenetwork.target是我的rescue.target. 因为如果只重新启动除ssh 及其网络依赖项之外的服务,肯定会更安全。

因为如果在激活rescue.target时出现问题,上面的命令可能会终止我的会话并且无法恢复所有内容。