如何暂停ssh?
我想这个问题与如何配置dbus以允许ssh-user挂起服务器几乎相同? ; 除了我想更好地制定它。
假设我有一个运行不间断的Ubuntu服务器,我们称之为MyServer
。 那么我们说,我在MyServer
的同一个本地网络上有另一台PC,我们称之为MyLocalPC
。
然后MyLocalPC
保持暂停状态,除非它通过MyServer
wakeonlan
打开。 这部分过程非常适合我:我可以通过ssh
到MyServer
,在MyServer
ssh提示符下我可以发出wakeonlan
,并且MyLocalPC
唤醒 – 很棒。
然而,然而,一旦我完成MyLocalPC
工作,我想再次暂停它。 问题如下 – 如果我首先通过ssh
ssh进入MyLocalPC
,我可以轻松暂停机器:
[MyServer]$ ssh MyLocalPC [MyLocalPC]$ dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend
这将暂停MyLocalPC
– 但也将阻止正确退出ssh
,最终ssh
到MyServer
最终冻结。 我试图变得棘手并发出类似这样的事情:
[MyServer]$ ssh MyLocalPC "dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend" Failed to open connection to "session" message bus: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
然后我读到某处应该定义DISPLAY
变量 – 但是也失败了:
[MyServer]$ ssh MyLocalPC "DISPLAY=:0 dbus-send --session --dest=org.freedesktop.PowerManagement --type=method_call --print-reply --reply-timeout=2000 /org/freedesktop/PowerManagement org.freedesktop.PowerManagement.Suspend" Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PowerManagement was not provided by any .service files
那么有没有人知道如何在没有与MyServer
冻结的ssh
连接的情况下向MyLocalPC
发出暂停?
只需输入
(这是三次击键:输入,曲线,和号),ssh将进入后台,并最终自行超时。 如果您想在这种情况下放弃交互式会话,那就太好了。
或者,或者,将它放入MyLocalPC上的shell脚本中,并以一种背景连接的方式连接:
ssh -f MyLocalPC go-to-sleep
您需要使用ssh -Y
启用X11转发。 或者, at now + 2 minutes
使用at now + 2 minutes
只运行一次命令(有关更多信息,请参阅man at
)。
对我来说最简单的是使用at
命令:
echo 'pm-suspend' | sudo at now + 2 minutes
然后断开与SSH会话的连接。
将来设置一个cron作业2分钟并断开连接
当它锁定时我如何突破ssh? 有许多有效的解决方案。 有人提到过一个人; 我在我的系统上设置了一个保持活动超时 ,通过在~/.ssh/config
添加以下内容来自动挂起挂起的SSH会话:
Host * ServerAliveInterval 5 ServerAliveCountMax 4
暂停远程计算机后也可以工作。