OS X: как сохранить компьютер от сна во время сеанса SSH

29

Когда я подключаюсь к компьютеру с OS X в моей сети, сеанс длится до тех пор, пока OS X не перейдет в спящий режим.

Есть ли способ предотвратить это во время моего сеанса SSH , кроме физического нажатия мыши или набора клавиш, или ручного отключения функции сна?

РЕДАКТИРОВАТЬ: сессия ssh обычно будет простым подключением sshfs.

Стефан
источник
Разве вы не хотели бы предотвратить его сон до сеанса SSH?
SamB

Ответы:

9

Это не готовое решение, но, возможно, оно будет работать, если никто не придет к решению :-)

Вы можете управлять настройками управления питанием с помощью команды pmset. Смотрите man-страницу для получения дополнительной информации об этом.

Интересная настройка, которой мы хотим манипулировать, это сон :

sleep - системный таймер сна (значение в минутах или 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тег. Если это ново для вас, посмотрите руководство sudoers .

echox
источник
1
будет ли этот метод работать, если соединение ssh было только монтированием sshfs?
Стефан
1
Я не уверен, но я не думаю, что sshfs откроет оболочку входа, так что это не будет работать с sshfs.
echox
9

Это позволило мне использовать мой Mac поверх SSH, несмотря на то, что Mac подключен к источнику питания.

Системные настройки, Экономия энергии, Предотвращение автоматического отключения компьютера при выключенном дисплее

Все отключается, когда Mac отключается от источника питания, так что вам не нужно беспокоиться о сроке службы батареи.

Бенуа Даффез
источник
1
Эта опция бесполезна на macOS Sierra. Мой iMac спит независимо от этого параметра, просыпается при доступе по SSH, а затем спит сразу после выхода из SSH. Это действительно раздражает.
Бруно Филипп
Этот ответ, наконец, решил мою проблему после того, как в течение нескольких часов возился с ~ / .ssh / config на Mojave iMac
n1000
6

Встроенная в OS X утилита pmset имеет настройку, которая может делать то, что вы хотите. Проверьте pmsetсправочную страницу для ttyskeepawakeнастройки и сопроводительного объяснения.

Следующая команда, вероятно, сделает то, что вы хотите:

sudo pmset -c ttyskeepawake 1

-cФлага делает эту установку активной специально , когда компьютер работает от сети переменного тока (в отличие от батареи или мощности ИБП), а также ttyskeepawake 1предотвращает компьютер от сна во время активного сеанса TTY (предположительно удаленный один). Это будет позволять спать , если сеанс был неактивен дольше , чем таймер сна, но если это проблема, возможно , компьютер не должен быть установлен , чтобы спать вообще.

робо
источник
6

Чтобы использовать SSH, чтобы открыть оболочку на удаленном компьютере с OSX и не дать ей спать в течение сеанса SSH:

$ ssh -t me@mymacbook caffeinate -i bash
starfry
источник
5

Начиная с Mac OS X 10.8, вы сможете использовать caffeinate(8)команду.

Попробуй caffeinate -s ssh server.example.com.

200_success
источник
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 или связываться с настройками управления питанием системы.

Нил Мэйхью
источник