Mam program, który drukuje dane wyjściowe, które chciałbym wyskakiwać na moim terminalu co godzinę w ciągu dnia roboczego.
$ crontab -l
0 07-17 * * * /home/dat/scripts/cron.out
syslog zgłasza następujące zdarzenia:
(dat) CMD (/home/dat/scripts/cron.exe)
Jun 18 12:02:01 picard CRON[10848]: (CRON) info (No MTA installed, discarding output)
czego mi brakuje?
Odpowiedzi:
Brudnym sposobem może być przekierowanie wyjścia programu do pliku pts już istniejącego terminala.
Aby poznać plik pts, po prostu wpisz
tty
poleceniewtedy twój crontab byłby:
Innym sposobem może być uruchomienie programu jako argumentu terminala:
gdzie
display
jest wyświetlacz X, w którym chcesz pokazać terminal,-H
ma powiedzieć terminalowi, aby pozostawał otwarty po zakończeniu polecenia. Spowoduje to utworzenie za każdym razem nowego terminala.crontab:
jeśli wyświetlacz nie jest obecny, będziesz mieć błąd zarejestrowany przez syslog.
źródło
Cron wysyła Ci wiadomość e-mail z danymi wyjściowymi skryptu. Niestety, Ubuntu domyślnie nie konfiguruje poczty lokalnej , dlatego Cron mówi ci w logach: „Nie zainstalowano MTA , odrzuca dane wyjściowe”.
Konfigurowanie poczty lokalnej może być jednym ze sposobów rozwiązania problemu. Zamiast wyjścia w terminalu otrzymasz powiadomienie e-mailem.
Jeśli chcesz, aby twoje zadanie cron było wysyłane do terminala, musisz przekierować jego dane wyjściowe do terminala. Część przekierowania jest łatwa -
ale problemem jest ustalenie, do którego terminala należy przekierować. Nie ma uniwersalnej odpowiedzi na to pytanie, zależy to od tego, jak chcesz wybrać terminal spośród tych, na które jesteś zalogowany.
W przypadku typowych zastosowań bardziej odpowiednie byłoby powiadomienie GUI. Możesz użyć
notify-send
. Musisz ustawićDISPLAY
zmienną środowiskową .źródło
Cron wysyła dane wyjściowe do programu pocztowego. Jeśli chcesz zobaczyć dane wyjściowe w terminalu, możesz zalogować się do pliku i użyć tail -f, aby wyświetlić dane wyjściowe w terminalu, który chcesz zobaczyć dane wyjściowe
Zaloguj się do pliku
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
Alternatywne sposoby logowania:
echo output > log.txt
lub możesz użyć skryptu opakowania opisanego poniżej.Przykładowy program i skrypt opakowania:
Przykładowy przebieg 1:
Przykładowy przebieg 2:
Wyświetl dane wyjściowe w terminalu:
Teraz, gdy zalogowaniu zarówno standardowe wyjście oraz standardowy błąd w pliku, w każdym terminalu, można uruchomić
tail -f
na jednym lub obu plików jaktail -f log.txt
itail -f log.txt error.txt
tak, że ogon będzie obserwować czy raczej śledzić plik (ów) do poprawek. strona ogonaPliki dziennika dołączane później:
Jeśli później log.txt lub error.txt zostaną później dołączone z programu lub innego terminala
$ echo "more output" >> log.txt
, dane wyjściowe są widoczne na uruchomionym terminalu$ tail -f log.txt error.txt
Ponadto
$ echo code red >> error.txt
skutkuje:źródło