Я знаю, що ви можете запланувати відключення на певний час через, 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.