2014-02-22 51 views
4

TL; DR:有没有办法在我的机器启动时禁用Pow服务器启动,但保留在需要运行时通过powder up手动启动服务器的功能?如何在启动计算机时启动Pow服务器(OS X)?

我使用Pow作为本地开发(并通过Powder gem进行管理)。我想设置Pow以便服务器在启动时不会自动启动,因为运行会耗尽我的电池寿命,而且我并不总是编码。

Pow已将自己添加到launchd,我似乎无法得到Pow服务器在启动后未运行的情况,但仍可以在需要启动服务器时通过powder up或其他等效命令运行。

我已经试过了没有奏效:

  • 设置为cx.pow.powd过程中不可使用按键通过launchctl unload -w ~/Library/LaunchAgents/cx.pow.powd防止战俘从开始启动,同时也防止了手动启动,当我需要过程它
  • 设置RunAtLoadNO在cx.pow.powd.plist文件中也没有工作,后来意识到这不是用来控制守护进程的启动行为。

回答

3

忘记发布答案我最终搞清楚了。

原来,这实际上很简单,并且在Lunchy(launchctl的友好包装)和快速位bash别名的帮助下很容易。有点不好意思,我不知道launchctl很好,但这是个窍门。

步骤(假设Lunchy和战俘已安装):

  1. 运行lunchy stop -w pow:这将停止战俘,并标记服务作为launchctl禁用,因此战俘时不会加载机启动。 (这是我对这个问题最初尝试的同样的净效应。)
  2. 在你的.bash_profile(或.profile等)中设置别名来强制启动服务。 =>alias pu='lunchy start -F pow'

当您重新启动计算机,战俘应停止,并运行pu(或别名)应该启动它。您可以通过运行lunchy status来查看前/后运行的服务列表。

这也是一种非常有效的方法,可以启动/停止开发所需的服务组,但不一定需要运行其余时间(mongo,redis等)。

0

使用KeepAlivePathState键。

PathState <dictionary of booleans> 
     Each key in this dictionary is a file-system path. If the value of the key is true, then the job 
     will be kept alive as long as the path exists. If false, the job will be kept alive in the 
     inverse condition. The intent of this feature is that two or more jobs may create semaphores in 
     the file-system namespace. 

当你想启动pow服务器时,在路径上创建一个文件。

0

最近我遇到了这个问题,只需将cx.pow.powd.plist移动到另一个文件夹即可解决问题,该文件夹已成功禁用Pow服务器的自动启动。当我想再次启动时,我只需将cx.pow.powd.plist移回~/Library/LaunchAgents/cx.pow.powd并运行powder up

相关问题