我正在尝试设置一个在 OSX 上.plist
使用的文件。launchctl
从命令行(不使用launchctl
)运行时,我们的应用程序执行如下:
/path/to/ourapp
...并终止我们的应用程序,我们输入:
/path/to/ourapp -k
...这会导致新实例ourapp
正确杀死正在运行的前一个实例。
现在我设置了一个.plist
文件来控制应用程序的执行launchctl
,如下:
// start.plist
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>ourapp</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/ourapp</string>
</array>
<key>OnDemand</key>
<false/>
<key>UserName</key>
<string>daniel347x</string>
<key>SHAuthorizationRight</key>
<string>system.preferences</string>
</dict>
...我在命令行执行它,如下所示:
launchctl load /path/to/start.plist
这成功地启动了应用程序。
不幸的是,在创建 a 时stop.plist
,如下所示(唯一的区别是添加了-k
参数):
// stop.plist
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>ourapp</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/ourapp</string>
<string>-k</string> // <-- only difference is adding this argument
</array>
<key>OnDemand</key>
<false/>
<key>UserName</key>
<string>daniel347x</string>
<key>SHAuthorizationRight</key>
<string>system.preferences</string>
</dict>
...并通过执行
launchctl unload /path/to/stop.plist
...应用程序不会终止...因此,似乎在使用时launchctl
,应用程序没有被等效地执行
/path/to/ourapp -k
有人能告诉我launchctl unload
真正在做什么吗——即它是否使用给定的参数从命令行调用应用程序——以及stop.plist
在使用时我能做些什么来让我工作launchctl unload
,无论它在做什么?