uruchamianie polecenia raz na godzinę

12

Mam indeksatora dla sfinksa i chcę, aby uruchamiał się on co godzinę w systemie Linux. Jak mam to zrobić?


źródło

Odpowiedzi:

14

Ponieważ wszyscy inni publikują krótkie odpowiedzi, pomyślałem, że będę bardziej opisowy ...

cron to demon występujący w większości systemów * nix, który uruchamia zaplanowane polecenia w określonych odstępach czasu.

Dodajesz skrypt do listy, kopiując go do wybranego folderu:

  • cron.daily
  • cron.hourly
  • cron.monthly
  • cron. co tydzień

Te foldery zwykle znajdują się w /etcfolderze.

Nathan Osman
źródło
2
Foldery cron. * są bardzo specyficzne dla dystrybucji. crontab to uniwersalny sposób uruchamiania przedmiotów przez crona w określonych odstępach czasu.
MDMarra,
Prawdziwe. Podaję tylko przykład. crontab i tak daje ci znacznie większą kontrolę.
Nathan Osman,
9

cron .

Ciasteczkowy potwór
źródło
i użyj crontab do edycji pliku crontab ... zobacz miłe wprowadzenie na stronie crontabrocks.org
Doug Harris
7

Po prostu być innym -

w zależności od potrzeb możesz użyć komendy watch.

  watch --interval=3600 command
bryan
źródło
1
Czy to uruchamia polecenie co 1 godzinę; lub czy uruchamia polecenie, odczekaj 1 godzinę, a następnie uruchom ponownie? Zauważ, że robi to dużą różnicę, jeśli polecenie trwa bardzo długo. (Pytam, ponieważ nie było to jasne ze strony
podręcznika
Naprawdę nie jest tak trudno samemu to wypróbować.
mimoralea
6

Użyj crontab .

Pielgrzym
źródło
2

edytujesz plik cron, wprowadzając polecenie crontab -e

który upuszcza cię do edytora „vi” (dla aktualnego Linuxa i FreeBSD).

następnie wprowadź następujące dane: (wpisz „i”, aby wstawić)

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

następnie zapisz i wyjdź (naciśnij „esc”, a następnie wpisz następujące polecenie)

:wq
marklark
źródło
1

Dzięki narzędziu cron

Quentin
źródło
1

Jeśli potrzebujesz go raz na jakiś czas, a nie na stałe, jak to się dzieje cron, a watchrozwiązanie nie jest wystarczająco elastyczne, możesz również użyć starego, dobrego skryptu bash:

while true; do
   # do stuff
   sleep $[60 * 60]
done
Grumbel
źródło
Nie będzie to działać jako czynność #do, jeśli wykonanie zajmie 3599 sekund, a następnie zgodnie z wymaganiem skrypt będzie musiał uruchomić kolejną sekundę na totemach i zresetować zegar na 0, ale w tym przypadku zatrzyma się na 3599 sekundy i następnie przejdź do snu przez następne 3600 sekund. Nie będzie nakładania się, ale nieoczekiwana przerwa między iteracjami. Tutaj chyba użytkownik próbuje wykonać zadanie co godzinę bez crona.
mannoj