我试图找出我的启动脚本无法正常工作的原因.这非常简单,但我是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>
Run Code Online (Sandbox Code Playgroud)
当我尝试运行launchctl load <name>它似乎正确加载(因为它不会给我任何错误消息),但脚本似乎没有执行,即使在重新启动时.
我已经使用了我在网上找到的所有示例,但我无法弄清楚为什么在启动时没有运行我的脚本.
Aar*_*han 43
为了防止其他人遇到这个问题,并且已经<key>RunAtLoad</key><true/>在他们的plist中,我想提供一些额外的解决方案.
仔细检查权限以确保您的脚本是可执行的(查找"x"):
ls -l /opt/apache-tomcat-5.5.27/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)
必要时修改权限:
chmod +x /opt/apache-tomcat-5.5.27/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)
还要先直接运行脚本并确保它有效:
/opt/apache-tomcat-5.5.27/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)
如果脚本是可执行的,并且直接运行正常,请尝试拖尾系统日志以调试launchd:
sudo launchctl log level debug
tail -f /var/log/system.log
Run Code Online (Sandbox Code Playgroud)
该-f标志(基本上)持续显示日志的末尾(最新条目).您可以删除此标志以仅打印日志结尾的快照.如果使用此标志,则需要打开新终端以运行其他命令.按CTRL + C结束尾部会话.欲获得更多信息:
man tail
Run Code Online (Sandbox Code Playgroud)
完成调试后:
sudo launchctl log level error
Run Code Online (Sandbox Code Playgroud)
还有其他日志级别.欲获得更多信息:
man launchctl
Run Code Online (Sandbox Code Playgroud)
如果对脚本或plist进行任何更改,请确保重新加载plist.例如:
launchctl unload ~/Library/LaunchAgents/com.tomcat.plist
launchctl load ~/Library/LaunchAgents/com.tomcat.plist
Run Code Online (Sandbox Code Playgroud)
如果您只对脚本而不是plist进行了更改,则可以重新启动plist:
launchctl stop com.tomcat.plist
launchctl start com.tomcat.plist
Run Code Online (Sandbox Code Playgroud)
如果您将以下键值添加到plist:
<key>KeepAlive</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
然后你可以运行:
launchctl stop com.tomcat.plist
Run Code Online (Sandbox Code Playgroud)
它会自动重启.
如果这些都没有帮助,并且您在OS X上设置Tomcat时遇到了问题,那么本教程可能会有所帮助.
Jam*_*ead 14
要在调用launchctl load时自动运行脚本,需要添加: -
<key>RunAtLoad</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
或者你可以使用: -
launchctl start com.tomcat.plist
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35371 次 |
| 最近记录: |