Linux выключить компьютер через определенное время

Отключить компьютер в заданное время

Я хочу, чтоб моя Ubuntu автоматически отключалась каждый день в определенное время. Как этого можно добиться?

2 ответа 2

На помощь нам придет юниксный демон по имени cron .
Для того, чтобы поставить задачу в расписание, мы добавим ее в файл /etc/crontab .
Открываем терминал — Ctrl Alt T .
Файл можно редактировать такой командой:

Для отключения компьютера каждый день в 23:03 добавим в файл такую строчку:

03 23 * * * root shutdown -h now 

Последняя строчка файла должна быть пустая.

Эта часть была написана по мотивам askubuntu.

Объяснение подробнее.

В самом этом файле /etc/crontab объясняется формат таблицы задач:

# m h dom mon dow user command 

Первые два поля — минута и час запуска задачи,
3-е поле (dom) — день месяца (Day of Month),
затем месяц,
5-е поле (dow) — день недели,
затем пользователь, от чьего имени будет запускаться команда,
и, собственно, команда.

Время запуска
Все условия (времени запуска) проверяются по «логическому И», кроме условий «день недели» и «день месяца» — указанные совместно, они обрабатываются по «логическому ИЛИ», то есть «по любому из дней», что отражено в документации (Ubuntu, Debian, FreeBSD). (См. Википедия, man 5 crontab ). Если вы хотите проверять их по «логическому И», делайте это в самой команде.

Например, перезагрузка в пятницу, 13-го:

0 0 13 * * root [ "$(date '+\%u')" -eq 5 ] && shutdown -r now 

Crontab пользователя.
Кроме общей таблицы crontab, каждый пользователь имеет свою. Свою личную таблицу можно редактировать командой

Таблицу другого пользователя, например, ‘root’-а, можно редактировать командой

В первоначальном вопросе правильнее, я думаю, было бы использовать именно этот вариант.
Если в системе есть всего один пользователь, то можно отключать компьютер и через него, и через ‘root’, без разницы.

Спасибо господам 0andriy и Sergey, который привлекли мое внимание к такой возможности.

Обратите внимание, что в таблице конкретного пользователя формат задачи немного другой, там не нужно указывать пользователя. Вместо

03 23 * * * root shutdown -h now 

Переменные окружения
Популярная причина проблем с работой crontab — другое определение переменных окружения при работе демона cron , особенно переменной $PATH .
Вы можете узнать переменные окружения cron -а, вставив в crontab строчку

После того, как файл /tmp/env.output создан, эту строчку можно убрать.
Оказывается, в Ubuntu cron запускается с PATH=/usr/bin:/bin . Для корректной работы нужно определить правильный $PATH в самом файле crontab .
Обратите внимание, что значение переменных не подставляется, то есть

не сработает.
Альтернативный способ решения этой проблемы — использовать полные пути для запуска команд. Но он хуже, если вы хотите проверить свою команду в терминале или перенести в другую систему.

Читайте также:  What are linux loop devices

Если вы запускаете программы с GUI, вам также надо определить $DISPLAY:

Да, и не забывайте в конце crontab -а вставлять пустую строчку.

Вторая часть ответа была написана по мотивам вопроса о проблемах работы с crontab -ом на askubuntu.
Спасибо всем комментаторам за плодотворную дискуссию.

Источник

Как использовать команду shutdown в Linux с примерами

img

Все пользователи Linux и системные администраторы должны знать, как безопасно выключить всю систему. Для этого есть несколько вариантов, включая планирование выключения в определенное время, немедленное выключение, рассылку уникального сообщения и так далее.

В этом руководстве вы узнаете, как использовать команду выключения Linux shutdown с примерами.

Как использовать команду shutdown в Linux с примерами

Синтаксис команды выключения

Прежде чем переходить к конкретным способам выключения вашей системы Linux, вы должны понять основной синтаксис команды выключения:

shutdown [options] [time] [message]
  • [options] — определяют, хотите ли вы остановить, выключить или перезагрузить машину.
  • [time] — указывает, когда вы хотите завершить выключение.
  • [message] — добавляет сообщение, объявляющее о завершении работы.

Как использовать команду выключения

Для использования команды shutdown в системах Linux требуется пользователь root или пользователь с привилегиями sudo .

Если вы используете команду без дополнительных аргументов, запуск sudo shutdown в окне терминала выполнит завершение работы за 60 секунд.

sudo shutdown

Выключение со всеми параметрами

Чтобы просмотреть все параметры при завершении работы системы Linux, используйте следующую команду:

На выводе отображается список параметров выключения, а также описание каждого из них.

sudo shutdown --help

Как выключить систему в определенное время

Чтобы запланировать завершение работы, добавьте аргумент [time] и укажите, когда вы хотите, чтобы оно произошло. Есть два способа выключить систему в определенное время — с использованием абсолютного или относительного формата времени.

Абсолютное время соответствует формату чч:мм (hh:mm) и позволяет запланировать выключение в указанное время. Команда следует синтаксису:

Например, чтобы потребовать выключения в 7 утра, введите следующую команду:

sudo shutdown 07:00

В качестве альтернативы можно использовать относительный формат +m и запланировать завершение работы через определенное количество минут с момента запуска команды. В этом случае синтаксис команды:

Чтобы выключить систему через 20 минут, запустите:

sudo shutdown +20

Как немедленно выключить систему

Как упоминалось ранее, запуск команды shutdown без каких-либо аргументов заставляет систему выключиться через минуту после выполнения команды. Однако, если вам требуется немедленное выключение, используйте:

Другой вариант — запланировать выключение, используя формат относительного времени со значением 0, как в приведенной ниже команде:

Как транслировать собственное сообщение

После того, как вы запланировали выключение системы, все пользователи в системе получат сообщение, уведомляющее их о выключении. Чтобы добавить настраиваемое сообщение в уведомление о завершении работы, чтобы информировать пользователей о том, что должно произойти.

Вы можете добавить [message], только если команда также включает атрибут [time]:

sudo shutdown [time] "[message]"

Например, чтобы выключить систему через 20 минут и передать сообщение об обновлении системы, запустите:

sudo shutdown +20 "System Upgrade"

sudo shutdown +20

Как отменить запланированное выключение

Чтобы отменить запланированное выключение, используйте команду:

Вы также можете добавить сообщение для уведомления пользователей об отмене завершения работы. Для этого добавьте параметр [message] (в кавычках) к приведенной выше команде. Например:

sudo shutdown -c "Canceling System Upgrade"

Источник

Читайте также:  Cptools криптопро 4 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 минуты:

Время запуска можно задавать не только в секундах от текущего момента, но и в формате полной даты и времени. Это делается с помощью опции -t, но эта опция принимает время в формате UNIX, поэтому сначала нужно преобразовать наше, обычное время, в этот формат с помощью date.

Например, давайте включим компьютер завтра в 13.00, допустим сегодня 10 сентября 2016. Сначала преобразуем данные:

Выключаем компьютер и планируем запуск по расписанию:

rtcwake -m mem -t 1473541200

Чтобы запланировать выключение Linux по расписанию или переход в режим сна будем использовать cron. Просто запланируйте выполнение команды rtcwake через crontab в нужное время для выключения компьютера и планирования последующего включения. Например, выполняем выключение компьютера Linux вечером и выполнить запуск по расписанию linux с утра:

Читайте также:  Linux mint zen kernel

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

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

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

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

How to shutdown Linux at specific datetime from terminal?

It seems I can shutdown using sudo shutdown by specifying a time or minutes. Is there a way to specify datetime for shutdown?

5 Answers 5

You can do this directly from the shutdown command , see man shutdown :

SYNOPSIS /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message] [. ] time When to shutdown. 

That will run shutdown -h at 21:45.

For commands that don’t offer this functionality, you can try one of:

A. Using at

The at daemon is designed for precisely this. Depending on your OS, you may need to install it. On Debian based systems, this can be done with:

There are three ways of giving a command to at :

$ echo "ls > a.txt" | at now + 1 min warning: commands will be executed using /bin/sh job 3 at Thu Apr 4 20:16:00 2013 
$ echo "ls > a.txt" > cmd.txt $ at now + 1 min < cmd.txt warning: commands will be executed using /bin/sh job 3 at Thu Apr 4 20:16:00 2013 
$ at now + 1 min warning: commands will be executed using /bin/sh at> ls 

You can give very precise times in the format of [[CC]YY]MMDDhhmm[.ss] , as in

This will run the script script.sh at 21:34 and 12 seconds on the 14th of March 2014.

B. Using cron (though this not a good idea for shutdown)

The other approach is using the cron scheduler which is designed to perform tasks at specific times. It is usually used for tasks that will be repeated but you can also give a specific time. Each user has their own "crontabs" which control what jobs are executed and when. The general format of a crontab is:

* * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) 

So, for example, this will run ls every day at 14:04:

To set up a cronjob for a specific date:

  1. Create a new crontab by running crontab -e . This will bring up a window of your favorite text editor.
  2. Add this line to the file that just opened. This particular example will run at 14:34 on the 15th of March 2014 if that day is a Friday (so, OK, it might run more than once):

This SO answer suggests a way to have it run only once but I have never used it so I can't vouch for it.

Источник

Оцените статью
Adblock
detector