问题描述
我有一个通常在终端中运行的应用程序。这需要将目录更改为应用程序目录[cd / mydirectory],然后启动应用程序./PurplesoftServer
如果服务器由于任何原因重新启动,我正在努力编写启动脚本来重新启动应用程序。我将脚本保存在/ Library / LaunchAgents
这是我的脚本:
```<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>PSM.Restart</string>
<key>ProgramArguments</key>
<array>
<string>/Users/stephenjay/Documents/HW/HW Customers/Acme server 200814</string>
<string>./PurpleSoftServer</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>```
为了加载脚本,我还在终端中运行了以下命令:
sudo launchctl load /Library/LaunchAgents/PSM.Restart.plist
sudo launchctl start PurplesoftServer
一切似乎都在运行-我将plist的所有权授予了 root:wheel
但是,无论是在运行Sudo命令之后还是在实际重启Mac服务器之后,应用程序都不会最终运行。
我错过了什么?
解决方法
ProgramArguments
数组中的第一项应该是可执行文件的路径,而不是cd
的目录。您需要改用WorkingDirectory
键。像这样:
...
<key>ProgramArguments</key>
<array>
<string>./PurpleSoftServer</string>
</array>
<key> WorkingDirectory</key>
<string>/Users/stephenjay/Documents/HW/HW Customers/ACME server 200814</string>
...
顺便说一句,您需要使用sudo launchctl unload
卸载错误版本,然后再次使用sudo launchctl load
加载固定版本。
BTW2,sudo launchctl list PSM.Restart
将为您提供有关项目运行状态的更多信息。