cron işinde nginx logrotate hatası


10

Digital Ocean VPS üzerinde Ubuntu 14.04 LTS ve nginx kullanıyorum ve bazen başarısız bir cron işi hakkında bu e-postaları alıyorum:

konu

Cron testi -x / usr / sbin / anakron || (cd / && run-parts --report /etc/cron.daily)

E-postanın gövdesi:

/etc/cron.daily/logrotate: hata: '/var/log/nginx/*.log' run-parts için paylaşılan postrotate komut dosyasını çalıştırma hatası: /etc/cron.daily/logrotate dönüş kodu 1'den çıktı

Bunu nasıl çözeceğime dair bir fikrin var mı?

Güncelleme:

/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 
}

Güncelleme:

$ sudo invoke-rc.d nginx rotate
initctl: invalid command: rotate
Try `initctl --help' for more information.

o bize göstermek, postrotate aksiyon olarak belirlenen ne koşamam benziyor /etc/logrotate.d/nginixsenaryoyu
X Tian

/var/log/nginx/*.log {haftalık missingok döndürme 52 sıkıştırma gecikme sıkıştırma sıkıştırma farkı 0640 www-data adm paylaşımlı komut dosyaları oluşturursa [-d ​​/etc/logrotate.d/httpd-prerotate]; sonra \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate> / dev / null 2> & 1 endscript}
Chris

1
Sorunuz istendiğinde daha fazla bilgi ile güncellenmesi normaldir. Her satırın başında 4 boşluk, onu bir kod bloğu yapar.
X Tian

Yani, invoke-rc.d nginx rotatebaşarısız oluyor, bize de o senaryoyu göstermektedir uygun kullanıcı olarak ve, orijinal soru çıktı yapıştırmak olduğunu çalıştırmayı deneyin. tks.
X Tian

Çalıştırmayı denedi, geçersiz bir komut hatası aldı.
Chris

Yanıtlar:


10

Döndürme sonrası işlemi yanlış görünüyor

Deneyin

invoke-rc.d nginx reload >/dev/null 2>&1

nginxKomuta bakarsanız, kabul edeceği eylemleri görürsünüz. Ayrıca aldığınız mesaj kontrol diyorinitctl --help

xtian@fujiu1404:~/tmp$ initctl help
Job commands:
  start                       Start job.
  stop                        Stop job.
  restart                     Restart job.
  reload                      Send HUP signal to job.
  status                      Query status of job.
  list                        List known jobs.

bu nedenle yeniden yükleme çalışmalı ve günlük dosyalarının yeniden açılmasını zorlamak için nginx'e HUP sinyali göndermelidir.


Teşekkür ederim, bu komut hatasız çalışıyor gibi görünüyor. Cron işini güncelleyeceğim ve oradan gideceğiz.
Chris

4

Başka bir cevapta belirtildiği gibi sorun, eylemin desteklenmediğini invoke-rc.d nginx rotatebelirten bir hata döndürmesidir rotate. İlginç olan şey service nginx rotatesorunsuz çalışıyor.

Benim tahminim invoke-rc.dsarıcı gerçek nginx init betiğinin desteklediği tüm eylemleri desteklemiyor.

Değişen invoke-rc.d nginx rotateiçin service nginx rotatesorunu çözecektir.


3

initctlDoz rotateseçeneği desteklemiyor ve ne zaman kaldırıldığından emin değilim , ancak bundan etkilenen tek kişi siz değilsiniz ve bunun fırlatma rampasında açık hata raporu var.

Yukarıdaki ve aşağıdaki diğer cevaplardan bahsedildiği gibi, nignx logrotate dosyasını düzenleyebilir ve problmatik çizgiyi değiştirebilirsiniz

invoke-rc.d nginx reload >/dev/null 2>&1

işe yarayan diğer alternatiflerle,

start-stop-daemon --stop --signal USR1 --quiet --pidfile /run/nginx.pid --name nginx
# or 
service nginx rotate >/dev/null 2>&1
# or
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`

Hangi yöntemi seçerseniz seçin, lütfen bir paket tarafından yönetilen bir dosyayı değiştirdiğinizden ve değiştirdikten sonra, artık güncellenmeyecek ve diff'i manuel olarak çözmeniz veya üzerine yazmanız gerekmeyecektir. yenisi (hepsi hazır düzeltmeyi içerir).


Her hatada ele alınan farklı sorunlar olduğundan, "hizmet komutları çalışmaz" hatasının burada uygulandığından emin değilim. (Eğlenceli gerçek: 1450770 için çalışmalarda bir düzeltmem var)
Thomas Ward

1

Benim için
çalıştım : Şununla değiştirildi
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
:
postrotate service nginx rotate >/dev/null 2>&1


0

Değiştir:

invoke-rc.d nginx reload >/dev/null 2>&1

İle:

[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

Nginx'in yeni sürümlerinde bu çalışıyor. 1.9 sürüm çalıştırıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.