Ответы:
Вы можете сделать это прямо из shutdown command
, см man shutdown
:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
[...]
time When to shutdown.
Так, например:
shutdown -h 21:45
Это будет работать shutdown -h
в 21:45.
Для команд, которые не предлагают эту функцию, вы можете попробовать один из:
at
Демон предназначен для именно это. В зависимости от вашей ОС, вам может потребоваться установить его. В системах на основе Debian это можно сделать с помощью:
sudo apt-get install at
Есть три способа дать команду 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
Сохраните команду, которую хотите запустить, в текстовом файле, а затем передайте этот файл at
:
$ 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
команды из STDIN:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Затем нажмите CtrlDдля выхода из at
оболочки. Команда ls
будет выполнена через одну минуту.
Вы можете дать очень точное время в формате [[CC]YY]MMDDhhmm[.ss]
, как в
$ at -t 201403142134.12 < script.sh
Это запустит сценарий script.sh
в 21:34 и 12 секунд 14 марта 2014 года.
Другой подход заключается в использовании cron
планировщика, который предназначен для выполнения задач в определенное время. Обычно он используется для задач, которые будут повторяться, но вы также можете указать определенное время. У каждого пользователя есть свои «crontabs», которые контролируют, какие задания выполняются и когда. Общий формат crontab:
* * * * * 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)
Так, например, это будет выполняться ls
каждый день в 14:04:
04 14 * * * ls
Чтобы настроить cronjob на определенную дату:
Создайте новый crontab, запустив crontab -e
. Откроется окно вашего любимого текстового редактора.
Добавьте эту строку в файл, который только что открылся. Этот конкретный пример будет запущен в 14:34 15 марта 2014 года, если этот день будет пятницей (так что, может, он будет выполнен несколько раз):
34 14 15 5 /path/to/command
Сохраните файл и выйдите из редактора.
Этот SO ответ предлагает способ запустить его только один раз, но я никогда не использовал его, поэтому я не могу ручаться за это.
shutdown
. Я чувствую к этому плохому опыту, хотя, это не могло быть приятным.
shutdown
планирование и один и cron
тот же ответ ... Будь то рабочая станция или почтовый сервер на 1000 пользователей (мой печальный опыт) больше о последствиях плохой привычки.
shutdown
не следует включать cron
. (особенно с кем-то, кто не знает, почему это ужасная идея.)
Нет, вы не можете указать дату в команде выключения, но существует две альтернативы:
1) Самое простое - использовать команду at . Следующий пример будет выполнен shutdown +5
в определенное время и день:
echo "shutdown +5" | at 10:05am 2019-01-19
2) если вы не возражаете против использования калькулятора и хотите завершить работу, скажем, в течение 24 часов (24 * 60 = 1440 минут), и вы абсолютно уверены, что система не перезагрузится между ними:
shutdown -r +1440
at
команду.
at
заслуживает объяснения. Я вижу, ты веришь иначе. Разные умы, разные взгляды.
shutdown
не позволяют указывать дату. Но это shutdown
делает набор инструментов nosh , поддерживающий давний синтаксис BSD.
Это отключит вашу систему в 12:00:
$ sudo shutdown -h 12:00
Опции:
-h, -P, --poweroff
Выключите машину.
-r, --reboot
Перезагрузите машину.
-c
Отмените ожидающее выключение.