Главная >> Команды >> Выключение и запуск по расписанию Linux

Выключение и запуск по расписанию Linux

Операционная система 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

0 21 * * * /usr/bin/rtcwake -m mem -s 28800

Если вам не нужно включать компьютер, а только выключить, можете вместо предыдущей команды использовать shutdown:

0 21 * * * /usr/bin/shutdown -h now

Вот и все. Подробнее о том, как настраивается расписание задач в cron смотрите здесь.

Выводы

Теперь вы знаете как запланировать запуск, выключение или переход в режим сна в Linux. Это не сложно и в некоторых ситуациях может очень помочь. Если у вас остались вопросы, спрашивайте в комментариях!

6 комментариев к “Выключение и запуск по расписанию Linux”

  1. Вроде все просто в статье, да не просто.
    Во-первых, rtcwake требует прав root, поэтому он так просто не запустится от имени пользователя без ввода пороля, придестя лезть в sudoers прописывать NOPASSWD.
    Или придется запускать crontab -e от root, но тогда ввод порля есстественно не нужен, и команду в cron нужно будет записать без sudo.

    Ответить
    • У нас нет копипасты. Есть только переводы. Хотя с этой лицензией и переводами я, наверное, сглупил, попробую что нибудь придумать.

      Ответить
  2. Не совсем полезная статья. Чтобы её применить следует открыть:
    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' данное количество времени переводится в секунды.

    Ответить

Оставьте комментарий