Чи можу я написати сценарій, щоб здійснити дію безпосередньо перед тим, як комп’ютер лягає спати?


1

Я думаю, що мій комп'ютер випадково не синхронізує електронну пошту з Apple Mail, але це проблема лише тоді, коли він прокидається зі сну.

Це питання не є ні тут, ні там. Що я хотів би зробити, це написати сценарій / щось, що вийде з Apple Mail, якщо він виявить, що комп'ютер переходить у режим сну.

В ідеалі, був би подібний процес відкриття Apple Mail після пробудження зі сну, але це менше проблеми.

Я намагався шукати якусь бібліотеку системних подій, але все, що я можу знайти, - це fsevents (який, на мою думку, не має нічого про сон).

Дякую!

Відповіді:


2

Я пропоную використовувати демон, як SleepWatcher . Після встановлення SleepWatcher (посилання README, що додається до нього), ви можете запускати такі команди, як нижче.

/usr/local/sbin/sleepwatcher -s /path/to/sleepscript -w /path/to/wakeupscript

Сценарій

#!/bin/sh
osascript -e 'quit app "Mail"'

вийде з пошти та сценарію

#!/bin/sh
open -a /Applications/Mail.app $1

відкриє його. Ви можете зберегти їх у вигляді .shфайлів і посилатись на них з "сонника", але переконайтеся, що ви запускаєте chmod +x filename.shїх, перш ніж спробувати запустити їх. В іншому випадку OS X не визнає їх виконаними.

Тепер у вас є два варіанти завантаження сну-спостерігача: ви можете вручну запустити його, ви можете налаштувати LaunchAgent для цього. Мені подобається останнє, тому створіть файл з /Library/LaunchAgents/ім'ям com.custom.mailfix.plist(ім'я неважливо, але я рекомендую вам зберегти форматування, "com" та "plist"). Вміст файлу має нагадувати таке.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.custom.mailfix.plist</string>
<key>ProgramArguments</key>
<array>
    <string>/usr/local/sbin/sleepwatcher</string>
    <string></string>
    <string>-s /path/to/sleepscript</string>
    <string>-w /path/to/wakescript</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

Як і раніше, замініть контури скриптів на шляхи до скриптів оболонки. Щоб сказати OS X запускати цей агент при запуску, запустіть

sudo launchctl load -w /Library/LaunchAgents/com.custom.mailfix.plist

і що тоді? Ви можете бути трохи точнішими, а не лише посиланням.
Ruskes

1
Я відредагував свою відповідь, щоб бути більш конкретним. Вибач за те!
AstroPig7
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.