OS X: làm thế nào để giữ cho máy tính không ngủ trong phiên ssh


29

Khi tôi ssh vào máy tính OS X trên mạng của mình, phiên sẽ kéo dài cho đến khi OS X chuyển sang chế độ ngủ .

Có cách nào để ngăn chặn điều này xảy ra trong phiên SSH của tôi , ngoài việc va chạm vật lý vào chuột hoặc gõ phím hoặc vô hiệu hóa thủ công chức năng ngủ?

EDIT: Phiên ssh thường sẽ là một sshfs mount đơn giản.


Bạn cũng không muốn ngăn nó đi ngủ trước phiên SSH của bạn chứ?
SamB

Câu trả lời:


9

Đây không phải là một giải pháp vượt trội nhưng nó có thể sẽ hoạt động nếu không có ai đưa ra giải pháp :-)

Bạn có thể thao tác cài đặt quản lý nguồn bằng lệnh pmset. Xem trang hướng dẫn để biết thêm thông tin về nó.

Cài đặt thú vị mà chúng tôi muốn thao tác là ngủ :

ngủ - hẹn giờ ngủ hệ thống (giá trị tính bằng phút hoặc 0 để tắt)

Vì vậy, chúng ta có thể sử dụng các lệnh sau:

sudo pmset sleep 25      # go to sleep after 25 minutes
sudo pmset sleep 0       # disable sleep

Bây giờ chúng ta phải kích hoạt các lệnh này sau khi đăng nhập và đăng nhập. Nếu tôi nhớ đúng, Bash là shell mặc định cho Mac OS X, đưa chúng ta đến hai tệp này:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bash_logout
          The individual login shell cleanup file, executed when a login shell exits

Chỉnh sửa hoặc tạo chúng trong thư mục chính của bạn và thêm các lệnh thích hợp. Nếu bạn muốn, hãy lưu giá trị giấc ngủ hiện tại vào một tệp tạm thời và khôi phục nó từ đó sau đó.

Vấn đề cuối cùng cần giải quyết là dấu nhắc mật khẩu của sudo. Để cung cấp cho người dùng của bạn quyền gọi pmset mà không cần bất kỳ mật khẩu nào, hãy chỉnh sửa / etc / sudoers của bạn bằng sudoedit. Bạn cần sử dụng NOPASSWDthẻ. Nếu điều này là mới đối với bạn, hãy xem hướng dẫn sử dụng sudoers .


1
phương pháp này có hoạt động không nếu kết nối ssh chỉ là một sshfs mount?
Stefan

1
Tôi không chắc chắn, nhưng tôi không nghĩ sshfs sẽ mở một vỏ đăng nhập, vì vậy điều này sẽ không hoạt động với sshfs.
echox

9

Điều này cho phép tôi sử dụng máy Mac của mình qua SSH bất kể là gì, miễn là máy mac được kết nối với nguồn điện.

Tùy chọn hệ thống, Trình tiết kiệm năng lượng, Ngăn máy tính tự động ngủ khi màn hình tắt

Mọi thứ sẽ tắt khi mac tắt nguồn, vì vậy bạn không phải lo lắng về thời lượng pin.


1
Tùy chọn này là vô dụng trên macOS Sierra. IMac của tôi ngủ bất kể cài đặt này, thức dậy khi truy cập SSH và sau đó ngủ ngay sau khi đăng xuất SSH. Nó thực sự phiền phức.
Bruno Philipe

Câu trả lời này cuối cùng đã giải quyết được vấn đề của tôi sau khi loay hoay với ~ / .ssh / config hàng giờ trên Mojave iMac
n1000

6

Tiện ích pmset tích hợp trong OS X có cài đặt có thể làm những gì bạn muốn. Kiểm tra pmsettrang chủ cho các ttyskeepawakethiết lập và giải thích kèm theo.

Lệnh sau có thể sẽ làm những gì bạn muốn:

sudo pmset -c ttyskeepawake 1

Các -clá cờ làm cho thiết lập này hoạt động đặc biệt khi máy tính đang chạy bằng nguồn AC (như trái ngược với pin hoặc điện UPS), và ttyskeepawake 1ngăn chặn các máy tính từ ngủ trong suốt một session tty hoạt động (có lẽ là một từ xa). Nó sẽ cho phép ngủ nếu phiên không hoạt động lâu hơn thời gian ngủ, nhưng nếu đó là một vấn đề, có lẽ máy tính không nên được đặt ở chế độ ngủ.


6

Để sử dụng SSH để mở shell trên máy OSX từ xa và ngăn không cho nó ngủ trong suốt thời gian của phiên SSH:

$ ssh -t me@mymacbook caffeinate -i bash

5

Kể từ Mac OS X 10.8, bạn sẽ có thể sử dụng caffeinate(8)lệnh.

Hãy thử caffeinate -s ssh server.example.com.


9
OP đang cố gắng giữ cho máy Mac từ xa (tức là máy chủ ssh) không ngủ. Trừ khi tôi nhầm, ví dụ của bạn sẽ chỉ ngăn giấc ngủ trên thiết bị đầu cuối của khách hàng.
Owen

3

Tôi đã thêm đoạn script sau vào .bash_profile

if expr "$(ps -o comm= $PPID)" : '^sshd:' > /dev/null; then
  caffeinate -s $SHELL --login
  exit $?
fi

Nếu quy trình là con trực tiếp của ssh daemon, hãy chạy cùng một vỏ thông qua lệnh caffeinate (8) để ngăn hệ thống ngủ trong phiên ssh.


2

Một tìm kiếm trên web cho mac ngăn chặn giấc ngủ xuất hiện rất nhiều thông tin tốt về các tiện ích và thủ thuật bạn có thể sử dụng.

Tuy nhiên, trong tình huống của bạn, tôi nghi ngờ rằng những gì bạn thực sự muốn làm là có một phiên ssh riêng chạy chương trình dòng lệnh rất đơn giản để ngăn Mac ngủ. Apple cung cấp mã nguồn hoàn chỉnh trong Hỏi đáp kỹ thuật 1160: Ngăn chặn giấc ngủ . (Thật không may, hiện tại trang này đã bị hỏng trên trang web của Apple, nhưng bạn có thể lấy một bản sao từ bộ nhớ cache của Google.)

Tôi chưa thử nghiệm xem chương trình này có thể chạy thành công từ phiên ssh không, nhưng có vẻ như nó có thể.

Lưu ý rằng việc triển khai sshfs thường không được đăng nhập vào hệ thống từ xa mọi lúc và chỉ chạy một phiên khi họ muốn có tệp hoặc thư mục. Vì vậy, bạn cần một phiên ssh riêng, chạy trong cửa sổ đầu cuối thu nhỏ, để chạy chương trình mất ngủ.

Ưu điểm của phương pháp này là bạn không cần sử dụng sudo hoặc lộn xộn với các cài đặt quản lý nguồn hệ thống.

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.