що робить команду виконувати раз на годину


12

У мене є індексатор для сфінкса, і я хочу, щоб він працював один раз на годину в Linux. Як би я це зробив?

linux 

Відповіді:


14

Оскільки всі інші публікують короткі відповіді, я подумав, що буду трохи більш описовим ...

cron це демон, знайдений у більшості * nix систем, який виконує заплановані команди через задані інтервали.

Ви додаєте сценарій до списку, копіюючи його у вибрану папку:

  • cron.daily
  • cron.hourly
  • cron.місячно
  • cron.weekly

Ці папки зазвичай знаходяться в /etcпапці.


2
cron. * папки дуже специфічні для distro. crontab - це універсальний спосіб керування предметами, керованими кроном через визначені проміжки часу.
— MDMarra

Правда. Я лише даю приклад. crontab дає вам набагато більше контролю в будь-якому випадку.
— Натан Осман


7

Просто щоб бути іншим -

залежно від ваших потреб ви могли використовувати команду watch.

  watch --interval=3600 command

1
Чи виконує це команду кожні 1 годину; чи виконується команда, зачекайте 1 год, а потім знову запустіть? Зверніть увагу, що це дуже добре, якщо команда займає дуже багато часу. (Я запитую, тому що це було незрозуміло зі сторінки чоловіка.)
— Malabarba

Дійсно, не так складно спробувати це самостійно.
— міморалія


2

ви редагуєте файл cron, ввівши команду crontab -e

який переводить вас у редактор 'vi' (для поточних Linux та FreeBSD).

потім введіть наступне: (введіть 'i' для вставки)

00 * * * * /path/to/sphinx_indexer.exe

потім збережіть і вийдіть (натисніть "esc", а потім введіть наступне)

:wq



1

Якщо вам це потрібно раз у раз, не назавжди, як у вас cron, і watchрішення недостатньо гнучко, ви також можете використовувати старі хороші сценарії bash:

while true; do
   # do stuff
   sleep $[60 * 60]
done

Це не працюватиме як #do Stuff, якщо на його виконання потрібно 3599 секунд, а потім відповідно до вимоги сценарій повинен запустити наступну секунду на палатах і скинути годинник на 0, але в цьому випадку він призупиниться на 3599-й секунді і потім переходите до сну протягом наступних 3600 секунд. Не буде перекриття, а несподіваний розрив між ітераціями. Тут я думаю, що користувач намагається виконувати завдання щогодини без крона.
— манна

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