我有一个名为
startup.sh
的 shell 脚本,它执行以下操作(创建 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运行时,它只会创建内存磁盘,而Teamcity无法启动。
我的launchd 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
/Users/administrator/buildAgent/bin/agent.sh
包含什么内容? - Mark Setchelllaunchd
下环境与交互式 shell 运行时不同。 - Mark Setchellenv > /tmp/a
,并在startup.sh
中运行env > /tmp/b
,然后运行opendiff /tmp/{a,b}
。 - Mark Setchell