我是 Terminal 的新手,因此请随意陈述一些显而易见的事情。
睡眠观察者在 Mac 进入睡眠状态之前和之后运行脚本。我有一个脚本,用于在睡眠之前卸载外部磁盘,然后在睡眠之后重新安装。(这样,当我早上匆忙去上班时,我只需合上盖子,拔出所有电缆,就不会收到“你没有弹出它,混蛋!”的抱怨。)
脚本运行良好,并且在睡眠之前卸载。但是,唤醒后不会重新安装。
#!/bin/sh
diskutil mount 8851F3A7-60A7-39A7-9DA8-41BE1499DE6C
我可以在终端中手动运行此脚本。然后它就可以工作了。SleepWatcher 可以执行脚本(我可以让它显示一个对话框),但不能执行挂载命令。
我错过了什么?
更新:我已将脚本 chmod 为 +x。能diskutil 可以作为 +x 运行吗?
答案1
当 SleepWatcher 运行其脚本时,设备很可能不可用。您可以尝试运行diskutil list > /PATH/TO/SOME/FILE
脚本,看看diskutil
脚本实际运行时看到的内容。您可能需要在脚本上引入延迟(例如 sleep 5),等待驱动器变为可用状态以便实际安装。
答案2
/usr/sbin/diskutil
在脚本中尝试。根据应用程序执行脚本的方式,这可能会产生很大的不同。
答案3
尝试安装磁盘本身,而不是单个卷(即使它是磁盘上唯一的卷)。
对于你的 .wakeup 脚本,替换
diskutil mount 8851F3A7-60A7-39A7-9DA8-41BE1499DE6C
和:
diskutil mountDisk disk1s3
...当然,用您自己的外部磁盘的正确设备标识符替换“disk1s3”。我认为我不需要告诉能够通过 UUID 指定卷的人在哪里可以找到该信息。对于其他人,方法如下:
diskutil list