Używam Ubuntu 14.04 LTS i nginx na Digital Ocean VPS i od czasu do czasu otrzymuję te e-maile o nieudanym zadaniu cron:
Przedmiot
Test Cron -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
Treść e-maila to:
/etc/cron.daily/logrotate: błąd: błąd podczas uruchamiania udostępnionego skryptu postrotate dla części wykonawczych „/var/log/nginx/*.log”: /etc/cron.daily/logrotate zakończony kodem powrotu 1
Wszelkie przemyślenia na temat tego, jak to rozwiązać?
Aktualizacja:
/var/log/nginx/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Aktualizacja:
$ sudo invoke-rc.d nginx rotate
initctl: invalid command: rotate
Try `initctl --help' for more information.
/etc/logrotate.d/nginix
skryptinvoke-rc.d nginx rotate
zawiedzie, spróbuj uruchomić go jako odpowiedni użytkownik i pokaż nam również ten skrypt, wklej dane wyjściowe do pierwotnego pytania. tks.Odpowiedzi:
Działanie po obróceniu wydaje się nieprawidłowe
Próbować
Jeśli spojrzysz na
nginx
polecenie, zobaczysz działania, które zaakceptuje. Również otrzymana wiadomość mówi „sprawdź”initctl --help
więc przeładowanie powinno działać i wysyłać sygnał HUP do nginx, aby wymusić ponowne otwarcie plików dziennika.
źródło
Jak wspomniano w innej odpowiedzi, problem polega na tym, że
invoke-rc.d nginx rotate
zwraca błąd informujący, żerotate
działanie nie jest obsługiwane. Ciekawe jest to, żeservice nginx rotate
działa bez problemów.Domyślam się, że
invoke-rc.d
opakowanie nie obsługuje wszystkich działań obsługiwanych przez rzeczywisty skrypt inicjujący nginx.Zmiana
invoke-rc.d nginx rotate
naservice nginx rotate
powinna rozwiązać problem.źródło
Nie jestem pewien, czy to dlatego, że
initctl
dawka nie obsługuje tejrotate
opcji, a kiedy została usunięta, ale nie jesteś jedynym, którego to dotyczy, i jest otwarty raport o błędzie na starterze.Jak wspomniano w innych odpowiedziach powyżej i poniżej, możesz edytować plik logrotate nignx i zastąpić linię problmatic
z innymi alternatywami, które działają,
Jakąkolwiek metodę wybrałeś, nie zmieniaj pliku zarządzanego przez pakiet, a po zmianie nie będzie on już aktualizowany i będziesz musiał ręcznie rozwiązać różnicę lub zastąpić ją nowy (który wszystkie gotowe zawierają poprawkę).
źródło
Pracował dla mnie:
Zastępuje
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
Z
postrotate service nginx rotate >/dev/null 2>&1
źródło
Zastąpić:
Z:
wydaje się, że w nowszych wersjach Nginx to działa. Używam wersji 1.9.
źródło