How to unmount (eject) disk(s) from macOS on schedule without using Automator or any other external app or scripter.
*The content was originally found on reddit, written by /u/neuralspark –shamelessly pasted here to serve as personal archive :-)
Make a new text file named com.diskejector.YOUR_VOLUME_HERE.plist
on your desktop. Open it, and paste this into it. The Hour
value is a 24 hour format, so this would eject all volumes on the disk that has the drive named YOUR_VOLUME_HERE
on it at 6 PM everyday. Obviously change the YOUR_VOLUME_HERE
and the 18
to meet your requirements.
[code]
<?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.diskejector.YOUR_VOLUME_HERE</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/diskutil</string>
<string>unmountDisk</string>
<string>YOUR_VOLUME_HERE</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>18</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
[/code]
Save and close it
Open Terminal, and type the following lines:
sudo mv ~/Desktop/com.diskejector.YOUR_VOLUME_HERE.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/com.diskejector.YOUR_VOLUME_HERE.plist
sudo chmod 644 /Library/LaunchDaemons/com.diskejector.YOUR_VOLUME_HERE.plist
sudo launchctl load -w /Library/LaunchDaemons/com.diskejector.YOUR_VOLUME_HERE.plist
Boom! Now your disk will unmount each night at 6 PM. It will fail silently if the disk isn’t there, so no harm no foul.
Repeat this for each volume you need to unmount, replacing YOUR_VOLUME_HERE
with the drive name.