Можно ли запускать скрипты на сон и наяву?

48

MacBook Pro 2010 работает под управлением OS X Lion.

Можно ли запускать сценарии для событий сна и пробуждения?

Мое конкретное приложение состоит в том, что у меня есть тома Truecrypt с синхронизацией Dropbox, которые я регулярно использую как на своем MacBook, так и на iMac. Я редко закрываю свой MBP, так как закрывать крышку намного быстрее и проще, но это означает, что я должен помнить, чтобы отключить мои тома Truecrypt и позволить им синхронизироваться обратно перед закрытием моего MBP. Достаточно тривиально подключать / отключать их по сценариям, но я бы хотел пойти дальше и сделать так, чтобы эти сценарии запускались автоматически.

ш-бета
источник

Ответы:

17

Похоже, что при поставке ОС режим сна / пробуждения не может запускать сценарии , но сторонние решения были разработаны.

У меня нет личного опыта работы с этими программами или их поставщиками.

Даниэль
источник
2
Сценарий, кажется, делает то, что я ищу. Благодарность!
sh-beta
У меня был Сценарий, запускающий яблочный скрипт, который запускает сценарий bash и вуаля.
благоухающий
Чтобы завершить приложение, просто введите его в новом окне AppleScrip и сохраните в папке SleepScripts: скажите приложению «CodeBox», завершите, скажите
brainray
24

SleepWatcher может быть полезен .

Из описания: Может использоваться для выполнения команды Unix, когда Mac или дисплей Mac переходит в режим ожидания или просыпается, по истечении заданного времени без взаимодействия с пользователем или когда пользователь возобновляет деятельность после перерыва или когда питание поставка ноутбука Mac прилагается или отсоединяется. Он также может отправить Mac в спящий режим или получить время с момента последней активности пользователя.

У меня нормально работает на 10.6.8. Доступны различные версии для поддержки от 10,1 (!) До 10,7

DaveEmme
источник
Вот несколько советов для Mac OSX, которые используют SleepWatcher.
studgeek
4
Вы можете установить SleepWatcher от Homebrew , например brew install sleepwatcher. И посмотрите этот пост , это очень полезно. Утилита SleepWatcher также поддерживает OS X El Capitan (10.11).
Rockallite
11

Это мое собственное приложение, так что учтите это, но ControlPlane имеет возможность выполнять действия, основанные на Sleep / Wake. Вы найдете его на http://www.controlplaneapp.com/ .

ControlPlane является форком MarcoPolo и был обновлен для работы на Snow Leopard и Lion.

Dustin
источник
1
Очень крутая звуковая утилита, излишняя для этого, но если вам нужно активировать больше, чем пробуждение / сон, то это звучит довольно круто. Мне также нравится поддержка Growl, чтобы вы знали, что она делает. И это бесплатно :).
studgeek
2
Должен быть принятый ответ, потому что это бесплатно
Кевин Паркер
Может ли это использоваться для монтажа и демонтажа дисков с режимом сна и пробуждения? нам нужно писать сценарии автоматизатора?
bicepjai
1
Спустя годы контрольная плоскость теперь не поддерживается из-за накопления несовместимостей, которые Дастин разместил в своем блоге, которые он не успел исправить. Жаль, имеет смысл, хотя.
Lahwran
6

Я разработал следующий простой Launch Daemon для обеспечения триггера «пробуждения» для скриптов на Leopard:

<?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>wake-alert</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>z=/tmp/wake; test -s $z || { date > $z; say w; }; 
tail -1 /Library/Logs/DirectoryService/DirectoryService.server.log | grep -v Sleep || > $z
        </string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Logs/DirectoryService/DirectoryService.server.log</string>
    </array>
    <key>ExitTimeOut</key>
    <integer>2</integer>
    <key>ThrottleInterval</key>
    <integer>1</integer>
</dict>
</plist>

Вы можете заменить «сказать w» своим кодом. Я пишу дату в z, но вы можете изменить это, чтобы написать что-нибудь. Возможно, вам придется увеличить «ExitTimeOut» для некоторых сценариев. Мой демон запуска находится по адресу /Library/LaunchDaemons/wake-alert.plist

Демон запуска следит за DirectoryService.server.log и записывает во временный файл, если файл пуст. Файл очищается записью журнала «Sleep» и выключением.

Если вы используете «быстрое переключение пользователей» для перехода в спящий режим, вы обнаружите, что сценарии, для которых требуется вошедший в систему пользователь, попытаются запустить слишком рано и потерпят неудачу, если вы не измените Launch Daemon - возможно, grep «Succeeded» в «secure.log».

Невилл Хиллиер
источник
1
/Library/Logs/DirectoryService/DirectoryService.server.logне существует в Высокой Сьерре (10.13).
Новакер
Возможно, есть и другие журналы, которые можно использовать.
Невилл Хиллер
2

Другая программа, которую вы можете обнаружить и попробовать - это EventScripts . Несмотря на то, что это очень впечатляющая программа , которую я рекомендовал бы вообще, после тестирования его для этой цели она НЕ на самом деле , как представляется, возможность запуска скриптов достаточно быстро для них , чтобы работать , прежде чем ваш Mac переходит в спящий режим, и вместо того, чтобы сценарий сна будет не запускайте до тех пор, пока не проснется Mac, что (очевидно) побеждает цель.

Я надеюсь спасти вас и всех, кто читает эти часы испытаний, которые потребовались мне, чтобы прийти к такому выводу. Мне жаль говорить, что это не удалось, потому что во многих отношениях это действительно хорошо продуманная, довольно мощная и гибкая программа. Это также довольно недорого (3 доллара). Тем не менее, низкоуровневая производительность, по-видимому, отсутствует для запуска сценария перед сном.

С другой стороны, в моих тестах (до сих пор) лунатик оказался довольно надежным и быстрым. Это также бесплатно, что потрясающе. Я буду продолжать тестирование, и если я обнаружу, что оно иногда не работает, я обновлю свой ответ и продолжу тестировать другие варианты.

ОБНОВЛЕНИЕ Я не обнаружил, что лунатик всегда был надежным с тех пор, как изначально писал этот ответ, хотя изначально он работал. В моем случае мне не нужно запускать произвольные сценарии, а просто извлекать внешние диски. Я нашел небольшое и недорогое приложение, которое делает это очень хорошо: Jettison . Это очень быстро стало одной из немногих утилит, без которых я не могу жить. Если ваши потребности такие же, как и у меня, я думаю, вы найдете, что это стоит тех долларов, которые они берут.

иконоборец
источник
1

WakeWatcher - это простое безликое фоновое приложение для OS X, которое я создал для решения этой проблемы. Он запускается ~/.onwakeпри обнаружении пробуждения. Затем вы можете поместить команды для монтирования / перемонтирования ваших дисков в этот скрипт.

WakeWatcher подходит для использования в качестве элемента входа. Это не очень сложно, но это бесплатно и просто.

Выполнение сценариев в спящем режиме было бы простым дополнением, но меня беспокоит время, которое скрипты могут выполнить до того, как система действительно перейдет в спящий режим. Если вам это действительно нужно, откройте проблему с проектом github, и я добавлю ее.

Эрик
источник