У меня Macbook pro с 2 внутренними HD (стандартный HD для данных и удвоитель данных + SSD вместо оптического привода, на котором размещается ОС). Сейчас я пытаюсь оптимизировать эту настройку, чтобы учесть наличие SSD, и я хочу переместить временную папку с SSD (/private/tmp) на дополнительный диск (/Volume/MacintoshHD/private/tmp) .
После этого ( http://blog.alutam.com/2012/04/01/optimizing-macos-x-lion-for-ssd/comment-page-1/#ramdisk ) я сделал следующее:
sudo ditto /private/tmp /Volumes/MacintoshHD/private/tmp
sudo rm -rf /private/tmp
sudo ln -s /Volumes/MacintoshHD/private/tmp /private/tmp
Все хорошо, но когда я перезагружаюсь, я ожидаю, что папка будет очищена, как обычно. Однако я обнаружил, что любые файлы, которые присутствовали в предыдущем исполнении ОС, все еще присутствуют.
Я предполагаю, что любой скрипт, очищающий папку /private/tmp, выполняется до того, как магнитный HD будет смонтирован, а это означает, что ссылка, указывающая на папку tmp, тогда никуда не указывает, и, следовательно, неудачное удаление.
Есть идеи, как это исправить? Любые другие предложения по перемещению папки /private/tmp на другой диск и сохранению автоматического удаления?
Проведя некоторые исследования, я написал сценарий оболочки и использовал launchd, чтобы он выполнялся во время загрузки.
Сценарий, который я использую (/usr/local/bin/empty-tmp.sh):
#!/bin/bash
# Delete files (other than directories) that haven't been modified in more than 1 day
find /Volumes/MacintosHD/private/tmp -not -type d -ctime +1d -delete
# Delete empty directores that have been created more than 1 day ago
find /Volumes/MacintoshHD/private/tmp -d -type d -empty -mindepth 1 -Btime +1d -delete
и список свойств (в /Library/LaunchDeamons):
<?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.samric.emptytmp</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/bin/wait4path /Volumes/MacintoshHD/private/tmp/ && /usr/local/bin/empty-tmp.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
</dict>
</plist>
Теперь ключ использует wait4path, чтобы убедиться, что вторичный жесткий диск (MacintoshHD) правильно смонтирован перед вызовом сценария. Если этого не сделать, сценарий не удалит файлы, поскольку они будут недоступны.
мммммм
bmike
periodic
сценарий один раз для каждого периода времени после монтирования системы? Это может также сделать очистку.Самрик
Самрик
мммммм