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

18

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

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

MrAxlee
источник
Вы хотите завершить работу в 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 согласно нашему требованию. Для вас будет лучше, если вы зададите другой вопрос относительно вашей проблемы.
маргаритка