Puis-je configurer mon Macbook pour démonter tous les disques externes lorsque je ferme le couvercle?

10

J'ai un nouveau Macbook Pro 13 "exécutant Mavericks. Cet ordinateur est connecté à un lecteur USB externe que j'utilise pour mes sauvegardes Time Machine et pour le stockage externe Les sauvegardes Time Machine se produisent plusieurs fois par jour et le lecteur est en grande partie inactif pour la plupart des le jour.

Lorsque je me précipite vers une réunion, vers la salle des serveurs ou que je rentre chez moi à la fin de la journée, je voudrais faire ce qui suit:

  1. Fermez rapidement le couvercle de mon Macbook.
  2. Demandez au Mac de démonter automatiquement tous les disques externes, le plus rapidement possible et de force si nécessaire. Je suis prêt à attendre quelques secondes pour que toutes les lumières s'éteignent.

Existe-t-il un moyen d'obtenir l'ordinateur pour démonter automatiquement tous les disques externes dès que je ferme le couvercle de mon Mac?

Actuellement, si j'oublie de démonter les disques externes, mon Mac me réprimande plus tard avec l'erreur "Le disque n'a pas été éjecté correctement. Si possible, éjectez toujours un disque avant de le débrancher ou de l'éteindre."

Je sais qu'il est préférable de toujours démonter un disque proprement avant de retirer l'interface du disque, mais je recherche une solution automatisée. Je ne suis pas très inquiet si une image de sauvegarde Time Machine est interrompue ou corrompue, car l'une des prochaines sauvegardes suivantes fonctionnera et j'ai très rarement besoin de restaurer à partir de la sauvegarde. Étant donné que le système de fichiers est un système de fichiers journalisé, le journal prend en charge de manière transparente de nombreuses autres erreurs de corruption du système de fichiers.

Stefan Lasiewski
la source
Étant donné que la déconnexion de votre compte démonte tous les lecteurs, y a-t-il un inconvénient important à se déconnecter simplement? En outre, je crois que le système d'exploitation vide tous les systèmes d'E / S écrits, donc le risque d'un problème réel d'éjection pendant le sommeil me semble assez faible - doublement pour les systèmes de fichiers journalisés.
bmike

Réponses:

8

Il existe un certain nombre d'applications qui peuvent exécuter des scripts en mode veille:

  • SleepWatcher - simple mais efficace.
  • Scénario - peut également exécuter des scripts à d'autres moments, comme après le réveil.
  • ControlPlane - plus personnalisable, vous permet d'exécuter des scripts après de nombreux événements différents.

Un script bash tel que le suivant démontera tous les disques spécifiés:

VOLUMES="/Volumes/drive1 /Volumes/drive2 /Volumes/drive3"
for volume in $VOLUMES ; do [ -d $volume ] && umount -f $volume done

Pour démonter tous les volumes sauf /:

umount -A

ou plus proprement…

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
grg
la source
6

Une autre option est Jettison (disponible sur l'App Store) - c'est ce que j'utilise depuis quelques mois maintenant et je n'ai eu aucun problème. Il a récemment gagné l'option de remonter automatiquement les disques encore connectés lorsque vous vous réveillez du sommeil.

La nouvelle version 1.3.0 (téléchargement direct uniquement - je suppose qu'elle est en route vers l'App Store) coûte plus cher et explique pourquoi cela se trouve dans sa FAQ.

Si j'ai bien lu, on pourrait acheter la version App Store pour deux dollars, puis passer à la version à téléchargement direct gratuitement, mais je n'ai pas confirmé ou essayé cela.

Pas exactement cher dans les deux cas, mais pas gratuit comme l'option SleepWatcher semble l'être.

man8
la source
4

Je vais développer la réponse de @ grgarside.

J'utilise SleepWatcher

  1. Installer à partir des ports:

    sudo port install sleepwatcher
    
  2. Lisez le manuel sur /opt/local/share/doc/sleepwatcher/ReadMe.rtfet via man sleepwatcher. Lisez ce vieux Machint de Macworld: Cure an insomniac Mac with SleepWatcher System . Selon le Machint je peux simplement ajouter du code à ~/.sleepet ~/.wakeup, ou aux fichiers globaux /etc/rc.sleep& /etc/rc.wakeup.

  3. Placez le code suivant dans ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Activez sleepwatcher. Remplacez <key>Disabled</key><true/>par <key>Disabled</key><false/>.

    sudo vim /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl load /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl list | grep sleepwatcher
    
  5. Vérifier:

    ps aux |grep [s]leepwatcher
    root              421   0.0  0.0  2459568   1012   ??  Ss    2:45PM   0:00.00 /opt/local/bin/daemondo --label=sleepwatcher --start-cmd /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup ; --pid=exec
    root              422   0.0  0.0  2460656   1888   ??  S     2:45PM   0:00.17 /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup
    
  6. Terminé!

Stefan Lasiewski
la source
Je pourrais utiliser un examen de cette réponse pour m'assurer que .plistj'active correctement la chose.
Stefan Lasiewski
Je l'ai suivi pas à pas, mais ça ne marche pas pour moi. Après le sommeil, je débranche mon disque dur externe, mon MacBook5,3 se réveille et lorsque j'ouvre le couvercle, j'obtiens l'erreur de disque éjecté incorrectement.
Saaru Lindestøkke
Cela fonctionne pour moi, mais seulement parfois. Pas certain de pourquoi.
Stefan Lasiewski
1
Je suis toujours en ML, donc ce n'est pas spécifique aux Mavericks, et je ne reçois pas les erreurs lorsque la machine est active. J'ai remarqué que le script .sleep est parfois exécuté au réveil, comme s'il n'avait pas assez de temps pour le faire quand il va se coucher.
Saaru Lindestøkke
1
Aussi un bon guide ici: damacy.net/post/9377132648/…
Dan