实际上,我是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个小时然后退出。但不幸的是。这种方式不起作用。
答案 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实现一个处理程序,无论您采取哪种方式,它都会以有序的方式关闭 - 刷新数据库,关闭文件等。