很简单的launchd plist中没有运行我的脚本(VERY simple Launchd pli

2019-07-04 12:33发布

我试图找出为什么我的launchd脚本不能正常工作。 这是非常简单的,但我是新来的MAC环境,并试图让习惯。 这里是我的plist。 我知道ProgramArguments是必需的,所以我只是把脚本路径在那里。

<?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>com.tomcat.plist</string>   
  <key>ProgramArguments</key>  
  <array>  
    <string>/opt/apache-tomcat-5.5.27/bin/startup.sh</string>  
  </array>  
  <key>OnDemand</key>  
  <false/>  
</dict>  
</plist>

当我尝试运行launchctl load <name>它似乎正确加载(因为它没有给我任何错误消息),但脚本似乎并没有被执行,甚至在重新启动。

我用我在网上找到了所有的例子,我想不通这是为什么没有运行启动了我的脚本。

Answer 1:

万一别人碰到这个问题上运行,并已拥有<key>RunAtLoad</key><true/>在他们的plist,我想提供一些额外的解决方案。

仔细检查权限,以确保您的脚本是可执行的(寻找一个“x”):

ls -l /opt/apache-tomcat-5.5.27/bin/startup.sh

如有必要,修改权限:

chmod +x /opt/apache-tomcat-5.5.27/bin/startup.sh

也直接先运行该脚本,并确保它的工作原理:

/opt/apache-tomcat-5.5.27/bin/startup.sh

如果脚本是可执行文件,直接运行正常,尝试尾矿系统日志进行调试的launchd:

sudo launchctl log level debug 
tail -f /var/log/system.log

-f标志(基本)持续显示日志的末尾(最新条目)。 您可以删除这个标志只是打印日志结束的快照。 如果你使用这个标志,你需要打开一个新的终端来运行其他命令。 按CTRL + C来结束尾巴会议。 欲获得更多信息:

man tail

当你完成调试:

sudo launchctl log level error

还有其他的日志级别。 欲获得更多信息:

man launchctl

如果您对脚本或plist中的任何改变,请确保您重新加载的plist。 例如:

launchctl unload ~/Library/LaunchAgents/com.tomcat.plist
launchctl load ~/Library/LaunchAgents/com.tomcat.plist

如果你只修改了剧本,而不是plist中,你可以重新启动的plist:

launchctl stop com.tomcat.plist
launchctl start com.tomcat.plist

如果将以下键值添加到您的plist:

<key>KeepAlive</key>
<true/>

然后,你可以运行:

launchctl stop com.tomcat.plist

它会自动重新启动。

如果没有这种帮助,而你特别是具有与OS X设置Tomcat的问题, 本教程可能有所帮助。



Answer 2:

为了使你的脚本运行时,会自动调用launchctl负载,您需要添加: -

<key>RunAtLoad</key>
<true/>

另外,您可以使用: -

launchctl start com.tomcat.plist


Answer 3:

虽然我想大多数人不会有这样的问题,我想,这是值得投入在这里,因为我花了近两个小时,试图找出原因launchd load没有返回,尽管工作0退出代码。

这个问题很简单。 我plist文件有错误的文件扩展名(我有“ plst ”),并launchctl悄悄拒绝加载该文件。 更改扩展plist解决了这个问题。



文章来源: VERY simple Launchd plist not running my script
标签: macos launchd