【发布时间】:2017-05-06 02:04:11
【问题描述】:
我有一个 shell 脚本 startup.sh,它执行以下操作(创建一个 RAM 磁盘并启动 teamcity 代理):
#!/bin/bash
DISK=`/usr/bin/hdiutil attach -nobrowse -nomount ram://16777216`
/usr/sbin/diskutil erasevolume HFS+ "RamDiskCache" $DISK
/Users/administrator/buildAgent/bin/agent.sh start
我可以通过键入./startup.sh 从命令行运行它,它运行正常。当我从 launchd 运行时,它只会创建 RAM 磁盘,teamcity 不会启动。
我的已启动 plist 位于 ~/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>com.datafinch.teamcity</string>
<key>Program</key>
<string>/Users/administrator/startup.sh</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
我错过了什么?
编辑
这是agent.sh文件:
https://gist.github.com/chriskooken/19f5856e3ce3c2322c53cb0afa69b057
【问题讨论】:
-
@andlrc 抱歉,这只是我最后一次尝试。我已经更新了问题
-
/Users/administrator/buildAgent/bin/agent.sh中有什么内容? -
@MarkSetchell 我在问题中添加了该文件的要点
-
我怀疑问题几乎可以肯定是您的脚本中没有指定 PATH 并且
launchd下的环境与运行交互式 shell 时的环境不同。 -
尝试在你的shell中运行
env > /tmp/a,在你的startup.sh中运行env > /tmp/b,然后运行opendiff /tmp/{a,b}