Операционная система Linux позволяет планировать запуск, завершение или переход компьютера в режим сна в нужное вам время. Например, вы можете запланировать запуск компьютера утром и автоматическое выключение когда ложитесь спать.
Иногда это очень даже полезно, вы экономите время, в место того чтобы ждать пока загрузится операционная система, можно сразу садится и работать, и это просто удобно. Можно запланировать включение компьютера по расписанию, даже после завершения работы скрипта.
Планирование включения в Linux
В Linux для завершения работы или перехода в режим сна и планирования запуска, используется утилита rtcwake. Это встроенный в ядро инструмент, поэтому она уже есть во всех дистрибутивах и устанавливать ничего не придется. Синтаксис команды такой:
$ sudo rtcwake –m режим –s время
Или:
$ sudo rtcwake –m режим –t время
После выполнения команды компьютер сразу выключится. Параметр -s указывает количество секунд до запуска компьютера. Опция -m устанавливает режим выключения. Дело в том что компьютер выключается не полностью, он переходит в сон, при котором питание подается только на несколько самых важных компонентов. Эти компоненты и определяет режим, указанный в этом параметре. Доступные режимы:
- standby (S1) – режим с минимальным энергосбережением, компьютер очень быстро засыпает и так же быстро восстанавливается. Этот режим используется по умолчанию;
- mem – (S3) – все компоненты системы отключаются кроме памяти;
- disk (S4) – Все содержимое памяти записывается на диск;
- off (S5) – Аналогично вызову команды shutdown;
- on – без отключения, используется для отладки.
А теперь давайте рассмотрим основные опции команды rtcwake Linux:
- -a - определить какое время использовать локальное или UTC на основе файла /etc/adjtime;
- --date - указать дату включения компьютера, доступны такие варианты: YYYY-MM-DD hh:mm:ss, YYYY-MM-DD (время будет установлено в 00:00), hh:mm:ss (дата будет установлена на сегодня), tomorrow (завтра в 00:00);
- -l, --local - использовать локальное время, а не UTC;
- --list-modes - вывести доступные режимы планирования включения;
- -m, --mode - выбрать режим планирования;
- -n, --dry-run - тестовый запуск;
- -t - время следующего запуска в формате Unix, в секундах, прошедших с 01-01-1970;
- -u, --utc - использовать UTC время вместо локального;
- -v - максимально подробный вывод.
Например, следующая команда переводит компьютер в режим сна и планирует включение через 3 минуты:
rtcwake -m mem -s 180
Время запуска можно задавать не только в секундах от текущего момента, но и в формате полной даты и времени. Это делается с помощью опции -t, но эта опция принимает время в формате UNIX, поэтому сначала нужно преобразовать наше, обычное время, в этот формат с помощью date.
Например, давайте включим компьютер завтра в 13.00, допустим сегодня 10 сентября 2016. Сначала преобразуем данные:
date +%s -d "2016-09-11 13:00"
Выключаем компьютер и планируем запуск по расписанию:
rtcwake -m mem -t 1473541200
Чтобы запланировать выключение Linux по расписанию или переход в режим сна будем использовать cron. Просто запланируйте выполнение команды rtcwake через crontab в нужное время для выключения компьютера и планирования последующего включения. Например, выполняем выключение компьютера Linux вечером и выполнить запуск по расписанию linux с утра:
crontab –e
Если вам не нужно включать компьютер, а только выключить, можете вместо предыдущей команды использовать shutdown:
Вот и все. Подробнее о том, как настраивается расписание задач в cron смотрите здесь.
Выводы
Теперь вы знаете как запланировать запуск, выключение или переход в режим сна в Linux. Это не сложно и в некоторых ситуациях может очень помочь. Если у вас остались вопросы, спрашивайте в комментариях!
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали




очень полезная статья! спасибо!
Вроде все просто в статье, да не просто.
Во-первых, rtcwake требует прав root, поэтому он так просто не запустится от имени пользователя без ввода пороля, придестя лезть в sudoers прописывать NOPASSWD.
Или придется запускать crontab -e от root, но тогда ввод порля есстественно не нужен, и команду в cron нужно будет записать без sudo.
Непроверенная копипаста и потом CC SA 4.0, за это и под суд можно угодить.
У нас нет копипасты. Есть только переводы. Хотя с этой лицензией и переводами я, наверное, сглупил, попробую что нибудь придумать.
Интересно как выполнить ежедневную перезагрузку компьютера и после переход в ждущий режим?спасибо.
Не совсем полезная статья. Чтобы её применить следует открыть:
https://saribzhanov.ru/tehno/vklyuchenie-ubuntu-po-raspisaniyu/
Тогда команды будут такими:
1)crontab –e
2) Добавить в файл такую строку:
0 22 * * * /usr/bin/rtcwake -m freeze -t $(date -d 'tomorrow 8:30:00' '+%s')
Данная команда запускается каждый день в 22:00. Она запускает rtcwake, который фризит систему на время. Время высчитывается через команду data и состоавляет отредок времени: 'tomorrow 8:30:00'. Благодаря формату '+%s' данное количество времени переводится в секунды.