我使用 SSH 连接到 Fedora 21 工作站,但几分钟后未使用该连接,系统进入睡眠状态,我失去了连接。
那么我怎样才能完全禁止系统进入挂起/睡眠模式呢?
答案1
我通过创建使用 systemd-inhibit 命令的 init.d 脚本解决了我的问题:
#!/bin/bash
nohup systemd-inhibit --why="Disable sleep" --mode=block /usr/bin/bash -c "while true; do sleep 120; done" >/dev/null 2>&1 &
exit 0
答案2
使用:
sudo systemctl mask suspend.target
sudo systemctl mask sleep.target
因为:
Systemd 管理着这一切。有一百万种方法可以触发关闭,包括 gnome/kde,NetworkManager
当然还有 systemd 本身。睡眠和挂起目标,就像关机一样,是“静态”的,即无法禁用的核心内置单元。但是,您可以掩盖它们并防止systemd
进入它们。
答案3
编辑:--what=idle
从命令中删除 - 显然这还不够。默认值为--what=shutdown:sleep:idle
,效果更好(但--what=sleep:idle
也应该有效)。
老问题,但 systemd-inhibit 解决方案的另一个变体是放入以下内容~/.profile
(在我的例子中,就在 byobu 启动之前)。然后,只要有登录 shell 打开(即主要是 SSH 会话,除非您也从非 GUI 控制台登录),睡眠就会被禁止。
# Inhibit idle sleep. This background process waits for the current shell to exit.
nohup systemd-inhibit --who=Bash --why="Byobu running" tail --pid=$$ -f /dev/null &
我在这里找到了这tail --pid
部分:https://stackoverflow.com/a/41613532/827828