3

Как запустить скрипт, когда диск монтируется под OSX?

Мой пример использования заключается в том, что я хотел бы автоматически копировать изображения с моего USB-накопителя / жесткого диска, когда он вставлен в мое устройство чтения карт USB, а когда вставлен DVD или CD, я бы хотел скопировать его для хранения в моем медиацентре.

Я пытался использовать Marco Polo (как упоминалось в этом связанном вопросе), но из того, что я вижу, он может обнаруживать только наличие определенного USB-устройства, а не наличие определенного жесткого диска.

1 ответ1

3

Вы можете написать пользовательский демон запуска, который запускается при монтировании файловой системы. Нить здесь http://forums.macosxhints.com/archive/index.php/t-89968.html должна помочь вам начать работу.

Вам нужно написать plist launchd, который запускает скрипт при монтировании любой файловой системы. Затем ваш сценарий должен проверить, что интересующий вас том смонтирован, а затем сделать все, что ему нужно.

Это нужно для запуска от имени пользователя root или от имени пользователя? Это определит, будет ли ваш список вставлен в /Library /LaunchDaemons или ~ /Library /LaunchDaemons. Если последний, он будет работать только тогда, когда пользователь вошел в систему.

ОБНОВЛЕНИЕ - emmby указал, что URL больше не действителен. Таким образом, вам нужно использовать ключ StartOnMount в вашем демоне запуска. Например (скопировано с http://stuff-things.net/2015/03/18/backups-with-rsync-and-launchd/ ):

<?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>net.stuff-things.backup-to-dropbox</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/spike/bin/backup-to-dropbox</string>
    </array>
    <key>StartOnMount</key>
    <true/>
  </dict>
</plist>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .