如何编写一个脚本,在机器重新启动后重新启动在Mac服务器上的终端中运行的应用程序



我有一个通常在终端中运行的应用程序。这需要将目录更改为应用程序目录[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将为您提供有关项目运行状态的更多信息。

相关内容

最新更新