Можно ли настроить общий доступ к Интернету, чтобы компьютер мог спать?

9

TL; DR: Internet Sharing мешает моему Mac спать. Мне нужно вручную спать системы на регулярной основе. Я хочу, чтобы настроить общий доступ к Интернету, чтобы прекратить предотвращать сон.

У меня дома есть iMac в моей спальне, слишком далеко от роутера, и я не могу использовать беспроводную связь, также покрытие 3G здесь ужасно, поэтому я включил общий доступ к Интернету, поэтому я могу использовать свой iPhone / iPad, подключенный через мой IMAC.

На работе я нахожусь в корпоративной сети, а беспроводная связь несколько неубедительна и слишком ограничена, поэтому я включил там общий доступ к Интернету на своем MacBook Pro, чтобы мой iPhone мог подключаться к внутренним вещам.

Проблема в том, что: когда я нажимаю + + (или > Спящий режим), ни один компьютер не переходит в спящий режим; если я сначала не отключу общий доступ к Интернету.

Дома я хочу, чтобы компьютер спал, пока я сплю (экономит электроэнергию + больше тишины), а на работе, когда я иду домой, я тоже хочу, чтобы он спал, поэтому мне не нужно закрывать все подключенные приложения (Adium, Colloquy и т. Д.) И открыть снова на следующий день.

Как я могу настроить pmsetили использовать Интернет, чтобы я мог спать на своем компьютере, не сталкиваясь с этой проблемой?

Примечание: я уже использовал, pmsetчтобы проверить, были ли другие причины, и оскорбление pidвсегда com.apple.InternetSharing.

Редактировать: я понимаю, что спящий компьютер сделает невозможным использование интернет-обмена. Я хочу, чтобы он полностью спал, и я хочу, чтобы общий доступ к Интернету снова включался только после пробуждения компьютера.

Ираэ Карвалью
источник
Мой вывод для команды выше DenySystemSleep. Хотя я нашел строку, я не смог использовать ее sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natдля изменения поведения. Не могли бы вы немного расширить свой ответ?
Ира Карвалью
Так, например, вы хотите что-то, что отключит совместное использование, а затем спать. И еще что-то, что автоматически при пробуждении включит обмен.
Джедгар
Точно! Это то, что мне нужно
Ира Карвалью

Ответы:

8

Я экспериментировал с использованием ControlPlane для достижения того, что вы хотите. Мой предварительный результат заключается в том, что он будет делать то, что вы хотите.

ControlPlane обнаруживает изменения в вашей системе, называемые «источниками доказательств». Изменения оцениваются с помощью «правил», которые определяют изменение в «контексте». С каждым контекстом связаны «действия».

Одним из «источников доказательств» является событие сна / бодрствования. Поэтому я настроил правило так, чтобы при событии сна (например, если вы нажали кнопку сна в меню Apple), срабатывал контекст «Время сна». И для этого контекста я отключил действие «ToggleInternetSharing».

После нажатия на кнопку «Сон» я получаю предупреждение о том, что общий доступ к Интернету отключен, и через некоторое время (кажется, что это навсегда, но, вероятно, всего 10 или 20 секунд) Mac переходит в режим сна.

И у меня есть второе правило, чтобы при событии пробуждения срабатывал контекст «Пробуждение», и это действие позволяло включить «ToggleInternetSharing».

Мои правила и действия:

введите описание изображения здесь введите описание изображения здесь

Попробуй это!

Это просто царапает поверхность того, что может сделать ControlPlane.

Gilby
источник
Удивительное приложение! Оно работало завораживающе! Большое спасибо за подробное объяснение. Кроме того, я проверил, что приложение полностью бесплатное и с открытым исходным кодом. Для меня это считается плюсом в пользу его использования =)
Irae Carvalho
Я знал о ControlPlane в течение некоторого времени, но не использовал его. Ваш вопрос был отличной причиной для изучения его возможностей - спасибо за это.
Гилби
+1 здесь ... С OS X Mavericks v10.9.4и до сих пор работает как шарм. Thank's
ГМО
Похоже, отличное приложение! К сожалению, переключение общего доступа к Интернету пока не работает в Эль-Капитане (вероятно, не в Сьерре).
Winterflags
2

Если вы работаете Lion, InternetSharingявно блокировка SystemSleep. Посмотри на:

strings /usr/libexec/InternetSharing | grep SystemSleep

Вывод этой команды: DenySystemSleep является доказательством, InternetSharingкоторое целенаправленно блокирует возможность ядра перейти в спящий режим. Этой защите есть простое объяснение: после InternetSharingзапуска клиенты этого Mac могут использовать его в качестве маршрутизатора для доступа в Интернет. Многие вещи могут быть автоматически запущены поверх этого подключения к Интернету без какого-либо знания человека перед экраном.

Эта связь должна быть нарушена только администратором системы, которая его запустила, а не каким-либо автоматическим поведением системы.

Это безопасное поведение.

Следовательно, правильный способ убедиться InternetSharing, что для режима сна Mac запланировано 4 события в следующем порядке:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

Это планирование, предлагаемое ControlPlane.

Дан
источник
Мой вывод для команды выше DenySystemSleep. Хотя я нашел строку, я не смог использовать ее sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natдля изменения поведения. Не могли бы вы немного расширить свой ответ?
Ира Карвалью
1
Я считаю, что @ daniel-azuelos означает демонстрацию ответственности InternetSharing. Предложенная им команда выполняет поиск в двоичном файле InternetSharing и находит строку, связанную с блокировкой режима сна. Это помогает подтвердить, что, вероятно, ответственно за блокировку сна, но не за то, чтобы получить желаемое поведение.
Грэм Милн
1

Нецелесообразно, чтобы Mac с включенным общим доступом к Интернету мог спать.

Функция общего доступа к Интернету - это версия программного обеспечения маршрутизатора: она выполняет роль шлюза в Интернет, сервера DHCP, брандмауэра и сервера пересылки DNS. Он функционирует так же, как маршрутизаторы, которые вы можете купить у местного продавца; и это бесплатно.

Однако есть огромный недостаток: если Mac, который действует как шлюз, выключен или спит, то другие машины не могут подключиться к сети.

Вот почему Internet Sharing не позволяет вашей машине перейти в спящий режим.

Но я могу поделиться файлами / iTunes / Screen, когда он спит

Да, вы можете поделиться всем этим и многим другим. Однако, когда вы переходите к этим файлам, ваш Mac просыпается . Это называется Wake On Demand и Bonjour Sleep Proxy .

Когда ваш Mac спит, он поддерживает некоторое сетевое соединение; он слушает, чтобы "пакеты" Bonjour разбудили компьютер. Это обрабатывается самим устройством Airport (сетевым адаптером); не компьютер. Когда он получает «пакет пробуждения», Mac просыпается, и вы можете начать совместное использование ресурсов.

Bonjour 1 - это служба обнаружения с нулевой конфигурацией, которая использует многоадресные службы доменных имен (mDNS), которые являются протоколом UDP 2 (он транслируется и не может быть маршрутизирован), который является небольшим, без сохранения состояния и минимальным транспортом, ориентированным на сообщения.

По сути, UDP (на чем основан Bonjour) идеально подходит для отправки на ваш компьютер сообщения «Проснись!».

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

Возвращаясь к более прагматичному подходу: если ваш Mac ложится спать и действует как шлюз, он либо никогда не засыпает, либо поднимается и опускается, как кто-то с тяжелой формой бессонницы.


1 Bonjour - это реализация Apple сети с нулевой конфигурацией (zeroconf), группы технологий, которая включает в себя обнаружение служб, назначение адресов и разрешение имен хостов. Добрый день находит устройства, такие как принтеры, другие компьютеры и сервисы, которые эти устройства предлагают в локальной сети, используя служебные записи системы доменных имен (mDNS).

2 UDP - это минимальный протокол транспортного уровня, ориентированный на сообщения. UDP не предоставляет никаких гарантий протоколу верхнего уровня для доставки сообщений, а уровень UDP не сохраняет состояния сообщений UDP после их отправки. Это просто, подходит для начальной загрузки или других целей без полного стека протоколов, таких как DHCP и Trivial File Transfer Protocol.

Аллан
источник
Аллан, спасибо за понимание. В моем конкретном случае я использую Internet Sharing только из-за MBP, который я подключаю к своему iMac через Thunderbolt Bridge, чтобы получить преимущество Ethernet (100 Мбит вместо ~ 30 Мбит Wi-Fi). Я не использую Internet Sharing в качестве «роутера». Поэтому для меня было бы целесообразно найти способ с помощью сценария или автоматизации включить / отключить общий доступ к Интернету (или принудительный сон).
Winterflags
Internet Sharing будет превратить свой Mac в маршрутизатор - это основная функция того , что делает совместное использование Интернета.
Аллан
Я понимаю, но я не говорю об этом с технической точки зрения. Я использую Internet Sharing только при подключении MBP через Thunderbolt Bridge к iMac, и поэтому не имеет смысла, чтобы iMac никогда не переходил в спящий режим независимо от того, подключен он или нет. Поэтому ищем обходной путь, возможно, с использованием сценариев.
Winterflags
1
Что ж, вы не намерены отменять общий доступ к Интернету для предотвращения перехода вашего MBP в спящий режим, но если вам нужен «обходной путь», посмотрите здесь: apple.stackexchange.com/questions/2488/…
Allan
Спасибо - я уже попробовал эти ответы и не смог заставить их работать с El Capitan (возможно, из-за SIP), но мне придется продолжить расследование.
Winterflags
1

Число рейнольдса ControlPlane, это работает для меня ...

Два контекста (оба идентичны) Правила Три Действия

CharlesB
источник
0

Когда блок управления питанием компьютера переводит устройство в спящий режим, он переходит в режим пониженного энергопотребления. Ваш средний исполняемый код на компьютере не выполняется обычным образом: компьютер поддерживает достаточно энергии для обновления памяти (при необходимости) и немного больше. Вы не сможете заниматься вычислениями общего назначения, пока компьютер спит.

Тем не менее, есть хорошая альтернатива, на которую вы должны обратить внимание. Вместо того, чтобы спать весь блок, проверьте показ сна в System Preferences -> Energy Saver. В моем сценарии использования у меня есть настройка «горячих углов» (которую вы можете включить System Preferences -> Desktop & Screen Saver -> Screen Saver), так что, когда я иду на обед и мне нужно заблокировать экран и / или просто перевести дисплей в спящий режим, я перехожу к нижней части. -левый угол. У меня хорошо работает, компьютер не выходит из режима сна, и любые длительные процессы, о которых я забыл, не прерываются. В вашем случае это означает, что ваша точка доступа WiFi не будет сброшена.

zwerdlds
источник
1
Это действительно очень полезно, я использую <kbd> ^ </ kbd> + <kbd> ⇧ </ kbd> + <kbd> ⏏ </ kbd> для этого. Но это не то, что я хочу. Мне не нужен общий Интернет, пока компьютер спит. Мне нужен компьютер, чтобы он действительно спал и даже выключил общий доступ и Wi-Fi. Буду редактировать мой вопрос, чтобы уточнить. В любом случае спасибо =)
Ира Карвалью
0

Вы можете использовать Power Manager, чтобы перевести Mac в режим сна после периодов бездействия. Power Manager может отменять процессы и приложения, которые блокируют режим ожидания, включая общий доступ к Интернету.

Руководство пользователя рассказывает, как это настроить:

Лучший сон, вызванный бездеятельностью

Power Manager предлагает альтернативу. Мы предоставляем бездействие, вызванное сном. Бездействие измеряется иначе, чем время простоя; неактивность - более простое измерение, определяемое исключительно активностью пользователя.

Кроме того, следующий рецепт показывает, как создать событие Power Manager, чтобы перевести ваш Mac в спящий режим после периода бездействия .

Power Manager: отключение питания после неактивности

Отказ от ответственности: я работаю в компании, которая разрабатывает Power Manager.

Грэм Милн
источник
У меня не работал интернет с активным разделением. -1 за потраченный час моей жизни.
Winterflags
Чего ты хотел достичь и что у тебя не получилось?
Грэм Милн
То же, что ОП и ваш ответ. Я настроил неактивности Сон, в надежде , что это будет «Force Sleep» с поддержкой общего доступа к Интернету в System Preferences> Общий доступ . Это не так, но он будет активировать сон, если Интернет-общий доступ был отключен
Winterflags
1
Power Manager выдает запрос сна в macOS. Если у вас есть проблемы со сном, как указывает другой вопрос, то те же проблемы со сном также будут влиять на запросы сна, выданные сторонними приложениями. Конечно, я могу ошибаться или просто ошибаться в моем понимании вашей ситуации. Я надеюсь, что вы можете найти решение.
Грэм Милн
1
macOS всегда будет спать, когда явно просят - Finder> Apple (меню)> Sleep . Не спать это поведение, которое предполагает проблемы с Mac.
Грэм Милн