Я хочу, щоб це базувалося на ОС, тому мені не потрібне підключення до Інтернету чи відкритий браузер і т. Д. Просто щось, що може статися у фоновому режимі
Найпростіше це зробити за допомогою програми, але ось, як це зробити лише за допомогою вбудованих команд ОС. Я знаю, що ви хочете, щоб це було спричинене подіями, але я не впевнений, як це досягти, тому ось один із способів перевірити рівень акумулятора, а потім зробити щось інше, якщо він вище / нижче порогового значення.
Ви можете розглянути launchd
процес, це в основному заплановане завдання, яке виконується кожні x
хвилини. Вони часто використовуються досвідченими користувачами, але їх не так складно налаштувати. Ви налаштовуєте заплановане завдання, що запускається, з файлом .plist, який ви помістили в цей каталог: Macintosh HD\Library\LaunchDaemons
і так ви структуруєте файл .plist;
<?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>Debug</key>
<true/>
<key>ExitTimeOut</key>
<integer>120</integer>
<key>Label</key>
<string>com.me.BatteryInfo</string>
<key>ProgramArguments</key>
<array>
<string>/Users/yourusername/batt.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
Якби ви зберегли цей файл як com.me.BatteryInfo
у LaunchDaemons
згаданій вище папці, це створило б заплановане завдання, яке виконується кожні 30 хвилин. Число, 1800
безпосередньо вище, </dict>
- це час у секундах того, як часто ви хочете виконати завдання. Там, де написано <string>/Users/yourusername/batt.sh</string>
, ви вказуєте, який сценарій працює за графіком. Ви повинні залишити <string>
і </sting>
неушкодженими.
Рядок <string>com.me.BatteryInfo</string>
- це унікальна назва запланованого завдання. Якщо ви збираєтеся зробити декілька, переконайтесь, що кожен .plist має унікальне ім'я тут.
Наступне, що вам потрібно зробити - це змінити право власності на .plist на root
. Це потрібно як функція захисту (я припускаю, щоб програмне забезпечення / користувачі створювали заплановані шкідливі завдання). Щоб змінити право власності на файл, зробіть sudo chown root \Library\LaunchDaemons\yourtask.plist
(замініть yourtask.plist фактичним іменем файлу створеного вами .plist). Це завдання запропонує вам ввести пароль.
Тепер вам потрібно створити сценарій, який буде запускатися періодично. Потрібно створити .sh файл (скрипт bash), щоб сказати комп'ютеру, що робити. Щоб створити .sh файл, відкрийте текстовий редактор програмістів, таких як Sublime Text або Komodo Edit . НЕ використовуйте редагування тексту, оскільки це часто додає текст у ваші файли, що заважатиме вашому сценарію. Редагування тексту насправді не слід використовувати для коду.
Складіть скрипт (.sh-файл) із наступним кодом;
#!/bin/sh
percent=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}')
if [ $percent > 95 ]
then
echo 'charged.'
fi
exit 0
Замініть echo 'charged.'
термінальні команди, які ви хочете виконати, коли акумулятор заряджений. open /Applications/Notes.app
відкриє додаток Notes; ви можете змінити каталог, щоб відкрити іншу програму.
$percent > 95
Це повідомляє наступному рядку запускатись лише тоді, коли акумулятор більше 95
заряджений. Ви можете змінити це на все, що завгодно. Рівень акумулятора тут часто буде дещо відрізнятися від того, що відображається в рядку меню вгорі. Якщо ви хочете "працювати, коли акумулятор повністю заряджений", рекомендую залишити це як> 95 . Якщо ви хочете, щоб завдання було запущено, наприклад, коли ваш акумулятор опуститься нижче 20%, змініть його на$percent < 20
ПРИМІТКА. Оскільки це заплановане завдання, ваш сценарій буде працювати кожну x
кількість хвилин. Це означає, що якщо ви помістите open \Applications\Notes.app
всередину свого сценарію, програма Notes буде запускатися щохвилини x
(якщо ваш акумулятор заряджений)
Це завдання буде запущено, навіть якщо ніхто не входить у систему.
Я знаю, що ви давно задавали це запитання, але, сподіваємось, це комусь допоможе.