Чи можна налаштувати Інтернет-обмін таким чином, щоб комп'ютер міг спати?


9

TL; DR: Інтернет-обмін заважає моєму 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щоб змінити поведінку. Чи можете ви розширити відповідь трохи?
Ірає Карвальо

Так, наприклад, ви хочете щось, що відключить спільний доступ, а потім спати. І ще щось, що автоматично, прокинувшись, увімкне обмін.
GEdgar

Саме так! Це те, що мені потрібно
Irae Carvalho

Відповіді:


8

Я експериментував із використанням ControlPlane, щоб досягти того, що ви хочете. Мій попередній результат - це зробить те, що ви хочете.

ControlPlane виявляє зміни у вашій системі під назвою "джерела доказів". Зміни оцінюються за допомогою "правил", які визначають зміну в "контексті". З кожним контекстом пов'язані "дії".

Одним із "джерел доказів" є подія сну / неспання. Отже, я налаштував правило, щоб у події сну (наприклад, ви натиснули сон у меню Apple), спрацьовував контекст "Час сну". І для цього контексту я використав дію "ToggleInternetSharing" для вимкнення.

Після натискання на сплячий режим отримує сповіщення про те, що Інтернет-обмін вимикається і через деякий час (здається, назавжди, але, мабуть, лише 10 або 20 секунд) Mac переходить у режим сну.

І я маю друге правило, щоб у випадку події пробудження запускався контекст "Пробудження", і це означає, що ввімкнути "ToggleInternetSharing".

Мої правила та дії:

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

Спробуй це!

Це просто дряпання поверхні того, що може зробити ControlPlane.


Дивовижне додаток! Це спрацювало як шарм! Велике спасибі за детальне пояснення. Крім того, я перевірив, що програма повністю безкоштовна і з відкритим кодом. Для мене це вважається плюсом на користь його використання =)
Іра Карвальо

Я знаю про ControlPlane вже деякий час, але не використовував її. Ваше запитання стало відмінною причиною для вивчення його можливостей - за це дякую.
Гілбі

+1 тут ... З OS X Mavericks v10.9.4і досі працює як шарм. Дякую
gmo

Здається, чудове додаток! На жаль, переключення Інтернету в даний час не працює в Ель-Капітані (напевно, теж не в Сьєррі).
Winterflags

2

Якщо ви працюєте з Левом, 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

Немає можливості мати комп’ютер з включеним спільним доступом до Інтернету, щоб він міг спати.

Функція спільного доступу до Інтернету - це програмна версія маршрутизатора: вона діє як шлюз до Інтернету, DHCP-сервер, брандмауер та передавач DNS. Це функції так само, як маршрутизатори, які ви можете придбати у вашого місцевого продавця; і це безкоштовно.

Однак, є величезний мінус: якщо Mac, який діє як шлюз, вимкнено або спить, то інші машини не можуть вийти в Інтернет.

Ось чому Інтернет-обмін заважає вашому апарату спати.

Але я можу ділитися файлами / iTunes / Screen, коли він спить

Так, ви можете поділитися всіма цими речами та іншим. Однак, коли ви переходите до цих файлів, ваш Mac прокидається . Це називається Wake On Demand і Bonjour Sleep Proxy .

Коли ваш Mac спить, він зберігає мережеве з'єднання дещо "живим"; це прослуховування для "пакетів" Bonjour, щоб розбудити комп'ютер. Цим займається пристрій аеропорту (мережевий адаптер); не комп’ютер. Коли він отримає "пакет пробудження", Mac прокидається і ви можете розпочати обмін ресурсами.

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

В основному, UDP (на чому ґрунтується Bonjour) ідеально підходить для того, щоб надіслати повідомлення на ваш комп’ютер із запитом "Прокинься!"

Для того, щоб переглядати Internt (використовуйте комп'ютер за шлюзом Mac), вам потрібен повний стек протоколів, який базується на TCP . Йому знадобляться DHCP, NAT, брандмауер тощо, а значить, доведеться розповсюджувати всі ці сервіси до того, як клієнти зможуть переглядати Інтернет. Це призведе до значної затримки.

І повернувшись до більш прагматичного підходу, якби ваш Mac заснув і діяв як шлюз, він або ніколи не лягатиме спати, або був би вгору і вниз, як хтось із поганим випадком безсоння.


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

2 UDP - мінімальний протокол транспортного рівня, орієнтований на повідомлення. UDP не надає гарантій протоколу верхнього рівня для доставки повідомлень, і рівень UDP не зберігає жодного стану повідомлень UDP, щойно надіслані. Він простий, підходить для завантажувальної та інших цілей без повного стеку протоколів, таких як DHCP і Trivial Protocol Transfer Protocol.


Аллан, дякую за розуміння. У моєму конкретному випадку я використовую лише Інтернет-обмін через MBP, який я підключаю до свого iMac через Thunderbolt Bridge, щоб отримати перевагу Ethernet (100 Мбіт замість ~ 30 Мбіт Wifi). Я не використовую Інтернет-обмін як "роутер". Тому для мене було б практичним знайти спосіб за допомогою скрипту або автоматизації, щоб включити / вимкнути спільний доступ до Інтернету (або примусити сон).
Winterflags

Internet Sharing буде перетворити свій Mac в маршрутизатор - це основна функція того , що робить спільне використання Інтернету.
Алан

Я розумію, але я не кажу про це в технічному плані. Я використовую Інтернет-обмін лише під час підключення MBP через Thunderbolt Bridge до iMac, і тому немає сенсу, щоб iMac ніколи не лягав спати незалежно від того, підключений він чи ні. Тому шукайте рішення, можливо, це стосується сценаріїв.
Winterflags

1
Що ж, ви не збираєтесь перекривати Інтернет-обмін, щоб не допустити сну MBP, але якщо ви хочете "вирішити", дивіться тут: apple.stackexchange.com/questions/2488/…
Аллан

Дякую - я вже пробував ці відповіді, і мені не вдалося змусити їх працювати з El Capitan (можливо, через SIP), але мені доведеться дослідити далі.
Winterflags


0

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

Однак є хороша альтернатива, на яку слід звернути увагу. Замість того, щоб спати весь блок, перевірте, чи не відображається сон System Preferences -> Energy Saver. У моєму випадку я маю налаштування гарячого кута (який ви можете ввімкнути System Preferences -> Desktop & Screen Saver -> Screen Saver), щоб, коли я збираюся обідати, і мені потрібно заблокувати екран і / або просто перевести дисплей у режим сну, я рухаюся донизу -лівий кут. Для мене добре працює, комп'ютер не повертається з режиму сну, і жодні тривалі процеси, про які я забув, не перериваються. У вашому випадку це означає, що точка доступу до вашої мережі Wi-Fi не втратиться.


1
Це дійсно дуже корисно, для цього я використовую <kbd> ^ </kbd> + <kbd> ⇧ </kbd> + <kbd> ⏏ </kbd>. Але це не те, що я бажаю. Мені не потрібно Інтернет-обмін, поки комп'ютер спить. Мені потрібен комп'ютер, щоб справді спати і навіть вимкнути спільний доступ і Wi-Fi. Відредагуйте моє запитання, щоб уточнити. Спасибі все одно =)
Irae Carvalho

0

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

Посібник користувача розповідає, як це налаштувати:

Кращий бездіяльність, спровокований сном

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

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

Менеджер живлення: вимкнення живлення після завдання бездіяльності

Відмова: Я працюю в компанії, яка розробляє Power Manager.


Не працювало для мене з активним обміном в Інтернеті. -1 за те, щоб витратити годину мого життя.
Winterflags

Чого ти хотів досягти, а що не працювало для тебе?
Грем Мілн

Те саме, що ОП і ваша відповідь. Я налаштував сплячий режим бездіяльності, сподіваючись, що він буде «примусовий до сплячого режиму» з увімкненим спільним доступом в Інтернеті в системних налаштуваннях> Спільний доступ . Це не відбулося, але він активує сон, якщо вимкнути Інтернет-обмін.
Winterflags

1
Power Manager видає запит на сон у macOS. Якщо у вас виникають проблеми зі сном, як вказує інше питання, то ті ж проблеми зі сном також впливатимуть на запити щодо сну, що надсилаються сторонніми програмами. Звичайно, я можу помилитися чи просто помилитися в розумінні вашої ситуації. Сподіваюся, ви зможете знайти рішення.
Грем Мілн

1
macOS завжди буде спати, коли явно просити спати - Finder> Apple (меню)> Sleep . Не спить - це поведінка, яка говорить про проблеми з Mac.
Грем Мілн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.