jak mogę sprawić, żeby cron uruchomił teraz zadanie do testowania / debugowania? bez zmiany harmonogramu!
133
Mam zadanie cron, które jest zaplanowane do codziennego uruchamiania, inne niż zmiana harmonogramu, czy jest jakiś inny sposób na przetestowanie polecenia teraz, aby sprawdzić, czy działa zgodnie z przeznaczeniem?
Nie rozumiem twojego pytania? Dlaczego nie po prostu uruchomić polecenia?
favadi
20
Wiem, że polecenie działa po wprowadzeniu go w powłoce (moja powłoka), ale chcę wiedzieć, czy działa, gdy jest cronuruchamiane, może mieć na to wpływ ENV lub specyficzne dla powłoki elementy ( ~rozszerzenie) lub własność i uprawnienia lub ...
Ali,
2
Dlaczego więc nie utworzyć nowego zadania cron uruchamianego co minutę z tym samym poleceniem?
favadi
13
Właśnie tak skończyłem, ale zastanawiałem się, czy istnieje sposób, aby powiedzieć cronowi, że chcesz uruchomić test na zleceniu nr 7! Z pewnością inni mieli już ten problem / prośbę / życzenie!
Ali
4
Bardzo późno na scenę tutaj za pośrednictwem google, ale wszystko było źle w odpowiedzi favadi. Było jasne, że chciał przetestować go z crona i bez edytowania crontab specjalnie w tym celu. L Gorzej niż ktoś, kto mówi ci, czego chcesz, jest zły, gdy nie próbował zrozumieć przypadku użycia.
HörmannHH
Odpowiedzi:
32
O ile wiem, nie ma bezpośredniego sposobu, aby to zrobić, ponieważ cron ma specjalny cel - uruchamianie poleceń harmonogramu w określonym czasie. Najlepszym rozwiązaniem jest więc ręczne utworzenie wpisu crontab lub napisanie skryptu, który usunie i zresetuje środowisko.
... przy założeniu, że zadanie crona PO (zadane 3 lata temu) jest w cron.daily, a nie w pojedynczym crontabie.
Jeff Schaller
18
Jednak nie w pełni symuluje to środowisko użytkownika crona, więc jest bardzo prawdopodobne, że nadal będziesz mieć błędy, ponieważ po uruchomieniu skryptu jako rzeczywistej pracy crona PATH i inne środowiska mogą być inne niż użytkownik, który zrobiłeś run-parts /etc/cron.daily. Obecnie walczę z tym błędem, ponieważ mój skrypt będzie działał poprawnie, run-partsale nie powiedzie się, gdy faktycznie uruchomi się pod użytkownikiem crona.
cron
uruchamiane, może mieć na to wpływ ENV lub specyficzne dla powłoki elementy (~
rozszerzenie) lub własność i uprawnienia lub ...Odpowiedzi:
O ile wiem, nie ma bezpośredniego sposobu, aby to zrobić, ponieważ cron ma specjalny cel - uruchamianie poleceń harmonogramu w określonym czasie. Najlepszym rozwiązaniem jest więc ręczne utworzenie wpisu crontab lub napisanie skryptu, który usunie i zresetuje środowisko.
źródło
Możesz zmusić crontab do uruchomienia za pomocą następującego polecenia:
źródło
run-parts /etc/cron.daily
. Obecnie walczę z tym błędem, ponieważ mój skrypt będzie działał poprawnie,run-parts
ale nie powiedzie się, gdy faktycznie uruchomi się pod użytkownikiem crona.Możesz symulować środowisko użytkownika cron, jak wyjaśniono w „Uruchamianie zadania cron ręcznie i natychmiast” . Umożliwi to przetestowanie pracy, która będzie uruchamiana jako użytkownik cron.
Fragment linku:
Krok 1 : Tymczasowo umieszczam ten wiersz w crontab użytkownika:
następnie wyjął go po zapisaniu pliku.
Krok 2 : Zrobiłem sobie mały skrypt bash typu run-as-cron zawierający:
Tak więc, jako dany użytkownik, byłem w stanie
źródło