Słyszałem, że crontab to dobry wybór, ale jak napisać linię i gdzie umieścić ją na serwerze?
144
Oto dobry tutorial na temat tego, czym jest crontab i jak go używać w systemie Ubuntu. Twoja linia crontab będzie wyglądać mniej więcej tak:
00 00 * * * ruby path/to/your/script.rb
( 00 00
wskazuje północ - 0 minut i 0 godzin - a*
s oznacza każdy dzień każdego miesiąca).
Składnia: Polecenie mm hh dd mt wd mm minuta 0-59 hh godzina 0-23 dd dzień miesiąca 1-31 miesiąc 1-12 mt wd dzień tygodnia 0-7 (niedziela = 0 lub 7) polecenie: co chcesz uruchomić wszystkie wartości liczbowe można zastąpić *, co oznacza wszystko
/etc/crontab
(w systemie Ubuntu), ale po uruchomieniucrontab -e
edytujesz crontab specyficzny dla użytkownika, który nie zezwala na tę kolumnę. IIRC Ubuntu odradza/etc/crontab
ręczne zamykanie, ponieważ może zostać nadpisane. Zobacz tutaj: stackoverflow.com/questions/8475694/ ...sudo crotab -u root -e
ze strony podręcznika
Dobrze jest zwrócić uwagę na specjalne „pseudonimy”, których można używać (udokumentowane na stronie podręcznika), szczególnie „@reboot”, który nie ma alternatywy dla czasu i daty.
Możesz również użyć tej sztuczki, aby uruchomić zadanie crona wiele razy na minutę.
Aby dodać zadanie cron, możesz zrobić jedną z trzech rzeczy:
dodaj polecenie do tabeli crontab użytkownika, jak pokazano powyżej (oraz z tabeli crontab, sekcja 5, strona podręcznika).
crontab -e -u <username>
crontab -e
EDITOR
zmiennej środowiskowejenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
utwórz skrypt / program jako zadanie cron i dodaj go do systemowych
/etc/cron.*ly
katalogów anacronchmod a+x /etc/cron.daily/script_runs_daily.sh
- uczyń go wykonywalnymman anacron
chmod a+x <file>
/etc/crontab
lub/etc/anacrontab
uruchamiane w określonym czasie/etc/anacrontab
programie cron.hourly w/etc/cron.d/0hourly
Lub można tworzyć tabele systemowe w
/etc/cron.d
./etc/cron.d
nie muszą być wykonywalne.someuser
, a użycie/bin/bash
jako powłoki jest wymuszone.źródło
Czasami będziesz musiał określić PATH i GEM_PATH używając crontab z rvm.
Lubię to:
źródło
Krótki przewodnik po konfiguracji zadania cron
Utwórz nowy plik tekstowy, przykład: mycronjobs.txt
Dla każdego codziennego zadania (00:00, 03:45) zapisz wiersze harmonogramu w pliku mycronjobs.txt
Wyślij zadania do crona (za każdym razem, gdy to uruchomisz, cron usunie to, co zostało zapisane i zaktualizuje o nowe informacje w mycronjobs.txt )
Dodatkowe przydatne informacje
Zobacz aktualne zadania cron
Usuń wszystkie zadania cron
źródło
Możesz uruchomić skrypt powłoki na dwa sposoby, używając zadania cron lub pisząc skrypt powłoki
Załóżmy, że nazwa twojego skryptu to „yourscript.sh”
Najpierw sprawdź uprawnienia użytkownika do skryptu. użyj poniższego polecenia, aby sprawdzić uprawnienia użytkownika do skryptu
ll script.sh
Jeśli skrypt jest w katalogu głównym, użyj poniższego polecenia
sudo crontab -e
Po drugie, jeśli skrypt przechowuje użytkownika „ubuntu”, użyj poniższego polecenia
crontab -e
Dodaj następujący wiersz do swojej tabeli crontab: -
55 23 * * * /path/to/yourscript.sh
Innym sposobem na zrobienie tego jest napisanie skryptu i uruchomienie go w tle
Oto skrypt, w którym musisz wpisać nazwę swojego skryptu (np .: - youscript.sh), który będzie uruchamiany codziennie o 23:55
#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done
zapisz go w pliku (nazwijmy go „every-day.sh”)
sen 1d - oznacza, że czeka jeden dzień, a następnie działa ponownie.
teraz daj uprawnienia swojemu skryptowi. użyj poniższego polecenia: -
chmod + x every-day.sh
teraz wykonaj ten skrypt powłoki w tle, używając "nohup". Spowoduje to kontynuowanie wykonywania skryptu nawet po wylogowaniu się z sesji.
użyj poniższego polecenia, aby wykonać skrypt.
nohup ./every-day.sh &
Uwaga: - aby uruchomić "yourscript.sh" codziennie o 23:55, musisz wykonać skrypt "every-day.sh" dokładnie o 23:55.
źródło
Umieść to zdanie w pliku crontab: 0 0 * * * / usr / local / bin / python /opt/ByAccount.py> /var/log/cron.log 2> & 1
źródło