як я можу запланувати перезавантаження в Linux?


38

Я новачок в Linux і хочу запланувати перезавантаження на півночі. Як мені це зробити?

Зміни:

  • Вибачте, що не виклав повних деталей. Я хочу перезавантажити кожну 3-ю суботу місяця о 23:30.

  • Я не знаю, що не так, але я не можу знайти кронтаб. Що у мене є cron.d; cron.daily; cron.weekly; cron.monthly;

Вибачте за питання про noob. Pls допоможіть мені. Спасибі.


2
Справжнє питання полягає в тому, чому ви хочете робити це регулярно, у вас є герметична програма чи щось таке? Якщо ви плануєте регулярні перезавантаження, щоб вирішити проблему, то, ймовірно, у вас є більша проблема ...
JamesHannah

1
Ви хочете, щоб він перезавантажувався щовечора?
Метт Сіммонс,

4
Я не голосую, тому що це якесь політичне рішення (і я вважаю, що нічні перезавантаження є трохи надмірними), але регулярне планування перезавантажень через інфраструктуру є гідним способом забезпечення того, що машини мають оновлені ядра та всі служби, що працюють наклеєні. Я чув, що тривалість тривалості тривалості тривалості тривалості роботи є доброю середньою програмою.
Метт Сіммонс

Якби це був коментар до питання, а не відповідь, я б його схвалив. Насправді я передумав би, бо питання було неоднозначним, чи це була разова чи звичайна річ. :)
інтуїтивно

3
/etc/crontabзапис начебто 30 23 15-21 * 6 /sbin/shutdown -r nowперезавантажиться о 23:30 3-ї суботи кожного місяця.
Chris S

Відповіді:


45

Наберіть shutdown -r 0:00і він перезавантажиться опівночі.

Якщо ви хочете перезавантажувати щовечора, додайте запис cron, використовуючи crontab -e як root, щоб запускати вимикання -r щопівночі

@midnight shutdown -r now

3
Аргумент часу є обов’язковим, ви можете використовувати now.
Тобу

Ні ... якщо він хоче одноразової команди і хоче ввести команду зараз, він повинен додати час!
радіус

3
@ Ні, йому потрібен аргумент часу, наприклад, nowу рядку crontab.
Призупинено до подальшого повідомлення.

На жаль, вибачте, я неправильно прочитав коментар Тобу, і вважаю, що він говорить 0:00 було марним в першій команді ... Я відредагував, щоб виправити (і Массімо теж відповідає)
радіус

Мені було б цікаво дізнатися, які інші @{command}змінні доступні.
Грег

16

Використання crontab.

http://en.wikipedia.org/wiki/Crontab

Додаючи цей запис до / etc / crontab, слід виконати:

0 0 * * * /sbin/shutdown -r now

3
shutdownпотрібен аргумент часу, наприклад,now
Призупинено до подальшого повідомлення.

1
Це буде робити перезавантаження щовечора. Я не впевнений, чи цього він хоче.
cstamas

1
Оригінальне запитання прозвучало так, що він хотів, щоб він перезавантажувався щовечора. Він насправді хоче, щоб вона перезавантажувалася щосуботи, що все-таки було б найлегше з кронатом
Chris S

я не знаю, що не так, але я не можу знайти crontab ..? у мене є cron.d; cron.daily; cron.weekly; cron.місячно; Вибачте за питання noob.Pls допоможіть мені. спасибі
klauriens

Це залежить від розповсюдженого вами розповсюдження, але зазвичай ви повинні знайти файл під назвою "crontab" в каталозі / etc вашої системи. Ви також повинні мати можливість вивчити поточний crontab за допомогою команди "crontab -l" та відредагувати його за допомогою "crontab -e".
Массімо

13

Інший варіант - команда at , доступна у багатьох дистрибутивах Linux. Додаткову інформацію див. На сторінці чоловіка, але загальним синтаксисом для вашої мети буде:

відлуння "перезавантаження" | о 0000, 27 червня

Процитуйте сторінку чоловіка OS X:

at - виконує команди у визначений час

Звучить так, як ми говоримо. ;)


1

Наскільки я знаю, ви не можете використовувати cron для планування завдань на "останню п’ятницю кожного місяця" або "третій четвер кожного місяця". Що ви можете зробити, як би неприємно це не виглядало, - це запускати сценарій щосуботи о 23:30, а потім за цим сценарієм визначити, чи є саме ця субота третьою суботою тижня (це можна зробити за допомогою команд дати та, можливо, кал) .

Я сподіваюся, що це допомагає. Я не знайшов гучного рішення цієї проблеми. Я знайшов цю тему, тому що шукав рішення тієї ж проблеми.


1
коментарі вище "30 23 15-21 * 6 / sbin / shutdown -r now" працюватимуть. В основному це буде працювати лише на третьому тижні місяця, але лише тоді, коли також буде субота
Sirex

Я не думаю, що ця лінія кронів працює так, як ви думаєте, що це робить.
ervingsb

Я створив наступні два рядки: "30 23 1-7 * 4 дата" та "30 23 1-7 * 3 дата".
Учора

останнє поле відповідає дню тижня, нуль - неділі. 4 cronjob не повинен був відповідати в середу.
Сірекс

Це я мав на увазі. Правило, яке ви написали, не означає, що ви думаєте, що воно означає. Це запускатиме роботу щодня протягом тижня. Незалежно від буднього дня.
ervingsb

0

1) у командному рядку типу 2) після того, як ви дізнаєтесь, де знаходиться перезавантаження (зазвичай / sbin / reboot), введіть диск в один з каталогів у /etc/cron.daily, /etc/cron.weekly, / etc / cron. щогодини тощо ... тобтоwhich reboot
cd /etc/cron.weekly

3) створити файл (за допомогою nano чи vim), назвати його zzreboot та додати наступні рядки:

#! / bin / sh
/ sbin / перезавантажити

Причина, за якою ви хочете викликати файл zzwever, - це переконатися, що це остання робота, яка викликається після всіх інших завдань. Щоб переконатися, що просто зробіть ls -lв каталозі та перевірте, чи це останній файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.