Eliminazione del contenuto di / private / tmp spostato su HDD diverso

1

Ho un Macbook Pro con 2 HD interni (HD di serie per dati e duplicatore di dati + SSD al posto dell'unità ottica, che ospita il sistema operativo). Ora sto cercando di ottimizzare questa configurazione per tenere conto della presenza dell'SSD, e voglio spostare la cartella temporanea dall'SSD (/ private / tmp) all'unità secondaria (/ Volume / MacintoshHD / private / tmp) .

Dopo questo ( link ), ecco cosa ho fatto:

sudo ditto /private/tmp /Volumes/MacintoshHD/private/tmp
sudo rm -rf /private/tmp
sudo ln -s /Volumes/MacintoshHD/private/tmp /private/tmp

Tutto va bene, ma quando riavvio, mi aspetto che la cartella venga svuotata come al solito. Tuttavia, ho scoperto che tutti i file che erano presenti nell'esecuzione del sistema operativo precedente sono ancora presenti.

La mia ipotesi è che qualunque script che svuota la cartella / private / tmp venga eseguito prima che l'HD magnetico venga montato, il che significa che il link che punta alla cartella tmp non punta da nessuna parte e quindi la cancellazione fallita.

Qualche idea su come risolvere questo problema? Qualche altro suggerimento per spostare la cartella / private / tmp su un'altra unità e mantenere comunque l'eliminazione automatica?

    
posta Samric 20.12.2014 - 16:32
fonte

1 risposta

1

Dopo aver fatto qualche ricerca, ho finito per scrivere uno script di shell e usare launchd per farlo eseguire all'avvio.

Lo script che 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

e la lista di proprietà (in / 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>

Ora la chiave sta usando wait4path per assicurarsi che l'HD secondario (MacintoshHD) sia montato correttamente prima di richiamare lo script. In caso contrario, lo script non cancellerà alcun file poiché non sarà accessibile.

    
risposta data 06.01.2015 - 21:21
fonte

Leggi altre domande sui tag