Ste*_*fan 34 osx ssh power-management
当我通过ssh 连接到网络上的OS X计算机时,会话会持续到OS X进入睡眠模式。
除了物理碰撞鼠标或键入键,或者手动禁用睡眠功能之外,有没有办法在我的SSH会话期间防止这种情况发生?
编辑:ssh 会话通常是一个简单的 sshfs 安装。
ech*_*hox 12
这不是开箱即用的解决方案,但如果没有其他人提出解决方案,它可能会起作用:-)
您可以使用命令操作电源管理设置pmset。有关它的更多信息,请参阅联机帮助页。
我们想要操作的有趣设置是sleep:
sleep - 系统睡眠定时器(以分钟为单位的值,或 0 表示禁用)
所以我们可以使用以下命令:
sudo pmset sleep 25 # go to sleep after 25 minutes
sudo pmset sleep 0 # disable sleep
Run Code Online (Sandbox Code Playgroud)
现在我们必须在登录和注销后触发这些命令。如果我没记错的话,Bash 是 Mac OS X 的默认 shell,它让我们看到这两个文件:
Run Code Online (Sandbox Code Playgroud)~/.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 手册。
要使用 SSH 在远程 OSX 机器上打开 shell 并防止它在 SSH 会话期间休眠:
$ ssh -t me@mymacbook caffeinate -i bash
Run Code Online (Sandbox Code Playgroud)
小智 7
OS X 内置的 pmset 实用程序有一个可以做你想做的设置。查看pmset联机帮助页了解ttyskeepawake设置和随附的说明。
以下命令可能会执行您想要的操作:
sudo pmset -c ttyskeepawake 1
Run Code Online (Sandbox Code Playgroud)
-c当计算机使用交流电源(而不是电池或 UPS 电源)运行时,该标志使此设置处于活动状态,并ttyskeepawake 1防止计算机在活动 tty 会话(可能是远程会话)期间进入睡眠状态。这将允许睡觉,如果工作阶段已停用超过睡眠定时器更长的时间,但如果这是一个问题,也许是电脑不应在所有设置为睡眠。
从 Mac OS X 10.8 开始,您应该可以使用该caffeinate(8)命令。
试试caffeinate -s ssh server.example.com。