mac os x按属性列表定义守护程序工作期

时间:2015-05-09 06:57:04

标签: macos plist daemon launchd period

实际上,我是Mac OS X发布的属性列表中的新手。

我计划部署一个unix守护程序,仅在办公时间内为我的客户提供服务。例如,上午7:00 - 晚上9:00。

有没有可能只使用一个属性列表***。plist文件来实现它,或者我需要两个独立的属性列表文件来启动/停止守护进程服务?

请提出建议或欢迎任何建议!

非常感谢!

修改

呀。我打算用launchd启动和停止我的守护进程。我尝试使用如下参数:

<key>ProgramArguments</key>
<array>
    <string>myDaemon</string>
    <string>-e</string>
    <string>61200</string>
</array>
<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>5</integer>
    <key>Hour</key>
    <integer>6</integer>
</dict>

我尝试传递-e 61200作为参数让守护进程保持运行17个小时然后退出。但不幸的是。这种方式不起作用。

2 个答案:

答案 0 :(得分:0)

function testing(){ var value = "content"; return { set a(b){ value = b; }, get a() { return value; } }; } var test1 = new testing(); test1.a = "nope"; .plist文件只能描述应该启动守护程序的时间,而不应该在何时应该停止守护程序或在停止之前允许运行多长时间。

如果你想要的话,你的守护进程应该在给定的时间间隔后退出。

答案 1 :(得分:0)

我看到了实现你所描述内容的3种方法......

选项1

在您的服务器本身,在其启动代码中,让它设置alarm()以在17:00向自己发送SIGTERM。这样做的优点是非常干净,但缺点是您需要控制服务器的源代码,而这可能并非如此。

选项2

bash或其他包装器放在服务器的二进制文件中,然后从launchd启动包装器。在包装器脚本中,在后台启动实际的服务器二进制文件,然后等到17:00再发送SIGTERM。这样做的好处是无需更改服务器的源代码。轻微的缺点是它需要一个额外的(小)处理包装。

选项3

创建第二个launchd任务,该任务从17:00开始,并将SIGTERM发送到实际服务器。真的不太理想。

注意 建议您的服务器为SIGTERM实现一个处理程序,无论您采取哪种方式,它都会以有序的方式关闭 - 刷新数据库,关闭文件等。