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.