Na przykład mogę zalogować stderr
jeden skrypt w następujący sposób:
* * * * * run_script.sh > /var/log.txt 2>&1
Ale chcę rejestrować stderr
wszystkie skrypty w moim crontabie. Mogę dołączyć > /var/log.txt 2>&1
do wszystkich skryptów, ale nie jest dobrze, jeśli mam setki skryptów cron
. Czy istnieje inny, prostszy sposób to zrobić?
źródło
Ponieważ używa lokalnej poczty, naprawdę nie musisz niczego konfigurować, a może po prostu zainstalować mailx, jeśli jeszcze go nie ma. Cron wyśle ci wynik, możesz zapisać pocztę w pliku i stamtąd robić wiele rzeczy. Próba zmiany sposobu działania crona tak, aby bezpośrednio odpowiadała Twoim potrzebom, nie jest dobrym rozwiązaniem. Jeśli tak nie uważasz, po prostu załataj i ponownie zbuduj crona, nazwij go my_cron i użyj go zamiast crona. I bądź przygotowany na to, że w końcu będziesz aktualizować my_cron i często go odbudowywać.
Dodaj to na początku wszystkich skryptów, aby wszystko rejestrować i zatrzymać przy pierwszym błędzie
źródło
> /var/log/YOUR_LOG_FILE 2>&1
tzn. najpierw przekieruj stdout do pliku, a dopiero potem przekieruj stderr do stdout (który teraz wskazuje na plik).Skrypt Ryana Ye pod adresem /programming//a/7145618/20774 jest również przydatny w tym przypadku, chociaż działa zarówno na standardowym, jak i standardowym.
źródło