我正在尝试创建一个 RAM 磁盘,在系统启动时加载以前的内容,并且每六个小时将内容写入磁盘映像。目前,当您从终端(“sudo bash LogToRAM.sh”)运行脚本时,一切正常。但是在启动期间从launchd运行时,它不起作用。
这是日志中的行;第一行只是给出了一些关于我们在引导过程中的位置的想法:
SecurityAgent[202] Showing Login Window
com.mechcozmo.LogToRAM[51] + /Developer/usr/bin/SetFile -a V /Volumes/LogfileRAMdisk
com.mechcozmo.LogToRAM[51] ERROR: File Not Found. (-43) on file: /Volumes/LogfileRAMdisk
com.mechcozmo.LogToRAM[51] + /usr/sbin/asr -source '/Library/Application Support/LogToRAM/RAMdisk_store.dmg' -target /Volumes/LogfileRAMdisk/ -noverify
请注意,“set -vx”位于脚本的顶部;它提供了很多关于脚本中发生的事情的信息。我目前的理论是 /Volumes 目录在引导过程的这个阶段不存在,但这似乎不太可能是诚实的。
你知道 - 这是正确的。我已经尝试在 afp 上安装一个卷 - 在你登录之前它不会工作。虽然我敢打赌你可以很容易地用“卷是否存在?”来验证这一点。(我忘记了外壳中的内容)。
要在脚本运行时确认卷是否存在(这似乎是导致这些错误的最可能原因),请在顶部添加几行以将当前活动卷的列表输出到 /tmp 或 /var/log 中的文件。
这些卷通常何时创建/安装?
另外,你的脚本什么时候运行?来自 /etc/rc.local?从 /etc/rc*.d 中的命令?
在不知道您的启动顺序的情况下进行一些猜测:
当您尝试使用Login Hook时发生了什么(使用第一种方法并且不要忘记
sudo
)?行得通吗?登录挂钩稍后加载,因此应该可以访问更多功能。