Я знаю, що ви можете запланувати відключення на певний час через, shutdown -h 21:45
і ви не повинні використовувати crontabs для таких речей через їх повторюваність. Як я можу запланувати відключення на певну дату, наприклад, 31 серпня о 20:00?
Я знаю, що ви можете запланувати відключення на певний час через, shutdown -h 21:45
і ви не повинні використовувати crontabs для таких речей через їх повторюваність. Як я можу запланувати відключення на певну дату, наприклад, 31 серпня о 20:00?
Відповіді:
Останні версії Ubuntu використовують systemd, і коли звичайний atd
і пов'язаний з ним at
планувальник одноразових команд або не встановлений, або не працює одноразова команда, може бути запланованаsystemd-run
дещо простіше, ніж вручну генерувати systemd timer
:
systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now
at
Команда призначена для планування разових майбутніх страт.
напр
% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019
("<EOT>" було створено натисканням клавіші управління-D)
% atq
161 Sat Aug 31 20:00:00 2019 a sweh
Ви можете поставити свою shutdown
команду тут.
at
коли я розміщував повідомлення - at
це, безумовно, призначений для цього в цілому, хоча в компанії прийнятим методом може бути at
або cron
, залежно від умов, пов’язаних з управлінням / розгортанням конфігурації.
at
також може приймати команди з труби: echo "echo yup > $(tty)" | at now
.
Хоча at
це очевидний спосіб зробити це, я думаю, що він переживе відключення, тому якщо машина перезавантажиться перед запланованим відключенням, вона може відключитися знову в запланований час. Тому, використовуючи дату bash та GNU, ми можемо використовувати затримку відключення.
/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
NB: Це точно лише до однієї хвилини. Він працює, перетворюючи запланований час, а тепер - секунду з епохи UNIX, обчислюючи різницю, перетворюючи на хвилини, а потім використовуючи це як затримку до відключення. Він не працюватиме правильно, якщо запланований час минув.
Ви використовуєте кращу shutdown
команду.
Команди van Smoorenburg, Upstart та systemd shutdown
не дозволяють вказувати дату. Але команда BSD shutdown
приймає значення дати у своєму описі, коли потрібно закрити, у формі yymmddhhmm
. Так було ще з 4BSD, і так залишається у FreeBSD та OpenBSD. NetBSD поширив його на ccyymmddhhmm
.
Оскільки набір інструментів "nosh" також можна використовувати на BSD, я дав мою shutdown
команду тієї ж можливості, поширивши її CCYYMMDDHHMM
на NetBSD. А тому, що набір інструментів nosh також використовується в Linux, це дає команду Linux для відключення, яка приймає дати.
Звичайно, це працює з носом system-manager
. Він також працює з деякими іншими системами. Він надсилає сигнали для обробки №1 для введення в дію матеріалів, і ті ж сигнали розуміють деякі інші системні менеджери, наприклад systemd
, які також можна вимкнути за допомогою нього.
Ви можете використовувати його або такий інструмент, як він; або ви можете спробувати переконати авторів інших shutdown
програм Linux розширити свої інструменти так само, як і BSD shutdown
.
shutdown
. сторінки інструментів для набору інструментів. Програмне забезпечення.system-manager
. сторінки інструментів для набору інструментів. Програмне забезпечення.shutdown
. Посібник із системного менеджера . Сторінки посібника NetBSD. 2011-11-04.shutdown
. Посібник для управління системою FreeBSD . 2018-01-01.shutdown
. Сторінки керівництва OpenBSD. 21.01.2015.Можливо, є можливість ввести рік shutdown
команді, але cron може використовуватися для запуску команд лише один раз у певний момент часу. Для вашого прикладу спробуйте
0 0 31 8 ? 2019 shutdown
Остерігайтеся: вищезгадане не є стандартним синтаксисом cron.
year
поляcrontab
shutdown
. Як я писав в іншій відповіді, ви, хто цього хочете, можете спробувати переконати системних людей зробити свійshutdown
інструмент більш працездатним із синтаксисом десятків років, а не ходити по будинкахsystemd-run
.