Answers:
这不是开箱即用的解决方案,但是如果没有其他人提出解决方案,它可能会起作用:-)
您可以使用命令来控制电源管理设置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手册。
从Mac OS X 10.8开始,您应该可以使用该caffeinate(8)
命令。
尝试caffeinate -s ssh server.example.com
。
我在下面添加了以下脚本 .bash_profile
if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
caffeinate -s $SHELL --login
exit $?
fi
如果该进程是ssh守护程序的直接子进程,请通过caffeinate(8)命令运行相同的Shell,以防止系统在ssh会话期间进入休眠状态。
在Mac上进行网络搜索可防止睡眠,有关您可以使用的实用程序和技巧的很多很好的信息。
但是,根据您的情况,我怀疑您真正想做的是拥有一个单独的ssh会话,该会话运行一个非常简单的命令行程序,以防止Mac进入睡眠状态。Apple在技术问答1160:防止睡眠中提供了完整的源代码。(不幸的是,此页面目前在Apple网站上已损坏,但您可以从Google的缓存中提取一份。)
我还没有测试过该程序是否可以从ssh会话成功运行,但是看起来可以。
请注意,sshfs实现通常不会一直保持登录到远程系统,而仅在需要文件或目录时运行会话。因此,您需要在最小化的终端窗口中运行的单独的ssh会话来运行失眠程序。
这种方法的优点是您无需使用sudo或将系统电源管理设置弄乱。