Có thể định cấu hình Chia sẻ Internet để cho phép máy tính ngủ không?


9

TL; DR: Chia sẻ Internet đang ngăn máy Mac của tôi ngủ. Tôi cần phải tự ngủ hệ thống một cách thường xuyên. Tôi muốn một cách để định cấu hình Chia sẻ Internet để ngăn chặn giấc ngủ.

Tôi có một iMac ở nhà trong phòng ngủ cách xa bộ định tuyến của tôi và tôi không thể sử dụng mạng không dây, ngoài ra, vùng phủ sóng 3G ở đây rất tệ, vì vậy tôi đã kích hoạt Chia sẻ Internet để tôi có thể sử dụng máng kết nối iPhone / iPad của mình iMac.

Tại nơi làm việc, tôi ở trong một mạng công ty và không dây có phần khập khiễng và quá hạn chế, vì vậy tôi cũng đã bật Chia sẻ Internet trên MacBook Pro của mình, vì vậy iPhone của tôi có thể tiếp cận nội bộ.

Vấn đề là: Khi tôi nhấn + + (hoặc> Ngủ), không máy tính nào đi ngủ như mong muốn; đó là trừ khi tôi tắt chia sẻ Internet trước.

Ở nhà tôi muốn máy tính ngủ khi tôi ngủ (tiết kiệm năng lượng + im lặng hơn) và tại nơi làm việc khi về nhà tôi cũng muốn nó ngủ, vì vậy tôi không phải đóng tất cả các ứng dụng được kết nối (Adium, Colloquy, v.v.) và mở lại vào ngày hôm sau

Làm cách nào tôi có thể định cấu hình pmsethoặc Chia sẻ Internet để tôi có thể ngủ máy tính của mình mà không gặp phải sự cố này?

Lưu ý: Tôi đã sử dụng pmsetđể kiểm tra xem có lý do nào khác không và pidluôn luôn vi phạm com.apple.InternetSharing.

Chỉnh sửa: Tôi nhận ra rằng việc ngủ máy tính sẽ khiến việc sử dụng Chia sẻ Internet không thể thực hiện được. Tôi muốn nó ngủ hoàn toàn và tôi muốn Internet Sharing chỉ được bật lại khi máy tính thức dậy.


Đầu ra của tôi cho lệnh trên là DenySystemSleep. Mặc dù tôi đã tìm thấy chuỗi, tôi không thể sử dụng sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natđể thay đổi hành vi. Bạn có thể mở rộng bạn trả lời một chút?
Irae Carvalho

Vì vậy, ví dụ, bạn muốn một cái gì đó sẽ tắt chia sẻ, sau đó ngủ. Và một cái gì đó khác, sẽ tự động thức dậy, bật chia sẻ.
GEdgar

Chính xác! Đây là những gì tôi cần
Irae Carvalho

Câu trả lời:


8

Tôi đã thử nghiệm sử dụng ControlPlane để đạt được những gì bạn muốn. Kết quả sơ bộ của tôi là nó sẽ làm những gì bạn muốn.

ControlPlane phát hiện các thay đổi đối với hệ thống của bạn được gọi là 'nguồn bằng chứng'. Các thay đổi được đánh giá bằng 'quy tắc' xác định thay đổi trong 'bối cảnh'. Liên kết với mỗi bối cảnh là "hành động".

Một trong những "nguồn chứng cứ" là một sự kiện ngủ / thức. Vì vậy, tôi đã định cấu hình quy tắc để trên một sự kiện ngủ (ví dụ: bạn đã nhấp vào chế độ ngủ trong menu Apple), bối cảnh 'Thời gian buồn ngủ' được kích hoạt. Và đối với bối cảnh này, tôi đã sử dụng hành động 'ToggleI InternetShared' để tắt.

Sau khi nhấp vào Ngủ, tôi nhận được thông báo rằng Internet Sharing sẽ bị tắt và sau một thời gian (có vẻ như là mãi mãi nhưng có lẽ chỉ 10 hoặc 20 giây) Mac sẽ chuyển sang chế độ ngủ.

Và tôi có một quy tắc thứ hai để trong một sự kiện đánh thức, bối cảnh 'Thức dậy' được kích hoạt và điều này có hành động để đặt 'ToggleI InternetShared'.

Quy tắc và hành động của tôi:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Thử nó!

Đây chỉ là bề mặt của những gì ControlPlane có thể làm.


Ứng dụng tuyệt vời! Nó làm việc như một say mê! Rất cám ơn đã giải thích chi tiết. Ngoài ra, tôi đã kiểm tra xem ứng dụng này hoàn toàn miễn phí và là nguồn mở. Đối với tôi, điều này được coi là một lợi thế của việc sử dụng nó =)
Irae Carvalho

Tôi đã biết về ControlPlane một thời gian, nhưng không sử dụng nó. Câu hỏi của bạn là một lý do tuyệt vời để khám phá khả năng của nó - cảm ơn vì điều đó.
Gilby

+1 ở đây ... Với OS X Mavericks v10.9.4và vẫn hoạt động như một nét duyên dáng. Cảm ơn
gmo

Có vẻ như một ứng dụng tuyệt vời! Thật không may, hiện tại việc chia sẻ Internet không hoạt động ở El Capitan (có lẽ cũng không ở Sierra).
Winterflags

2

Nếu bạn đang chạy Lion, InternetSharingrõ ràng đang khóa SystemSleep. Có một cái nhìn tại:

strings /usr/libexec/InternetSharing | grep SystemSleep

Đầu ra của lệnh này: DenySystemS ngủ là bằng chứng InternetSharingcố tình ngăn chặn khả năng hạt nhân đi ngủ. Có một lời giải thích đơn giản cho sự bảo vệ này: một khi InternetSharingđược kích hoạt, các máy khách của máy Mac này có thể sử dụng nó như một bộ định tuyến để truy cập Internet. Rất nhiều thứ có thể được tự động chạy trên đỉnh của kết nối Internet này mà không có bất kỳ kiến ​​thức nào về người đứng trước màn hình.

Liên kết này chỉ nên được phá vỡ bởi quản trị viên của hệ thống đã khởi động nó chứ không phải bất kỳ hành vi hệ thống tự động nào.

Đây là một hành vi an toàn.

Do đó, phương pháp chính xác để đảm bảo InternetSharingtắt khi ngủ Mac là lên lịch 4 sự kiện theo thứ tự sau:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

Đây là lịch trình được cung cấp bởi ControlPlane.


Đầu ra của tôi cho lệnh trên là DenySystemSleep. Mặc dù tôi đã tìm thấy chuỗi, tôi không thể sử dụng sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natđể thay đổi hành vi. Bạn có thể mở rộng bạn trả lời một chút?
Irae Carvalho

1
Tôi tin rằng @ daniel-azuelos có nghĩa là chứng minh rằng InternetShared chịu trách nhiệm. Lệnh ông gợi ý các tìm kiếm thông qua nhị phân InternetShared và tìm chuỗi liên quan đến chặn giấc ngủ. Điều này giúp xác nhận những gì có khả năng chịu trách nhiệm ngăn chặn giấc ngủ, nhưng không phải để có được hành vi mong muốn của bạn.
Graham Miln

1

Sẽ không thực tế khi bật Mac với tính năng Chia sẻ Internet có thể đi ngủ.

Tính năng Chia sẻ Internet là phiên bản phần mềm của bộ định tuyến: Nó hoạt động như một cổng vào internet, máy chủ DHCP, tường lửa và chuyển tiếp DNS. Đó là các chức năng giống như các bộ định tuyến bạn có thể mua từ nhà bán lẻ địa phương; và nó miễn phí.

Tuy nhiên, có một nhược điểm lớn: Nếu máy Mac hoạt động như cổng bị tắt hoặc ngủ, thì các máy khác không thể truy cập trực tuyến.

Đây là lý do tại sao Internet Sharing ngăn máy của bạn đi ngủ.

Nhưng tôi có thể chia sẻ tệp / iTunes / Màn hình khi ngủ

Vâng, bạn có thể chia sẻ tất cả những điều đó, và nhiều hơn nữa. Tuy nhiên, khi bạn truy cập vào các tệp đó, máy Mac của bạn sẽ thức dậy . Đây được gọi là Wake On Request và Bonjour Sleep Proxy .

Khi máy Mac của bạn đang ngủ, nó sẽ giữ cho kết nối mạng hơi "sống;" nó đang lắng nghe "gói" Bonjour để đánh thức máy tính. Điều này được xử lý bởi chính thiết bị Sân bay (bộ điều hợp mạng); không phải máy tính. Khi nhận được "gói thức", Mac thức dậy và bạn có thể bắt đầu chia sẻ tài nguyên của mình.

Bonjour 1 là dịch vụ khám phá cấu hình không sử dụng Dịch vụ tên miền đa hướng (mDNS), là giao thức UDP 2 (nó được phát và không thể định tuyến), là một phương tiện truyền tải nhỏ, không trạng thái và tối thiểu.

Về cơ bản, UDP (những gì Bonjour dựa trên) là hoàn hảo để gửi tin nhắn đến máy tính của bạn để nói "Dậy đi!"

Để duyệt Internt (sử dụng máy tính phía sau cổng Mac), bạn cần ngăn xếp giao thức đầy đủ dựa trên TCP . Nó sẽ cần DHCP, NAT, tường lửa, v.v. điều đó có nghĩa là nó sẽ phải quay vòng tất cả các dịch vụ đó trước khi cho phép khách hàng duyệt web. Điều này sẽ giới thiệu rất nhiều độ trễ.

Và quay trở lại với một cách tiếp cận thực tế hơn, nếu máy Mac của bạn đi ngủ và hoạt động như một cửa ngõ, nó sẽ không bao giờ đi ngủ hoặc sẽ lên xuống như một người mắc chứng mất ngủ tồi tệ.


1 Bonjour là triển khai mạng cấu hình không (zeroconf) của Apple, một nhóm các công nghệ bao gồm khám phá dịch vụ, gán địa chỉ và phân giải tên máy chủ. Bonjour định vị các thiết bị như máy in, máy tính khác và các dịch vụ mà các thiết bị đó cung cấp trên mạng cục bộ bằng cách sử dụng các bản ghi dịch vụ của Hệ thống tên miền đa hướng (mDNS).

2 UDP là một giao thức lớp vận chuyển hướng thông điệp tối thiểu. UDP không đảm bảo cho giao thức lớp trên để gửi tin nhắn và lớp UDP không giữ lại trạng thái của tin nhắn UDP sau khi gửi. Nó đơn giản, phù hợp cho bootstrapping hoặc các mục đích khác mà không có ngăn xếp giao thức đầy đủ, chẳng hạn như Giao thức truyền tệp DHCP và Trivial.


Allan, cảm ơn vì sự sáng suốt của bạn. Trong trường hợp cụ thể của tôi, tôi chỉ sử dụng Chia sẻ Internet vì MBP mà tôi kết nối với iMac của mình qua Thunderbolt Bridge để đạt được lợi thế của Ethernet (100 Mbit thay vì ~ 30 Mbit Wifi). Tôi không sử dụng Chia sẻ Internet như một 'bộ định tuyến'. Do đó, sẽ rất thiết thực đối với tôi khi tìm cách thông qua tập lệnh hoặc tự động hóa để bật / tắt Chia sẻ Internet (hoặc buộc ngủ).
Winterflags

Chia sẻ Internet đang biến máy Mac của bạn thành một bộ định tuyến - đó là chức năng cốt lõi của việc chia sẻ Internet.
Allan

Tôi hiểu, nhưng tôi không nói về nó về mặt kỹ thuật. Tôi chỉ sử dụng Chia sẻ Internet khi kết nối MBP qua Thunderbolt Bridge với iMac và do đó, iMac sẽ không bao giờ đi ngủ dù có kết nối hay không. Do đó tìm kiếm một cách giải quyết, có lẽ liên quan đến kịch bản.
Winterflags

1
Chà, bạn sẽ không ghi đè Internet Sharing để ngăn MBP của bạn đi ngủ, nhưng nếu bạn muốn có một "cách giải quyết" hãy xem tại đây: apple.stackexchange.com/questions/2488/iêu
Allan

Cảm ơn - Tôi đã thử những câu trả lời này và chưa thể khiến chúng hoạt động với El Capitan (có lẽ do SIP), nhưng sẽ phải điều tra thêm.
Winterflags


0

Khi bộ phận quản lý năng lượng của máy tính làm cho thiết bị ngủ, nó sẽ chuyển sang chế độ năng lượng thấp. Mã thực thi trung bình của bạn trên máy tính không chạy theo cách thông thường: máy tính duy trì đủ năng lượng để làm mới bộ nhớ (nếu cần) và ít thứ khác. Bạn sẽ không thể tham gia vào máy tính đa năng trong khi máy tính ngủ.

Tuy nhiên, có một sự thay thế tốt mà bạn nên xem xét. Thay vì ngủ toàn bộ thiết bị, hãy kiểm tra màn hình ngủ trong System Preferences -> Energy Saver. Trong trường hợp sử dụng của tôi, tôi có một thiết lập góc nóng (mà bạn có thể kích hoạt System Preferences -> Desktop & Screen Saver -> Screen Saver) để khi tôi đi ăn trưa và cần khóa màn hình của tôi và / hoặc chỉ để màn hình ngủ, tôi di chuyển xuống phía dưới -góc trái. Hoạt động tốt với tôi, máy tính không hoạt động trở lại từ thói quen ngủ và bất kỳ quá trình chạy dài nào tôi đã quên không bị gián đoạn. Trong trường hợp của bạn, điều này có nghĩa là điểm truy cập WiFi của bạn sẽ không bị hủy.


1
Điều này thực sự rất hữu ích, tôi sử dụng <kbd> ^ </ kbd> + <kbd> ⇧ </ kbd> + <kbd> ⏏ </ kbd> để làm điều đó. Nhưng đó không phải là điều tôi mong muốn. Tôi không cần chia sẻ Internet trong khi máy tính ngủ. Tôi cần máy tính để thực sự ngủ và thậm chí tắt chia sẻ và tắt wifi. Sẽ chỉnh sửa câu hỏi của tôi để làm rõ. Dù sao cũng cảm ơn =)
Irae Carvalho

0

Bạn có thể sử dụng Power Manager để đặt máy Mac của bạn ngủ sau thời gian không hoạt động. Power Manager có thể ghi đè các quy trình và ứng dụng chặn giấc ngủ nhàn rỗi, bao gồm cả Chia sẻ Internet.

Hướng dẫn sử dụng hướng dẫn cách thiết lập:

Một giấc ngủ không hoạt động tốt hơn kích hoạt

Power Manager cung cấp một sự thay thế. Chúng tôi cung cấp một giấc ngủ không hoạt động kích hoạt. Không hoạt động được đo khác với thời gian nhàn rỗi; không hoạt động là một phép đo đơn giản hơn chỉ được xác định bởi hoạt động của người dùng.

Ngoài ra, công thức sau đây cho biết cách tạo sự kiện Power Manager để đưa máy Mac của bạn vào chế độ ngủ sau một thời gian không hoạt động .

Power Manager: Tắt nguồn sau khi không hoạt động

Tuyên bố miễn trừ trách nhiệm: Tôi làm việc cho công ty phát triển Power Manager.


Không hoạt động với tôi với Internet Sharing hoạt động. -1 vì đã lãng phí một giờ trong cuộc đời tôi.
Winterflags

Những gì bạn muốn đạt được và những gì không làm việc cho bạn?
Graham Miln

Tương tự như OP và câu trả lời của bạn. Tôi đã định cấu hình Ngủ không hoạt động, với hy vọng rằng nó sẽ 'Buộc ngủ' với tính năng Chia sẻ Internet được bật trong Tùy chọn hệ thống> Chia sẻ . Không, nhưng nó sẽ kích hoạt giấc ngủ nếu Chia sẻ Internet bị tắt.
Winterflags

1
Power Manager đưa ra yêu cầu ngủ cho macOS. Nếu bạn đang gặp vấn đề với giấc ngủ, như câu hỏi khác chỉ ra, thì những vấn đề về giấc ngủ tương tự cũng sẽ ảnh hưởng đến các yêu cầu về giấc ngủ do các ứng dụng của bên thứ ba đưa ra. Tất nhiên, tôi có thể nhầm lẫn hoặc đơn giản sai trong cách hiểu của tôi về tình huống của bạn. Tôi hy vọng bạn có thể tìm thấy một giải pháp.
Graham Miln

1
macOS sẽ luôn ngủ khi được yêu cầu ngủ rõ ràng - Finder> Apple (menu)> Ngủ . Không ngủ là hành vi gợi ý vấn đề với Mac.
Graham Miln
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.