Czy to naprawdę praca Crona, czy używasz uruchomionej. Cron został wycofany z systemu OS X.
jaberg
1
Czy ustawiłeś plik dziennika dla zadania cron?
daviesgeek
to właściwie cronpraca, z którą ją cron -ezałożyłem i mogę to zobaczyć cron -li jestem pewien, że to działało na Lwie, a wcześniej na Pantera Śniegu przez długi czas.
Ali
i nie, nie ustawiam ręcznie pliku dziennika dla samego „crona”, chociaż piszę do pliku dziennika wewnątrz zadania i ostatnio przestał działać po tym, jak coś zmieniłem.
Ali
2
Ali, ponieważ masz odpowiedź, opublikuj ją jako odpowiedź i zaakceptuj. Nie edytuj go w pytaniu. Możesz nie tylko odpowiedzieć na swoje pytanie, ale zachęcić Cię do tego.
Jason Salaz
Odpowiedzi:
30
Domyślnie cron nie rejestruje danych wyjściowych wykonanych zadań. Możliwe jest zarejestrowanie faktu, że cronjobs zostały wykonane, ale nie jest to również domyślne w OS X.
Aby zbadać dane wyjściowe wykonania cronjob, sugeruję zmodyfikowanie linii cronjob, aby przekierować STDOUT i STDERR do plików dziennika. W pliku crontab lub po uruchomieniu crontab -e, bez względu na to, jak to robisz, dodaj do swojej linii pracy coś takiego:
W ten sposób należy wysłać STDOUT (normalnie drukowane lub wysyłane echem do STDOUT) do pliku tekstowego o nazwie stdout.log w katalogu / tmp, a STDERR do stderr.log w katalogu temp. Wiele narzędzi używa STDERR do drukowania specjalnych komunikatów o błędach, gdy są to błędy aplikacji, a nie błędy generowane przez faktyczne wykonanie programu. (Możesz przeczytać więcej o STDERR na Wikipedii.)
Dzięki, to właśnie starałem się zrobić, wygląda na to, że cronz jakiegoś powodu zawiodło zadanie w pierwszej kolejności. jeśli sam uruchomię zadanie, wpisując polecenie w terminalu, uruchamia ono i wyprowadza do pliku dziennika, ale jeśli czekam na cronuruchomienie, nic się nie dzieje, przynajmniej brak zmian w pliku dziennika, pomyślałem, że może „plik dziennika cron” "lub w konsoli były jakieś ślady, które mogłyby pomóc mi dowiedzieć się, co się dzieje, ostatnio zmieniłem moją powłokę z bash na zsh, ale nie sądzę, żeby to miało na to wpływ.
Ali
1
Według erikslab.com/2011/02/04/logging-with-launchd można zmodyfikować cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) za pomocą ścieżki Stdout / Stderr, aby debugować sam cron. Nie pamiętam, czy launchctl unloading i launchctl loading plist jest wystarczający, czy też jest demonem systemowym, jeśli trzeba by całkowicie zrestartować. Sugeruję to drugie, aby się upewnić.
Jason Salaz
21
Znacznie łatwiej jest po prostu dodać następujące elementy /etc/syslog.conf:
Podoba mi się ten pomysł - ale, jak /etc/syslog.confmówi 10.10.5, moje słowa # Note that flat file logs are now configured in /etc/asl.conf. Ten plik ma inną składnię, nie jest dla mnie jasne, jak skonfigurować logowanie w nim.
Ken Williams
@KenWilliams, nawet jeśli mówi, że syslog.conf nadal działa na High Sierra.
Fish Monitor
15
Domyślnie „rejestrowanie” nie jest włączone. Ale możesz uzyskać przydatne informacje, uruchamiając mailpolecenie.
TL; DR na mailkomendzie: naciśnij enter, aby odczytać wiadomości, a następnie qi enter, aby wyjść.
To wiadomość błędu zapisana w skrzynce pocztowejuser
nohillside
@patrix, udało mi się również znaleźć sukces w pracy crona. Zaktualizowałem odpowiedź.
Vineeth
Miły! Powinna być zaakceptowana odpowiedź!
Trollhorn
3
Okazało się, gdy cron wykonuje zadanie (jak ja), /usr/local/binnie ma go PATH.
Znalazłem to metodą prób i błędów i od samego początku budowałem pracę z prostych rzeczy, które, jak wiedziałem, działały i stopniowo dodawałem rzeczy, aż znalazłem problem.
O innych sugestiach i odpowiedziach:
Z jakiegoś powodu (przynajmniej na moim komputerze, na którym działa Lion uaktualniony z SnowLeopard) cron, nie używa parametrów określonych w plikach plist, które launchdsą przeznaczone do odczytu, /System/Library/LaunchDaemons/com.vix.cron.plista może cron na Lionie nic nie pisze do stdout lub stderr.
Przy okazji używam http://s3tools.org/s3cmd do syncfolderu z wiaderkiem Amazon S3 jako kopią zapasową (jak prymitywny DropBox).
cron
praca, z którą jącron -e
założyłem i mogę to zobaczyćcron -l
i jestem pewien, że to działało na Lwie, a wcześniej na Pantera Śniegu przez długi czas.Odpowiedzi:
Domyślnie cron nie rejestruje danych wyjściowych wykonanych zadań. Możliwe jest zarejestrowanie faktu, że cronjobs zostały wykonane, ale nie jest to również domyślne w OS X.
Aby zbadać dane wyjściowe wykonania cronjob, sugeruję zmodyfikowanie linii cronjob, aby przekierować STDOUT i STDERR do plików dziennika. W pliku crontab lub po uruchomieniu
crontab -e
, bez względu na to, jak to robisz, dodaj do swojej linii pracy coś takiego:0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
W ten sposób należy wysłać STDOUT (normalnie drukowane lub wysyłane echem do STDOUT) do pliku tekstowego o nazwie stdout.log w katalogu / tmp, a STDERR do stderr.log w katalogu temp. Wiele narzędzi używa STDERR do drukowania specjalnych komunikatów o błędach, gdy są to błędy aplikacji, a nie błędy generowane przez faktyczne wykonanie programu. (Możesz przeczytać więcej o STDERR na Wikipedii.)
źródło
cron
z jakiegoś powodu zawiodło zadanie w pierwszej kolejności. jeśli sam uruchomię zadanie, wpisując polecenie w terminalu, uruchamia ono i wyprowadza do pliku dziennika, ale jeśli czekam nacron
uruchomienie, nic się nie dzieje, przynajmniej brak zmian w pliku dziennika, pomyślałem, że może „plik dziennika cron” "lub w konsoli były jakieś ślady, które mogłyby pomóc mi dowiedzieć się, co się dzieje, ostatnio zmieniłem moją powłokę z bash na zsh, ale nie sądzę, żeby to miało na to wpływ./System/Library/LaunchDaemons/com.vix.cron.plist
) za pomocą ścieżki Stdout / Stderr, aby debugować sam cron. Nie pamiętam, czylaunchctl unload
ing ilaunchctl load
ing plist jest wystarczający, czy też jest demonem systemowym, jeśli trzeba by całkowicie zrestartować. Sugeruję to drugie, aby się upewnić.Znacznie łatwiej jest po prostu dodać następujące elementy
/etc/syslog.conf
:Następnie uruchom ponownie syslog
Testowane i działające na OSX 10.7.4
źródło
/etc/syslog.conf
mówi 10.10.5, moje słowa# Note that flat file logs are now configured in /etc/asl.conf
. Ten plik ma inną składnię, nie jest dla mnie jasne, jak skonfigurować logowanie w nim.Domyślnie „rejestrowanie” nie jest włączone. Ale możesz uzyskać przydatne informacje, uruchamiając
mail
polecenie.TL; DR na
mail
komendzie: naciśnij enter, aby odczytać wiadomości, a następnieq
i enter, aby wyjść.źródło
Byłem w stanie znaleźć log Cron-Job,
Poniżej znajduje się dziennik zadania cron, który dostałem za uruchomienie komendy AWS CLI,
źródło
user
Okazało się, gdy cron wykonuje zadanie (jak ja),
/usr/local/bin
nie ma goPATH
.Znalazłem to metodą prób i błędów i od samego początku budowałem pracę z prostych rzeczy, które, jak wiedziałem, działały i stopniowo dodawałem rzeczy, aż znalazłem problem.
O innych sugestiach i odpowiedziach:
Z jakiegoś powodu (przynajmniej na moim komputerze, na którym działa Lion uaktualniony z SnowLeopard)
cron
, nie używa parametrów określonych w plikach plist, którelaunchd
są przeznaczone do odczytu,/System/Library/LaunchDaemons/com.vix.cron.plist
a może cron na Lionie nic nie pisze do stdout lub stderr.Przy okazji używam http://s3tools.org/s3cmd do
sync
folderu z wiaderkiem Amazon S3 jako kopią zapasową (jak prymitywny DropBox).źródło