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


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.