Mam skrypt, który należy wykonywać co minutę. Problem polega na tym, że cron loguje się przy /var/log/syslog
każdym uruchomieniu. W końcu widzę coś takiego powtarzającego się w kółko /var/log/syslog
:
Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)
Używam Debiana.
Moje pytania brzmią: czy jest jakiś sposób, aby powiedzieć cronowi, że za każdym razem nie zapisuje tych informacji w syslog?
Odpowiedzi:
Możesz wysłać dane wyjściowe crona do osobnego narzędzia do rejestrowania i dodać do
/etc/syslog.conf
pliku:Pamiętaj, aby dodać
/var/log/cron
do swojego,/etc/logrotate.d/syslog
aby upewnić się, że zostanie obrócony, npźródło
Dobrze,
Rozwiązaniem mojego pytania było:
zmiana
do
w ciągu
/etc/syslog.conf
a następnie ponownie uruchom syslogMam też crona wysłanego na polecenie
/var/log/cron.log
Dave'a Cheneya i nakleiłem na niego logrotat. Moja poprawka z sugestią Dave'a jest optymalna dla mojej sytuacji, ponieważ:/var/log/syslog
zapełnianiu się wiadomościami cron/var/log/cron.log
zbyt dużemu wzrostowi .źródło
rsyslog
Jessie w Debianie 8.0, więc należy/etc/rsyslog.conf
ją edytować. Nawiasem mówiąc, ciągi, które należy dodać, są już domyślnie dostępne, wystarczy je odkomentować (wiersz 63). I/var/log/cron.log
jest już w/etc/logrotate.d/syslog
, tak jak opiekunowie pakietów przeczytali ten wątek.Is there any way I can tell cron not write this information to syslog every time
. To nie jest odpowiedź.Zmień / etc / default / cron
Domyślnie wiersz EXTRA_OPTS to „”
źródło
W Ubuntu 14.04.5 (i prawdopodobnie gdzie indziej) zamiast syslogd znajduje się rsyslogd. TranslucentCloud wspomniał o tym w Debian Jessie, ale to samo rozwiązanie (ale zmiana rsyslog.conf zamiast syslogd.conf) nie działa w Ubuntu.
Wygląda na to, że wartości ustawione w /etc/rsyslog.d/50-default.conf faktycznie będą miały pierwszeństwo przed elementami ustawionymi w /etc/rsyslog.conf, więc lepiej wprowadzić tam zmiany , a następnie zrestartować rsyslog i cron. W przeciwnym razie nadal będziesz mieć domyślne zachowanie logowania cron do syslog, plus rejestrowanie cron do cronlog (ale nie wyłącznie).
Pierwsze kilka linii w moim /etc/rsyslog.d/50-default.conf:
I voila!
źródło
Właśnie rozwiązałem to w inny sposób, ale mój cel był nieco inny. Chciałem odrzucić wpisy dziennika cron, które zostały wygenerowane po uruchomieniu atrun, aby moje dyski twarde mogły spać i nie budzić się co 5 minut.
Możesz ustawić cel zdarzenia dziennika w syslog.conf jako polecenie powłoki, poprzedzając je potokiem, więc użyłem grep, aby wyrzucić te, których nie chciałem. Więc:
Nie badałem, ale uważam, że powinno być możliwe wysłanie tych wpisów do innego celu, jeśli nadal są potrzebne.
źródło
W rzeczywistości „najlepsze” (można by twierdzić) rozwiązanie jest kombinacją tego, co sugerował @DaveCheney i tego, co w końcu zrobił użytkownik 7321 , a także trzeciego działania, które poleciłbym:
W Twojej
/etc/syslog.conf
kombinacji tych sugestii zmienia się coś takiego:w:
I nie zapomnij wymusić ponownego załadowania (lub zrestartowania) usług cron i syslogd, np. Przy użyciu:
Uwaga: Działa to również z rsyslogd.
źródło