Tengo una Macbook pro con 2 HD internos (HD estándar para datos y duplicador de datos + SSD en lugar de la unidad óptica, que aloja el sistema operativo). Ahora estoy tratando de optimizar esta configuración para tener en cuenta la presencia de la SSD y quiero mover la carpeta temporal de la SSD (/private/tmp) a la unidad secundaria (/Volume/MacintoshHD/private/tmp) .
Siguiendo esto ( http://blog.alutam.com/2012/04/01/optimizing-macos-x-lion-for-ssd/comment-page-1/#ramdisk ), esto es lo que hice:
sudo ditto /private/tmp /Volumes/MacintoshHD/private/tmp
sudo rm -rf /private/tmp
sudo ln -s /Volumes/MacintoshHD/private/tmp /private/tmp
Todo está bien, pero cuando reinicio, espero que la carpeta se vacíe como de costumbre. Sin embargo, descubrí que los archivos que estaban presentes en la ejecución anterior del sistema operativo todavía están presentes.
Mi suposición es que cualquier secuencia de comandos que vacíe la carpeta /private/tmp se ejecuta antes de que se monte el HD magnético, lo que significa que el enlace que apunta a la carpeta tmp no apunta a ninguna parte en ese momento, y por lo tanto, la eliminación fallida.
¿Algúna idea de cómo arreglar esto? ¿Alguna otra sugerencia para mover la carpeta /private/tmp a otra unidad y aún así conservar la eliminación automática?
Después de investigar un poco, terminé escribiendo un script de shell y usando launchd para que se ejecutara en el momento del arranque.
El script que uso (/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
y la lista de propiedades (en /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>
Ahora la clave es usar wait4path para asegurarse de que el HD secundario (MacintoshHD) esté correctamente montado antes de invocar el script. Si no lo hace, el script no eliminará ningún archivo, ya que no se podrá acceder a ellos.
mmmmmm
bmike
periodic
script una vez por cada período de tiempo una vez que se monta el sistema? También podría hacer la limpieza.sámrico
sámrico
mmmmmm