Na moim Ubuntu-Desktop i na moim serwerze debian mam skrypt, który musi być wykonywany co minutę (skrypt, który wywołuje minutnik mojej kosmicznej gry przeglądarkowej ).
Problem polega na tym, że na pochodnych Debiana cron loguje się przy /var/log/syslog
każdym uruchomieniu. W końcu widzę powtarzającą się wiadomość, która była wykonywana w kółko /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Wiem, że aby ukryć wyjście programu, mogę go przekierować /dev/null
, na przykład, aby ukryć wszystkie komunikaty o błędach i ostrzeżeniach przed programem, mogę utworzyć wiersz w crontabie w ten sposób
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Ale chciałbym uruchomić cronjob i upewnić się, że wszystkie wygenerowane dane wyjściowe lub błędy są przesyłane do NULL, więc nie generuje żadnych wiadomości w syslog i nie generuje żadnych e-maili
EDYCJA:
istnieje rozwiązanie przekierowujące dzienniki cron do osobnego dziennika, jak zaproponowano tutaj poprzez zmianę/etc/syslog.conf
Ale wadą jest to, że WSZYSTKIE dane wyjściowe wszystkich cronjobs są przekierowywane.
Czy mogę w jakiś sposób przekierować tylko pojedynczą usługę Cronjob do osobnego pliku dziennika? Najlepiej konfigurowalny w samym cron.hourly
pliku.
MAILTO=""
ponieważ pierwsza linia crontab zapobiegnie wysyłaniu wiadomości e-mail. Ponadto, jeśli blokujesz wszystkie dane wyjściowe, użyj pełnej trifecta w wierszu poleceń. Wszystkie 3 rodzaje są przekierowywane przez ten ciąg: >/dev/null 2>&1
- Oczywiście, możesz mieć scrip zawierający okresowe zapisy do osobnego dziennika.
MAILTO=""
na początku pliku cron. Spowoduje to usunięcie wszystkich e-maili. I nigdy nie słyszałem o demonie cron, który wysyła dane wyjściowe zadania do syslog (ale wydaje mi się, że jest to możliwe).