如何从命令行防止Mac睡眠?


11

我在远程计算机上运行了一个长脚本。

我不想终止我的ssh会话,需要将其输入shell脚本。

如何防止我的Mac从命令行进入睡眠状态?


3
哪个OS X版本?
nohillside

Answers:


19

在Mountain Lion中,您可以使用该caffeinate命令。

caffeinate -u -t 1000

将防止闲置睡眠1000秒。


1
我还没有成功,任何'咖啡因'cmdline组合(包括上面的一个)和Caffeine.app在小牛队防止睡觉时盖子关闭。InsomniaX.app只是迄今为止阻止盖子睡眠的东西,但还没有找到工作的cmdline版本(还没有使goo.gl/CU06jb工作 - 它可能已经过时)。即便如此,我仍然想要一些能够显示密码要求的东西,即使在关闭时有限的可编程时间内拒绝睡眠......而且InsomniaX.app似乎也没有这样做。
约翰尼犹他州2014年

1
类似的问题。我在优胜美地,即使我在终端运行咖啡因,一段时间后屏幕变黑,我必须重新登录。这告诉我,咖啡因不会让Mac保持清醒,这是我的目标,所以Wifi连接可以持续/无论我发生什么都可以继续。
dmonopoly 2015年

11

这个问题的解决方案是保持客户端(在Mac)清醒。使用这样的方法是不可靠的。如果网络连接丢失会发生什么?即使您的Mac处于唤醒状态,脚本也会停止运行。

使用 nohup

如果调用了长时间运行的脚本eternity.sh,请尝试以下操作:

nohup /path/to/eternity.sh > /path/to/output.out &

现在您甚至可以关闭连接,您的脚本将继续运行&进程的背景使您可以保持连接打开并输入命令。通过以下方式查看脚本的任何输出:

tail -f /path/to/output.out

如果脚本位于您的路径上并且您希望将脚本输出写入output.out当前目录,则示例中的路径是可选的。

我管理一次运行几天的脚本。像这样的脚本应该从终端分离。值得庆幸的是,nohup提供了一个易于记忆的命令调用来实现这一点 - 想想没有挂断


5
另见man screen

@mankoff - 我已经在使用屏幕了。这是切片品种发现以来最好的命令。;)问题的要点是当我的mac入睡时,消除了“ssh to @ somewhere”的需要 - 我根本不想终止我的ssh会话 - 我在远程端的命令已经被屏幕“保护”了。;)
kobame

@ephsmith - 问题是:如何消除ssh会话终止... ofc nohup很适合远程命令不是交互式命令的情况。对于交互式命令,屏幕是更好的解决方案。无论如何,谢谢回复。
kobame

1
@kobame,也许是问题的关键点,这些附加信息应该包含在您的原始问题中。您问题的第一行是指长时间运行的脚本。我认为它不是交互式导致nohup的引用。
ephsmith

@kobame,这些答案中的任何一个都解决了你的问题吗?
ephsmith

7

另一种选择是pmsetpmset noidle 只要pmset正在运行,请使用该命令防止睡眠。不幸的是,它需要一个独立的终端窗口并pmset在其中运行。但是,另一个选项,caffeinate只允许您设置一定的时间。所以这是选择是否要打开第二个SSH会话或处理时间限制的问题。

编辑:根据binarybob的评论,您可以在后台运行它,如下所示:pmset noidle &返回pmset键入fg


您也可以pmset在后台运行,pmset noidle &因此继续使用当前命令提示符。键入fgpmset返回,此时您可以按Ctrl + C it
binarybob

@binarybob哦!我不知道。谢谢你的提示!
daviesgeek 2012年

@davisgeek - 非常好!Thanx为小费。
kobame

1
这个也适用于IPython笔记本:!pmset noidle- 当你有一个桌面服务IPython笔记本和远程连接的笔记本电脑时非常好。
杰森S

1
这对我不起作用。它成功运行,出现“防止空闲睡眠(^ C退出)...”消息,但它仍然进入睡眠状态。
Iulian Onofrei

6
caffeinate -i -s /bin/ssh ...

说明:

-i - 防止空闲睡眠。

-s - 防止系统睡眠(完全,即使您关闭盖子)。注意:它仅适用于交流电源。

/bin/ssh - 继续编写你想要执行的命令。ssh直接使用/bin/ssh也应该工作。

结果:只要ssh命令正在运行,您的系统就不会休眠。



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.