Làm thế nào để giữ cho máy tính bật khi kết nối?


7

Tôi đang sử dụng Linux Mint Debian v2, 64-bit.

Tôi muốn máy tính ngủ ngay sau khi tôi ngừng sử dụng, vì vậy tôi đã đặt thời gian chờ không hoạt động thành 10 phút.

Nhưng, khi tôi kết nối với máy tính của mình bằng máy tính xách tay của mình thông qua SSH, ngay cả khi tôi đang làm những việc như sao chép tệp hoặc xem video qua samba, nó sẽ chuyển sang chế độ ngủ.

Làm thế nào tôi có thể dừng điều này mà không thay đổi cài đặt thời gian ngủ? Chính xác thì cái gì tạo thành "không hoạt động" cho máy tính đi ngủ? Có lẽ điều ngược lại dễ giải thích hơn, điều gì tạo nên hoạt động để giữ cho máy tính tỉnh táo?

Máy tính xách tay của tôi cũng là LMDE v2.


1
Bạn có thể thêm cách bạn định cấu hình thời gian chờ không hoạt động không?
Bram

Thông qua các menu: Tùy chọn -> Quản lý nguồn -> Trên tab Nguồn AC -> Đặt máy tính ở chế độ ngủ khi không hoạt động.
linstar

Câu trả lời:


4

Ban đầu, tất cả các tập lệnh trong /etc/pm/sleep.dsẽ được thực thi trước khi chuyển sang chế độ ngủ và nếu bất kỳ tập lệnh nào trả về chế độ ngủ trạng thái khác không sẽ không được nhập.

Vì vậy, bạn có thể đặt một tập lệnh ở đó tìm kiếm tất cả các quy trình mà bạn sẽ không được nhận ra là 'PC vẫn đang được sử dụng' và chỉ cần trả về 1 nếu bất kỳ trong số này vẫn đang chạy - hoặc bất kỳ điều kiện nào khác bạn có thể tạo tập lệnh.

Đối với ssh, bạn có thể sử dụng netstat -tnpa | grep ESTABLISHED.*sshdđể kiểm tra các kết nối mở và đối với samba, bạn có thể phân tích đầu ra củasmbstatus


Chỉnh sửa: Nếu bạn đang sử dụng

systemd : tạo /etc/systemd/system/dontsleep.servicenhư thế này

[Unit]
Description=Inhibit suspend in case of [some] activity
Before=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c "some command that that returns an failure exit status if you don't want the pc to go into sleep mode (e.g exit 1)"

[Install]
RequiredBy=sleep.target

Giờ đây, tính năng RequiredBy= & Before=sleep.targetmới của bạn dontsleep.serviceđã trở thành một phần phụ thuộc cho sleep.targetvà systemd không thể chuyển sang chế độ ngủ cho đến khi dịch vụ này thực thi thành công (ví dụ exit 0)

Đừng quên kích hoạt nó với systemctl enable dontsleep.service

(Ý tưởng bị đánh cắp từ đây: https://bbs.archlinux.org/viewtopic.php?pid=1380080#p1380080 )


Cảm ơn. Nó có thể hoạt động, nhưng, tôi chỉ không biết đủ để sửa đổi tập lệnh trong đó. Tôi sẽ phải nghiên cứu thêm một chút và quay lại với mọi người nếu nó hoạt động.
linstar

Đừng sửa đổi, đừng tạo một cái mới ... Tôi sẽ viết cho bạn một ví dụ khi tôi về nhà hôm nay ...
Fabian N.

@FabianN. Đó là một địa ngục của một đi lại! : p Bạn có thể vui lòng viết lên một ví dụ không? Cảm ơn bạn.
Sparhawk

@FabianN. Ồ, tôi nghĩ rằng /etc/pm/sleep.dnó không được sử dụng trong systemd? Tôi đang sử dụng Arch Linux, vì vậy có lẽ giải pháp này sẽ không hiệu quả với tôi.
Sparhawk

2
@FabianN. Ôi rực rỡ! Trộm cắp tuyệt vời! :) Hoạt động hoàn hảo. FWIW Tôi không có netstatnhưng đã iproute2cài đặt, vì vậy tôi đã sử dụng ExecStart=/usr/bin/sh -c "if [ $(ss state established '( dport = 22 or sport = 22 )' | wc -l) -gt 1 ]; then exit 1; else exit 0; fi", nó hoạt động hoàn hảo
Sparhawk
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.