OS X: як уберегти комп'ютер від сну під час сеансу ssh


29

Коли я заходжу на комп'ютер OS X у своїй мережі, сеанс триває, поки OS X не перейде у сплячий режим.

Чи існує спосіб запобігти цьому під час мого сеансу SSH , окрім фізичного натикання миші чи набору клавіш або ручного відключення функції сну?

EDIT: сеанс ssh зазвичай є простим монтуванням sshfs.


Ви також не хочете перешкоджати сну перед сеансом SSH?
СамБ

Відповіді:


9

Це не випускне рішення, але воно, можливо, спрацює, якщо ніхто інший не придумає рішення :-)

Ви можете керувати налаштуваннями управління живленням за допомогою команди pmset. Дивіться довідкову сторінку для отримання додаткової інформації про нього.

Цікава настройка, якою ми хочемо маніпулювати, - це сон :

Сон - системний таймер сну (значення в хвилинах або 0 для відключення)

Тож ми можемо використовувати наступні команди:

sudo pmset sleep 25      # go to sleep after 25 minutes
sudo pmset sleep 0       # disable sleep

Тепер ми повинні запустити ці команди після входу та реєстрації. Якщо я пам'ятаю це право, Bash - це оболонка за замовчуванням для Mac OS X, яка приводить нас до цих двох файлів:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits

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

Остання проблема, яку потрібно вирішити - це запит пароля на sudo. Щоб дати користувачеві дозвіл викликати pmset без пароля, відредагуйте / etc / sudoers за допомогою sudoedit. Потрібно використовувати NOPASSWDтег. Якщо це для вас нове, ознайомтеся з посібником із судерів .


1
чи працював би цей метод, якби з'єднання ssh було лише кріпленням sshfs?
Стефан

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

9

Це дозволило мені використовувати свій Mac через SSH незалежно від того, доки мак підключений до джерела живлення.

Налаштування системи, Енергозбереження, Не дозволяйте комп'ютеру автоматично спати, коли дисплей вимкнено

Все вимикається, коли комп'ютер відключається від джерела живлення, тому вам не доведеться турбуватися про заряд батареї.


1
Цей параметр марний на macOS Sierra. Мій iMac спить незалежно від цього параметра, прокидається під час доступу до SSH, а потім спить одразу після виходу з SSH. Це дійсно дратує.
Бруно Філіпе

Ця відповідь остаточно вирішила мою проблему після того, як годинами обмінювався з ~ / .ssh / config на Mojave iMac
n1000

6

Вбудована в утиліта pmset OS X має налаштування, які можуть робити те, що ви хочете. Перегляньте на сторінці сторінки pmsetвідповідні ttyskeepawakeналаштування та супровідне пояснення.

Наступна команда, ймовірно, зробить те, що ви хочете:

sudo pmset -c ttyskeepawake 1

-cПрапора робить цю установку активної спеціально , коли комп'ютер працює від мережі змінного струму (на відміну від батареї або потужності ДБЖ), а також ttyskeepawake 1запобігає комп'ютер від сну в ході розмови виникла TTY (імовірно віддалений один). Це буде дозволяти спати , якщо сеанс був неактивний довше , ніж таймер сну, але якщо це проблема, можливо , комп'ютер не повинен бути встановлений , щоб спати взагалі.


6

Щоб використовувати SSH для відкриття оболонки на віддаленій машині OSX та запобігання її сну протягом тривалості сеансу SSH:

$ ssh -t me@mymacbook caffeinate -i bash

5

Оскільки Mac OS X 10.8, ви повинні мати можливість використовувати caffeinate(8)команду.

Спробуйте caffeinate -s ssh server.example.com.


9
ОП намагається уберегти віддалений Mac (тобто, ssh-сервер) від сну. Якщо я не помиляюсь, ваш приклад заважатиме спати лише на терміналі клієнта.
Оуен

3

Я додав наступний сценарій у .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $SHELL --login
  exit $?
fi

Якщо процес є прямим дочірнім демоном ssh, запустіть ту саму оболонку за допомогою команди caffeinate (8), щоб система не спала під час сеансу ssh.


2

У веб-пошуку mac, що запобігає сну, з'являється багато корисної інформації про утиліти та хитрощі, які ви можете використовувати.

Однак у вашій ситуації я підозрюю, що те, що ви насправді хочете зробити, - це провести окремий сеанс ssh, який запускає дуже просту програму командного рядка, яка заважає Mac не заснути. Apple надає повний вихідний код у Технічному запитанні 1160: Запобігання сну . (На жаль, наразі ця сторінка зламана на сайті Apple, але ви можете отримати копію з кеша Google.)

Я не перевіряв, чи можна успішно запустити цю програму з ssh сесії, але схоже, що це могло б.

Зауважте, що реалізація sshfs зазвичай не залишається ввійти у віддалену систему весь час, а просто запускає сеанс, коли їм потрібен файл або каталог. Тому для запуску програми безсоння потрібен окремий сеанс ssh, який працює в мінімізованому вікні терміналу.

Перевага такого підходу полягає в тому, що вам не потрібно використовувати sudo або возитися з налаштуваннями управління енергією системи.

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