web-dev-qa-db-ja.com

ターミナル:ウェイク時に、外部ディスクを自動的にマウントします

私はターミナルに不慣れなので、明白なことを自由に述べてください。

SleepWatcher Macがスリープ状態になる直前と直後にスクリプトを実行します。スリープ前に外部ディスクをアンマウントし、スリープ後に再マウントするスクリプトがあります。 (そうすれば、朝仕事に急いでいるときは、ふたを閉めてケーブルをすべて抜くだけで、「イジェクトしなかった、ジャーク!」という苦情はありません。)

スクリプトは正常に実行され、スリープの直前にアンマウントされます。ただし、ウェイク後に再マウントされることはありません。

#!/bin/sh

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

このスクリプトはターミナルで手動で実行できます。それならうまくいくでしょう。 SleepWatcherは、マウントするコマンドではなく、スクリプトを実行できます(ダイアログボックスを表示するように取得できます)。

何が足りないのですか?

Update:スクリプトを+ xとしてchmodしました。 diskutilを+ xとして実行できますか?

3

SleepWatcherがスクリプトを実行しているときに、デバイスが使用できない可能性があります。スクリプトでdiskutil list > /PATH/TO/SOME/FILEを実行して、スクリプトが実際に実行されたときにdiskutilが何を表示するかを確認できます。ドライブが実際にマウントできるようになるのを待つ間、スクリプトに遅延(たとえば、スリープ5)を導入する必要がある場合があります。

1
Chealion

単一のボリュームではなく、ディスク自体をマウントしてみてください(ディスク上の唯一のボリュームであっても)。

.wakeupスクリプトの代わりに、

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

と:

 diskutil mountDisk disk1s3

...もちろん、「disk1s3」を独自の外部ディスクの適切なデバイス識別子に置き換えます。 UUIDでボリュームを指定できる人に、その情報の場所を教える必要はないと思います。他のすべての人のために、ここに方法があります:

 diskutil list
0
Ambrose

スクリプトで/usr/sbin/diskutilを試してください。アプリケーションがスクリプトを実行する方法によっては、これがすべての違いを生む可能性があります。

0
Benjamin Dobson