【发布时间】:2015-06-16 08:27:09
【问题描述】:
我正在尝试将 /private/tmp 挂载为 ram 磁盘。我有这个“ramfs.sh”脚本,我从网上找到的:
#!/bin/bash
ramfs_size_mb=1024
mount_point=/private/tmp
ramfs_size_sectors=$((${ramfs_size_mb}*1024*1024/512))
ramdisk_dev=`hdid -nomount ram://${ramfs_size_sectors}`
newfs_hfs -v 'Volatile HD' ${ramdisk_dev}
mkdir -p ${mount_point}
mount -o noatime -t hfs ${ramdisk_dev} ${mount_point}
chown root:wheel ${mount_point}
chmod 1777 ${mount_point}
如果我从终端手动运行,它工作很好。但是我从 LaunchDemon 运行它时遇到问题。我在文件“/Library/LaunchDaemons/com.kalugin.ramfs-for-db.plist”中有这些内容:
<?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.kalugin.ramfs-for-db</string>
<key>Program</key>
<string>/var/root/ramfs.sh</string>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/var/log/ramfs_for_db.log</string>
<key>StandardErrorPath</key>
<string>/var/log/ramfs_for_db_error.log</string>
<key>Debug</key>
<true/>
</dict>
</plist>
系统加载后我有:
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: Volatile HD *1.1 GB disk1
但是“mount”没有将 /private/tmp 显示为安装在 disk1 上。日志仅显示:“将 /dev/rdisk1 初始化为 1024 MB 不区分大小写的 HFS Plus 卷”。
所以在系统启动期间肯定会执行脚本,但看起来 mount 命令不起作用。有任何想法吗?谢谢。
编辑
我在脚本中添加了一些“echo”并使“mount”变得冗长。这是输出:
Creating ram disk...
Initialized /dev/rdisk1 as a 1024 MB case-insensitive HFS Plus volume
Mounting ram disk...
/dev/disk1 on /private/tmp (hfs, local, noatime)
Setting permissions...
所以看起来脚本运行良好,甚至安装了磁盘。但是看起来在启动期间“tmp”文件夹被覆盖了?
EDIT2
看起来一切都很好,除了在系统启动时卸载我安装的磁盘。 也有人注意到了这种行为link。
【问题讨论】:
标签: macos osx-yosemite mount launchd tmp