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ć?

linux 

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.


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,


7

Po prostu być innym -

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

  watch --interval=3600 command

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


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



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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.