Як я можу перейти у сплячку / призупинити роботу з командного рядка та зробити це у визначений час


36

Мені вдалося з'ясувати, як призупинити / перезимувати систему з командного рядка, прочитавши Як я можу призупинити / перезимувати з командного рядка? .

Однак я хотів би знати, як використовувати командний рядок для припинення / сплячки в заданий час, в абсолютних (наприклад, 11PM) або відносних (наприклад, за 30 хвилин) термінах.

Я вже знаю, як це зробити при відключенні, але я зауважу, чи команда схожа.

Відповіді:


43

Ви можете використовувати atкоманду для планування будь-яких дій, включаючи виконання команд, детально описаних у цьому питанні .

Наприклад, якщо ви хочете зимувати за 30 хвилин:

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

Або якщо ви хочете призупинити їх на 23:00:

echo 'pmi action suspend' | at 11pm

Якщо вам потрібно виконати команду , як root, працювати atз , sudoа не сама команда з sudo(так як sudoмає виконуватися тільки в інтерактивному режимі , якщо ви не налаштували його не питати ваш пароль). Наприклад, еквівалентами вищезазначених команд, що використовують pm-hibernateі pm-suspendє:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


Дякую, що зрозуміли, що просили обидві ситуації ... Я відредагував заголовок, щоб також відобразити це. Я змінив свою відповідь, щоб тепер включати обидві ситуації.
cprofitt

Будь-яка ідея, як я можу очистити робочі місця?
KhoPhi

2
@Rexford atrmКоманда видаляє завдання, створені at.
Елія Каган

9

Для відносної специфікації (наприклад, "через 30 хвилин") ви можете просто скористатися sleepкомандою, щоб змусити команду призупинення / сну очікування очікувати.


Приклади:

Зачекайте 30 хвилин, а потім призупиніть:

sudo sleep 30m; sudo pm-suspend

Зачекайте 1 годину, а потім сплять:

sudo sleep 1h; sudo pm-hibernate

Мені також подобається такий підхід.
Хофі

2
Через 1 год знову pm-hibernateзахочете пароль для root та призупинення не відбувається.
Віталій Зданевич

як щодо входу в систему як root, щоб уникнути запиту пароля?
banan3'14

4

Для певного періоду, що повторюється - як відключення комп'ютерів - це конкретний час кожного дня. використовувати крон.

crontab -e

додати наступне:

15 14 1 * * pmi action suspend

Якщо ви хочете налаштувати його.

* * * * * 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)

Одноразово працюйте нам у команді

Наприклад, якщо ви хочете зимувати за 30 хвилин:

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

Або якщо ви хочете призупинити їх на 23:00:

echo 'pmi action suspend' | at 11pm

2
Використання cron- це гарне рішення, коли мета - призупинити або перезимувати в певний час доби, або в певний час у певний день тижня, або місяця, або року. Але для планування єдиного призупинення або сплячки, що, здається, про те, про що Едеріко просив (а це щось, що має набагато більше сенсу хотіти), atслід використовувати команду. (Ви можете запланувати одиночну подію cron, змусивши її змінити відповідний кронтаб, наприклад, використовуючи sedабо awk, але це надзвичайно складно і непотрібно; використовувати at.)
Eliah Kagan

Не підходить до відносних термінів, запитуваних питанням, корисний лише для конкретних графіків.
Бруно Перейра

Так, це був приклад для запиту "конкретного часу". "Однак я хотів би знати, як використовувати командний рядок для припинення / сплячки в заданий час, в абсолютному (наприклад, 11:00)"
cprofitt

1
Ви відредагували свою відповідь, щоб додати інформацію про те, як користуватися at, але інформація, яку ви додали, на жаль, не вірна. <Оператор перенаправляє текст з файлу або пристроїв , зазначений в його право на стандартний ввід команди , зазначеної зліва від нього . Якщо ви хочете використовувати <замість |(як у моїй відповіді ), вам доведеться створити файл із вмістом pmi action suspend(або pmi action hibernate) як його вміст. Така складність робить |тут краще.
Елія Каган

Як загальне керівництво, коли у вас є catкоманда зліва від |(наприклад cat foo | bar), ви можете замінити це <виразом ( bar < foo). Але коли у вас є echoкоманда зліва від a |, це не може бути тривіально замінено <виразом.
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.