Làm thế nào để ngăn Mac ngủ từ dòng lệnh?


12

Tôi có một kịch bản chạy dài ở máy tính từ xa.

Tôi không muốn chấm dứt phiên ssh của mình và cần nhập nó vào tập lệnh shell.

Làm thế nào có thể ngăn Mac của tôi rơi vào giấc ngủ từ dòng lệnh?


3
Phiên bản OS X nào?
nohillside

Câu trả lời:


19

Trong Mountain Lion bạn có thể sử dụng caffeinatelệnh.

caffeinate -u -t 1000

sẽ ngăn chặn giấc ngủ nhàn rỗi trong 1000 giây.


1
Tôi chưa thành công với bất kỳ sự kết hợp cmdline 'caffeinate nào (bao gồm cả ở trên) cũng như Caffeine.app trong Mavericks ngăn chặn giấc ngủ khi đóng nắp. InsomniaX.app là thứ duy nhất đã ngăn chặn giấc ngủ nắp, nhưng vẫn chưa tìm thấy phiên bản cmdline hoạt động (chưa làm cho goo.gl/CU06jb hoạt động - nó có thể bị lỗi thời). Thậm chí, tôi vẫn muốn thứ gì đó cho phép yêu cầu mật khẩu hiển thị ngay cả khi từ chối giấc ngủ trong thời gian giới hạn, có thể lập trình khi đóng nắp ... và InsomniaX.app dường như cũng không làm điều đó.
Johnny Utahh

1
Vấn đề tương tự. Tôi đang ở Yosemite, và mặc dù tôi chạy caffeinate trong thiết bị đầu cuối, sau một lúc màn hình tối và tôi phải đăng nhập lại. Điều này gợi ý cho tôi rằng caffein không giữ cho Mac tỉnh táo, đó là mục tiêu của tôi kết nối Wifi có thể tồn tại / bất cứ điều gì tôi đang diễn ra đều có thể tiến hành.
độc quyền

12

Giải pháp cho vấn đề này là không giữ máy khách (máy Mac) của bạn hoạt động. Sử dụng các phương pháp như thế này là không thể bỏ qua. Điều gì xảy ra nếu kết nối mạng bị mất? Ngay cả khi máy Mac của bạn đã thức, kịch bản sẽ dừng lại.

Sử dụng nohup

Nếu tập lệnh chạy dài của bạn được gọi eternity.sh, hãy thử như sau:

nohup /path/to/eternity.sh > /path/to/output.out &

Bây giờ bạn thậm chí có thể đóng kết nối và tập lệnh của bạn sẽ tiếp tục chạy . Các &nền của quá trình để bạn có thể giữ kết nối mở và nhập lệnh. Xem bất kỳ đầu ra từ tập lệnh của bạn thông qua:

tail -f /path/to/output.out

Các đường dẫn trong các ví dụ là tùy chọn nếu tập lệnh nằm trên đường dẫn của bạn và bạn muốn đầu ra tập lệnh được ghi output.outvào thư mục hiện tại.

Tôi quản lý các tập lệnh chạy trong nhiều ngày. Các tập lệnh như thế này nên được tách ra khỏi thiết bị đầu cuối. Rất may, nohupcung cấp một lệnh gọi dễ nhớ để đạt được điều này - nghĩ rằng không bị treo máy .


5
Xem thêm man screen.

@mankoff - Tôi đã sử dụng màn hình. Đó là mệnh lệnh tốt nhất kể từ khi phát hiện ra một giống chó cắt lát. ;) Điểm chính của câu hỏi là giải thích nhu cầu của "ssh to @ where" khi mac của tôi ngủ - Đơn giản là tôi không muốn chấm dứt phiên ssh của mình - lệnh của tôi ở phía xa đã được "bảo vệ" bằng màn hình . ;)
kobame

@ephsmith - câu hỏi là: làm thế nào để loại bỏ phiên ssh chấm dứt ... ofc nohup là tốt cho các tình huống khi lệnh từ xa của bạn không phải là một tương tác. Đối với các lệnh tương tác, màn hình là giải pháp tốt hơn nhiều. Thanx dù sao để trả lời.
kobame

1
@kobame, có lẽ điểm chính của câu hỏi và thông tin bổ sung này nên được đưa vào câu hỏi ban đầu của bạn. Dòng đầu tiên trong câu hỏi của bạn đề cập đến một kịch bản chạy dài. Tôi cho rằng nó không tương tác dẫn đến tham chiếu đến nohup.
ephsmith

@kobame, có câu trả lời nào trong số này giải quyết vấn đề của bạn không?
ephsmith

8

Một lựa chọn khác là pmset . Sử dụng lệnh pmset noidle để ngăn chặn giấc ngủ miễn pmsetlà đang chạy. Thật không may, nó đòi hỏi một cửa sổ Terminal riêng biệt với pmsetviệc chạy trong nó. Tuy nhiên, tùy chọn khác caffeinate, chỉ cho phép bạn đặt thời gian nhất định . Vì vậy, vấn đề là chọn xem bạn muốn mở phiên SSH thứ hai hay xử lý hạn chế thời gian.

Chỉnh sửa: Theo nhận xét của binarybob , bạn thực sự có thể chạy nó trong nền như thế này: pmset noidle &Để quay lại pmsetfg.


Bạn cũng có thể chạy pmsettrong nền bằng cách sử dụng pmset noidle &và do đó tiếp tục sử dụng dấu nhắc lệnh hiện tại. Gõ fgđể có được pmsettrở lại, lúc này bạn có thể Ctrl + C nó
binarybob

@binarybob ơi! Tôi không biết điều đó. Cảm ơn vì tiền hỗ trợ!
daviesgeek

@davisgeek - thực sự tốt đẹp! Thanx cho tiền boa.
kobame

1
cái này cũng hoạt động trong máy tính xách tay IPython: !pmset noidle- rất đẹp khi bạn có máy tính để bàn phục vụ máy tính xách tay IPython và máy tính xách tay kết nối từ xa.
Jason S

1
Điều này không làm việc cho tôi. Nó chạy thành công, thông báo "Ngăn chặn giấc ngủ nhàn rỗi (^ C để thoát) ..." xuất hiện, nhưng nó vẫn chuyển sang chế độ ngủ.
Iulian Onofrei

6
caffeinate -i -s /bin/ssh ...

Giải trình:

-i - Ngăn chặn giấc ngủ nhàn rỗi.

-s- Ngăn chặn hệ thống ngủ (hoàn toàn, ngay cả khi bạn đóng nắp). Lưu ý: nó chỉ hoạt động trong khi bật nguồn AC.

/bin/ssh- Chỉ cần tiếp tục viết lệnh bạn muốn thực hiện. Sử dụngssh trực tiếp thay vì /bin/sshcũng nên làm việc.

Kết quả: Hệ thống của bạn sẽ không ngủ miễn là sshlệnh đang chạy.



-3

Trình bảo vệ màn hình StarMessage ( http://starmessagesoftware.com/moonsc Greensaver / ) cũng có tùy chọn để giữ cho MAC hoạt động trong 2 giờ, 8 giờ hoặc lâu dài. Cách vô hiệu hóa giấc ngủ MAC này, dễ dàng hơn nhiều so với caffeine.


Làm thế nào điều này chạy cho dòng lệnh?
dùng151019

Hãy chắc chắn đọc phần khuyến mãi trên Trung tâm trợ giúp .
nohillside
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.