क्रॉन जॉब पर nginx logrotate त्रुटि


10

मैं एक डिजिटल ओशन VPS पर Ubuntu 14.04 LTS और nginx चला रहा हूं और कभी-कभी एक असफल क्रॉन जॉब के बारे में ये ईमेल प्राप्त करता हूं:

विषय

क्रोन टेस्ट -x / usr / sbin / anacron || (cd / && रन-पार्ट्स --report /etc/cron.daily)

ईमेल का मुख्य भाग है:

/etc/cron.daily/logrotate: error: '/var/log/nginx/*.log' रन-पार्टस के लिए साझा की गई पोस्टरोट स्क्रिप्ट चलाने में त्रुटि: /etc/cron.daily/logrotate रिटर्न कोड 1 से बाहर निकली

मैं इसे कैसे हल कर सकता हूं इस पर कोई विचार?

अपडेट करें:

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

अपडेट करें:

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

ऐसा लगता है कि यह नहीं चल सकता है जो कि पोस्ट्रोटेट कार्रवाई के रूप में निर्दिष्ट है, हमें अपनी /etc/logrotate.d/nginixस्क्रिप्ट दिखाएं
X Tian

/var/log/nginx/*.log {साप्ताहिक मिसकॉक 52 सेकेंड डिफ्लेमप्रेस नोटिफ़ोमेट रोटेट करें 0640 www-data प्रशंसा साझा करें, अगर [-d /etc/logrotate.d/httpd-prerotate] को साझा करें; तब \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endcriptate इनवोकेशन-आरओआरडी नेग्नेक्स रोटेट> / देव / नल 2> & 1 एंडस्क्रिप्ट}
क्रिस

1
अनुरोध करने पर अधिक जानकारी के साथ अपने प्रश्न को अपडेट करना सामान्य है। प्रत्येक पंक्ति के प्रारंभ में 4 रिक्त स्थान इसे एक कोड ब्लॉक बनाता है।
एक्स तियान

इसलिए, invoke-rc.d nginx rotateविफल हो रहा है, उचित उपयोगकर्ता के रूप में चलाने का प्रयास करें, और हमें उस स्क्रिप्ट को भी दिखाएं, आउटपुट को अपने मूल प्रश्न में पेस्ट करें। टी.के.एस।
एक्स तियान

इसे चलाने की कोशिश की, एक अमान्य कमांड त्रुटि प्राप्त हुई।
क्रिस

जवाबों:


10

पोस्ट रोटेट क्रिया गलत प्रतीत होती है

प्रयत्न

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

यदि आप nginxकमांड को देखते हैं तो आप यह देखेंगे कि यह किस कार्य को स्वीकार करेगा। आपको मिला संदेश भी कहता है चेक करेंinitctl --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.

इसलिए पुनः लोड करना चाहिए और लॉगफ़ाइल्स के फिर से खोलने के लिए nginx को HUP सिग्नल भेजना चाहिए।


धन्यवाद, वह आदेश बिना किसी त्रुटि के चला है। मैं क्रॉन जॉब अपडेट करूंगा और हम वहां से चले जाएंगे।
क्रिस

4

जैसा कि एक अन्य उत्तर में बताया गया है, समस्या यह है कि invoke-rc.d nginx rotateएक त्रुटि बताती है कि rotateकार्रवाई समर्थित नहीं है। दिलचस्प बात यह है कि service nginx rotateमुद्दों के बिना काम करता है।

मेरा अनुमान है कि invoke-rc.dरैपर उन सभी कार्यों का समर्थन नहीं करता जो वास्तविक नगनेक्स इनिट स्क्रिप्ट का समर्थन करता है।

मुद्दे को हल invoke-rc.d nginx rotateकरने के लिए बदलना service nginx rotateचाहिए।


3

मुझे यकीन नहीं है कि क्या यह है क्योंकि initctlखुराक rotateविकल्प का समर्थन नहीं करता है , और जब इसे हटा दिया गया था, लेकिन आप इससे केवल एक ही प्रभावित नहीं हैं, और लॉन्चपैड पर इसके लिए खुली बग रिपोर्ट हैं।

जैसा कि ऊपर और नीचे अन्य उत्तरों द्वारा उल्लेख किया गया है, आप nignx logrotate फ़ाइल को संपादित कर सकते हैं और प्रोब्लमैटिक लाइन को बदल सकते हैं

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

अन्य विकल्पों के साथ जो काम करता है,

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`

आपने जो भी तरीका चुना है, कृपया यह नहीं कि आप एक फाइल को बदल रहे हैं जो एक पैकेज द्वारा प्रबंधित है, और इसे बदलने के बाद, इसे किसी भी अधिक अपडेट नहीं किया जाएगा और आपको मैन्युअल रूप से अंतर को हल करना होगा या इसे एक साथ लिखना होगा नया एक (जिसमें सभी तैयार फिक्स शामिल हैं)।


मुझे यकीन नहीं है कि "सेवा कमांड काम नहीं करते हैं" बग यहां लागू होता है, क्योंकि प्रत्येक बग में अलग-अलग मुद्दों को संबोधित किया जाता है। (मजेदार तथ्य: मेरे पास 1450770 कार्यों में एक फिक्स है)
थॉमस वार्ड

1

मेरे लिए काम किया: के साथ
बदल दिया
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1

postrotate service nginx rotate >/dev/null 2>&1


0

बदलने के:

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

साथ में:

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

यह काम करता है के नए संस्करणों पर लगता है। मैं 1.9 संस्करण चला रहा हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.