终端:唤醒后,自动安装外部磁盘


3

我是Terminal的新手,请随时声明显而易见的内容。

SleepWatcher在Mac进入睡眠之前和之后立即运行脚本。我有一个脚本,可以在休眠之前卸载外部磁盘,然后在之后重新加载。(这样,当我早上急着去上班时,我可以关上盖子,拔出所有电缆,而不会收到“您没把它弹出,混蛋!”的投诉。)

脚本运行良好,可以在入睡前立即卸载。但是,唤醒后不会重新安装。

#!/bin/sh

diskutil mount 8851F3A7-60A7-39A7-9DA8-41BE1499DE6C 

我可以在终端中手动运行此脚本。这样就可以了。SleepWatcher可以执行脚本(我可以显示一个对话框),而不是执行命令。

我想念什么?

更新:我已经将脚本更改为+ x。可以磁盘工具来为+ X上运行?


我没有/usr/sbin/diskutil mountDisk在普通的crontab中工作(直接或在脚本中工作),但是当从根目录的crontab或按用户启动的作业运行时,它确实可以工作。
Lri 2012年

Answers:


1

当SleepWatcher运行其脚本时,很有可能该设备不可用。您可以尝试diskutil list > /PATH/TO/SOME/FILE在脚本中运行,以查看diskutil实际运行脚本时看到的内容。在等待驱动器实际可用之前,可能需要在脚本上引入延迟(例如,sleep 5)。


只是尝试了一下(18秒),仍然没有骰子。如何记录脚本的运行情况?
马修·罗伯森

获取脚本以运行diskutil list会导致日志文件为。它甚至没有列出内部磁盘。(手动运行命令会生成正确的日志文件。)呵呵。
马修·罗伯森

如果您运行diskutil >> / PATH / TO / SOME / FILE只是为了获取输出,并看到diskutil甚至可以运行,或者是其他问题。
Chealion

@Chealion,如果它与SleepWatcher一起运行,我只会得到空白文件。如果我手动运行它们,则会得到正确的输出。因此,出于某种原因,diskutil不会自动运行。是否可以通过终端(或AppleScript)挂载外部磁盘?
马修·罗伯森

1
奇怪的问题,您使用的是diskutil完全路径还是完整路径usr/sbin/diskutil?如果您没有使用完整路径,请在脚本中尝试使用完整路径。
Chealion

0

尝试/usr/sbin/diskutil输入脚本。根据应用程序执行脚本的方式,这可能会有所不同。


0

尝试安装磁盘本身,而不是单个卷(即使它是磁盘上的唯一卷)。

对于您的.wakeup脚本,请替换

 diskutil mount 8851F3A7-60A7-39A7-9DA8-41BE1499DE6C

有:

 diskutil mountDisk disk1s3

...当然,用您自己的外部磁盘的正确设备标识符替换“ disk1s3”。我认为不需要告诉能够通过其UUID指定卷的人在哪里可以找到该信息。对于其他所有人,方法如下:

 diskutil list
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.