Автоматическое отключение в указанное время?


18

Я знаю, что могу использовать (sudo?) shutdown -h hh:mmВ окне терминала для выключения системы, однако вошедший в систему пользователь является пользователем киоска, который заблокирован таким образом, что терминал (или любое окно, кроме firefox) в этом отношении) не может быть открыт.

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


Вы хотите завершить работу в 02:00?
αғsнιη

Нет, извините, это было именно то, что было использовано в примере, который я прочитал. Обычно в 11:30, но мне было интересно, есть ли способ указать разное время для разных дней?
MrAxlee

1
Вы можете сослаться на URL для автоматического отключения. askubuntu.com/questions/19774/…
vembutech

1
@vembutech Этот вопрос предназначен для выключения по истечении определенного периода времени, а не для выключения в определенное время, однако, хотя было бы легко принять это к моим потребностям, я все равно не могу запустить дополнительные окна, кроме firefox. Спасибо за ваш ответ, хотя! Это кажется намного проще, чем использование cron, и я, скорее всего, буду использовать его для других целей :)
MrAxlee

@MrAxlee ... Итак, вы хотите, чтобы система выключилась через n часов после включения?
Каз Вулф

Ответы:


30

Cron будет очень хорошо работать для этого.

Добавьте следующую строку (с настройками) в конец /etc/crontab:

30 23 * * * root shutdown -h now

В 23:30 (23:30) киоск закроется. Независимо от того, какой пользователь вошел в систему, команда выключения выполняется от имени пользователя root.

(Если вы не хотите использовать глобальный crontab, войдите в систему как root и используйте crontab -e. Используйте тот же синтаксис, что и выше, без root).


Крон Формат:

MM HH DD OO WW command

MM: Минуты, 0-59
HH: 24-часовой час
DD: день месяца
OO: месяц
WW: день недели (воскресенье - 0, понедельник - 1)
command: не требует пояснений


@JacobVlijm Когда это было добавлено? Я не вижу этого в официальных документах Cron .
Каз Вулф

1
Я посмотрю ...
Джейкоб Влейм

1
из crontab (5): формат системного crontab, / etc / crontab включает столбец who, которого нет в пользовательских crontabs. В системном crontab cron запускает команду от имени пользователя, указанного в этом столбце. В пользовательском crontab все команды выполняются как пользователь, создавший crontab.
Джейкоб Влейм

@Whaaaaaat Отличный ответ, отлично работает, спасибо! Какая разница между -hа -s?
MrAxlee

1
@MrAxlee -sне похоже на «правильный синтаксис». -hозначает остановить или выключить систему (выбор системы - предпочтительнее отключение)
Kaz Wolfe

6

Cronjob кажется лучшим способом, потому что вы можете указать разное время для разных дней. В системах на основе Gnome вы можете просто установить задачи расписания GNOME , используя

sudo apt-get install gnome-schedule

а затем настройте cronjob с помощью графического интерфейса.

в противном случае вам придется использовать, sudo crontab -eа затем добавить следующие строки

30 11 * * 1-5 /sbin/shutdown -h now
30 10 * * 0,6 /sbin/shutdown -h now

это приведет к отключению компьютера в 11:30 с понедельника по пятницу и в 10:30 в субботу и воскресенье. Структура очень проста:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command 

Для получения дополнительной информации об этом вы также можете просто проверить CronHowto


2
Мне пришлось специально использовать /sbin/shutdownвместо того, shutdownпотому что моя корневая переменная PATH отличалась от того, что в терминале я попробовал мой сценарий.
Яакко

3

Мы можем автоматически отключиться в указанное время, просто запустив команду sudo poweroffin crontab.

Если вы хотите выключить систему каждый день в 18:30. Введите в терминале:

sudo crontab -e

редактировать

30 18 * * * poweroff

@mrm Есть альтернативные методы, может быть много разных решений для конкретной проблемы и ответы на них. Разве это не ответ полезен или нет? Пожалуйста, прошу не понижать голос, чтобы ответить или задать вопрос, если вы не знаете об этом. Внимательно прочитайте вопрос и посмотрите, относится ли ответ на этот конкретный вопрос или нет. Если у вас все еще есть какая-либо дилемма, вы можете задать вопрос в Ask Ubuntu Meta или здесь, а затем принять решение.
маргаритка

В одной строке crontab у вас есть две проблемы: poweroffпропускаются сценарии выключения, которые могут быть важны, скажем, для безопасного выключения вашей базы данных или чего-то еще, и вы получаете sudoкорневой root-файл, который не нужен. Вы также не указали, как ссылаться на разные дни недели, как заданный вопрос. Так что нет, это не альтернативный метод. Это две ошибки и упущение. Два других ответа, сделанные за год до вашего ответа, верны и действительно работают.
mrm

@mrm Ну, я использую этот скрипт в течение последних трех лет, и я не видел никаких проблем. И да, это альтернатива, а также правильный полезный метод. Que - автоматическое отключение в указанное время. Существует команда для выключения, и для автоматического указания времени мы можем использовать crontab согласно нашему требованию. Для вас будет лучше, если вы зададите другой вопрос относительно вашей проблемы.
маргаритка
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.