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.


57

Możesz zmusić crontab do uruchomienia za pomocą następującego polecenia:

run-parts /etc/cron.daily

9
... 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.
ArtHare

42

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:

* * * * *   /usr/bin/env > /home/username/tmp/cron-env

następnie wyjął go po zapisaniu pliku.

Krok 2 : Zrobiłem sobie mały skrypt bash typu run-as-cron zawierający:

#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"

Tak więc, jako dany użytkownik, byłem w stanie

run-as-cron /the/problematic/script --with arguments --and parameters

Przydatna sztuczka. Oczywiście to nie pomoże, jeśli masz w komendzie znak procentu.
basic6
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.