Pracuję na kilku różnych dystrybucjach Linuksa (Fedora 11, CentOS 5 i SuSE 10.2) i często napotykam problem, w którym nowy skrypt, który chcę uruchomić jako zadanie crona, działa dobrze, gdy jest wywoływany bezpośrednio z wiersza poleceń, ale kończy się niepowodzeniem po wywołaniu z crona z powodu niewielkich zmian PATH lub innych wymaganych zmiennych środowiskowych.
Czy istnieje sposób, w jaki mogę przetestować uruchomienie pojedynczego skryptu, tak jakby był uruchamiany z crona, bez konieczności uruchamiania całego crontab lub używania elementów run do uruchamiania całego katalogu cron.daily / .hourly itp.? Myślę, że mógłbym tymczasowo edytować mój plik crontab, aby uruchomić skrypt w ciągu kilku najbliższych minut, ale wolałbym mieć bardziej samodzielne rozwiązanie, aby nie ryzykować zepsucia pliku crontab.
Jeśli prowadzę indywidualnie zaplanowane zadanie CRON (osobna linia w crontab), zaplanuję je na każdą minutę lub co drugą minutę podczas testowania. Po przetestowaniu dokonam edycji linii crontab, aby działała na żądanej częstotliwości.
Na marginesie, jeśli chcę przetestować, że sam cron działa poprawnie, a wyniki e-mailem na poprawny adres (BARDZO ważne) dodam następujący wiersz do mojego pliku / etc / crontab:
Działa co minutę i próbuje wykonać
ls
w katalogu, który nie istnieje. Co minutę powinien przesyłać wiadomość e-mail z komunikatem o błędzie. Komentuję ten wiersz, kiedy już działa.Wracając do pytania: Prawdopodobnie nie chcesz modyfikować istniejącego zadania cron, aby często się uruchamiało, zarówno dlatego, że istnieje szansa, że zapomnisz zmienić je z powrotem, jak i dlatego, że uruchamiasz cron.hourly, cron.daily lub cron. Cokolwiek często może mieć skutki uboczne, w zależności od tego, co tam masz. Aby mieć pewność, że skrypt działa w tym samym środowisku, w którym będzie się znajdował po wywołaniu z crona, zaleciłbym modyfikację mojej sztuczki „ls” powyżej:
Dodaj wiersz do swojego crontab, aby uruchomić skrypt bezpośrednio:
W ten sposób możesz go uruchamiać tak często, jak potrzebujesz go przetestować.
źródło
Nie znam bardziej bezpośredniego rozwiązania, ale możesz utworzyć użytkownika (powiedzmy crontest) z uprawnieniami do skryptu i użyć crontab specyficznego dla użytkownika dla użytkownika „crontest” w celu przetestowania skryptu poprzez edycję uruchomienie skryptu w ciągu kilku minut.
źródło