OS X:如何在ssh会话中使计算机保持睡眠状态


29

当我ssh登录OS X电脑我的网络上的会话持续到OS X进入睡眠模式。

除了物理上敲击鼠标或键入键或手动禁用睡眠功能之外,是否有办法防止在SSH会话期间发生这种情况?

编辑:ssh会话通常将是一个简单的sshfs挂载。


您是否还不想阻止它 SSH会话之前进入休眠状态?
SamB 2010年

Answers:


9

这不是开箱即用的解决方案,但是如果没有其他人提出解决方案,它可能会起作用:-)

您可以使用命令来控制电源管理设置pmset。有关更多信息,请参见手册

我们要操纵的有趣设置是sleep

sleep-系统睡眠计时器(以分钟为单位的值,或者为0以禁用)

因此我们可以使用以下命令:

sudo pmset sleep 25      # go to sleep after 25 minutes
sudo pmset sleep 0       # disable sleep

现在,我们必须在登录和注销后触发这些命令。如果我没记错的话,Bash是Mac OS X的默认外壳,它将我们带到了以下两个文件:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits

在主目录中编辑或创建它们,然后添加适当的命令。如果需要,可以将当前的睡眠值保存在一个临时文件中,然后再从中恢复。

最后要解决的问题是sudo的密码提示。要授予用户无需任何密码即可调用pmset的权限,请使用sudoedit编辑/ etc / sudoers。您需要使用NOPASSWD标签。如果这是您的新手,请参阅sudoers手册


1
如果ssh连接只是sshfs挂载,此方法是否可以工作?
Stefan 2010年

1
我不确定,但是我不认为sshfs会打开登录shell,因此这不适用于sshfs。
echox 2010年

9

只要Mac已连接到电源,这便使我无论如何都可以通过SSH使用Mac。

系统偏好设置,节能器,显示器关闭时防止计算机自动休眠

Mac断电后,一切都将关闭,因此您不必担心电池寿命。


1
此选项在macOS Sierra上无用。无论此设置如何,我的iMac都会休眠,唤醒SSH访问,然后在SSH注销后立即休眠。真烦人。
布鲁诺·菲利普

在Mojave iMac上摆弄数小时的〜/ .ssh / config之后,这个答案终于解决了我的问题
n1000

6

OS X的内置pmset实用程序具有的设置可能会满足您的要求。检查pmset联机帮助页上的ttyskeepawake设置和随附的说明。

以下命令可能会执行您想要的操作:

sudo pmset -c ttyskeepawake 1

-c标志专门使该设置在计算机使用交流电源(而不是电池或UPS电源)运行时处于活动状态,并ttyskeepawake 1防止计算机在活动tty会话(可能是远程tty会话)期间休眠。如果会话处于非活动状态的时间超过睡眠计时器的时间,它将允许睡眠,但是如果这是一个问题,则也许根本不应该将计算机设置为睡眠状态。


6

要使用SSH在远程OSX机器上打开外壳并防止其在SSH会话期间休眠,请执行以下操作:

$ ssh -t me@mymacbook caffeinate -i bash

5

从Mac OS X 10.8开始,您应该可以使用该caffeinate(8)命令。

尝试caffeinate -s ssh server.example.com


9
OP正在尝试使远程 Mac(即ssh服务器)保持睡眠状态。除非我弄错了,否则您的示例只会阻止客户终端上的睡眠。
Owen

3

我在下面添加了以下脚本 .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $SHELL --login
  exit $?
fi

如果该进程是ssh守护程序的直接子进程,请通过caffeinate(8)命令运行相同的Shell,以防止系统在ssh会话期间进入休眠状态。


2

Mac上进行网络搜索可防止睡眠,有关您可以使用的实用程序和技巧的很多很好的信息。

但是,根据您的情况,我怀疑您真正想做的是拥有一个单独的ssh会话,该会话运行一个非常简单的命令行程序,以防止Mac进入睡眠状态。Apple在技术问答1160:防止睡眠中提供了完整的源代码。(不幸的是,此页面目前在Apple网站上已损坏,但您可以从Google的缓存中提取一份。)

我还没有测试过该程序是否可以从ssh会话成功运行,但是看起来可以。

请注意,sshfs实现通常不会一直保持登录到远程系统,而仅在需要文件或目录时运行会话。因此,您需要在最小化的终端窗口中运行的单独的ssh会话来运行失眠程序。

这种方法的优点是您无需使用sudo或将系统电源管理设置弄乱。

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.