Làm thế nào tôi có thể ngủ đông / tạm ngưng từ dòng lệnh và làm như vậy tại một thời điểm cụ thể


36

Tôi quản lý để tìm hiểu làm thế nào để tạm dừng / ngủ đông hệ thống từ dòng lệnh bằng cách đọc Làm thế nào tôi có thể đình chỉ / ngủ đông từ dòng lệnh? .

Tuy nhiên, tôi muốn biết cách sử dụng dòng lệnh để tạm dừng / ngủ đông tại một thời điểm nhất định, trong điều khoản tuyệt đối (ví dụ: 11 giờ tối) hoặc tương đối (ví dụ: trong 30 phút).

Tôi đã biết cách thực hiện việc này khi tắt máy, nhưng tôi lưu ý chắc chắn nếu lệnh tương tự.

Câu trả lời:


43

Bạn có thể sử dụng atlệnh để lên lịch cho bất kỳ hành động nào, bao gồm chạy các lệnh chi tiết trong câu hỏi đó .

Ví dụ: nếu bạn muốn ngủ đông trong 30 phút:

echo 'pmi action hibernate' | at now + 30 min

Hoặc nếu bạn muốn tạm dừng lúc 11:00 tối:

echo 'pmi action suspend' | at 11pm

Nếu bạn cần chạy một lệnh như root, hãy chạy atvới sudochứ không phải chính lệnh đó sudo(vì sudochỉ nên chạy tương tác, trừ khi bạn đã cấu hình nó không yêu cầu mật khẩu của bạn). Ví dụ, các lệnh tương đương của các lệnh trên sử dụng pm-hibernatepm-suspendlà:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


Cảm ơn vì đã nắm bắt được cả hai tình huống ... Tôi đã chỉnh sửa tiêu đề để phản ánh điều này. Tôi đã sửa đổi câu trả lời của mình để bao gồm cả hai tình huống bây giờ.
cprofitt

Bất cứ ý tưởng làm thế nào tôi có thể xóa công việc?
KhoPhi

2
@Rexford atrmLệnh xóa các công việc được tạo bởi at.
Eliah Kagan

9

Đối với thông số kỹ thuật tương đối (ví dụ: "sau 30 phút"), bạn có thể chỉ cần sử dụng sleeplệnh để thực hiện lệnh tạm dừng / ngủ đông.


Ví dụ:

Đợi 30 phút, sau đó tạm dừng:

sudo sleep 30m; sudo pm-suspend

Đợi 1 tiếng, sau đó ngủ đông:

sudo sleep 1h; sudo pm-hibernate

Tôi thích cách tiếp cận này quá.
KhoPhi

2
Sau 1h pm-hibernatemuốn mật khẩu cho root lại và tạm ngưng không xảy ra.
Vitaly Zdanevich

Làm thế nào về việc đăng nhập bằng root để tránh bị hỏi mật khẩu?
banan3'14

4

Đối với thời gian cụ thể lặp đi lặp lại - như tắt máy tính là một thời gian cụ thể mỗi ngày. sử dụng cron.

crontab -e

thêm những điều sau:

15 14 1 * * pmi action suspend

Nếu bạn muốn tùy chỉnh nó.

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Đối với một công việc một lần chúng tôi lệnh

Ví dụ: nếu bạn muốn ngủ đông trong 30 phút:

echo 'pmi action hibernate' | at now + 30 min

Hoặc nếu bạn muốn tạm dừng lúc 11:00 tối:

echo 'pmi action suspend' | at 11pm

2
Sử dụng cronlà một giải pháp tốt khi mục tiêu là tạm dừng hoặc ngủ đông tại một thời điểm cụ thể trong ngày hoặc thời gian cụ thể vào một ngày cụ thể trong tuần, hoặc tháng hoặc năm. Nhưng để lên lịch cho việc đình chỉ hoặc ngủ đông, dường như đó là điều mà Ederico đã hỏi về (và đó là điều có ý nghĩa hơn rất nhiều khi muốn làm), atnên sử dụng lệnh này. (Bạn có thể lên lịch cho một sự kiện bằng croncách thực hiện chỉnh sửa sự kiện crontab có liên quan, ví dụ như sử dụng sedhoặc awk, nhưng điều đó cực kỳ phức tạp và không cần thiết; sử dụng at.)
Eliah Kagan

Không phù hợp với các điều khoản tương đối được yêu cầu bởi câu hỏi, nó chỉ hữu ích cho các lịch trình cụ thể.
Bruno Pereira

Có, đây là một ví dụ cho "thời gian cụ thể" được yêu cầu. "Tuy nhiên, tôi muốn biết cách sử dụng dòng lệnh để tạm dừng / ngủ đông tại một thời điểm nhất định, tuyệt đối (ví dụ: 11 giờ tối)"
cprofitt

1
Bạn đã chỉnh sửa câu trả lời của mình để thêm thông tin về cách sử dụng at, nhưng thông tin bạn đã thêm rất tiếc là không chính xác. Các <nhà điều hành chuyển hướng văn bản từ tập tin hoặc thiết bị quy định để quyền của mình để đầu vào tiêu chuẩn cho lệnh quy định để trái của nó. Nếu bạn muốn sử dụng <thay vì |(như trong câu trả lời của tôi ), bạn phải tạo một tệp có pmi action suspend(hoặc pmi action hibernate) làm nội dung của nó. Sự phức tạp như vậy làm cho |tốt hơn ở đây.
Eliah Kagan

Như một hướng dẫn chung, khi bạn có một catlệnh ở bên trái của một |(ví dụ cat foo | bar), bạn có thể thay thế nó bằng một <biểu thức ( bar < foo). Nhưng khi bạn có một echolệnh ở bên trái của a |, điều đó không thể thay thế một <cách tầm thường bằng một biểu thức.
Eliah Kagan
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.