有没有办法定期检查进程是否正在运行(可能使用Apple脚本或其他一些shell脚本),如果没有,那么在终端中执行它?
我有一个需要运行的PHP脚本,但经过一段时间它会中断,所以我需要再次启动它。
谢谢。
可能重复如何在系统引导或使用登录时自动运行某些内容?
有没有办法定期检查进程是否正在运行(可能使用Apple脚本或其他一些shell脚本),如果没有,那么在终端中执行它?
我有一个需要运行的PHP脚本,但经过一段时间它会中断,所以我需要再次启动它。
谢谢。
Answers:
在OSX中使用launchd来实现。launchd将在登录或启动时启动命令,如果进程终止,它将重新启动它。
该过程由.plist文件控制,该文件的格式与Apple文档中定义的相同,该手册页中的示例适用于您要求的情况。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.exampled</string>
<key>ProgramArguments</key>
<array>
<string>exampled</string>
</array>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
如果你想在用户登录时启动这个文件,请进入〜/ Library / LaunchAgents。如果机器启动然后/ Library / LaunchDaemons(无法访问GUI),但除非您添加UserName键,否则它将以root身份运行。(感谢@Gordon Davisson的纠正和对Apple定义的重读)
为了便于设置.plist,您可以使用Mac AppStore中提供的Lingon.app