क्या मैं अपने आउटपुट को "कम" के माध्यम से "सर्विस फू स्टेटस" रोक सकता हूँ?


35

आप कमांड को इसके आउटपुट पर service <name> statusउपयोग lessकरने से कैसे रोकेंगे?

मेरे पास एक स्क्रिप्ट है जो कुछ sysadmin कार्यों को स्वचालित करती है, और जब मैंने अपने सर्वर को Ubuntu 16.04 में अपग्रेड किया, तो यह टूट रहा है क्योंकि सेवा की स्थिति की जांच करने वाली कार्रवाइयाँ अवरुद्ध हो रही हैं क्योंकि यह कुछ ऐसा उपयोग कर रहा है less आउटपुट, विशेष रूप से supervisorसेवा को दिखाने के लिए ।

मेरे पास चलाने के लिए कई डेमॉन कॉन्फ़िगर हैं, और जब दौड़ते हैं sudo service supervisor status, तो मुझे मिलता है:

* supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-02-06 20:35:34 EST; 12h ago
     Docs: http://supervisord.org
  Process: 18476 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
 Main PID: 20228 (supervisord)
   CGroup: /system.slice/supervisor.service
           |- 7387 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7388 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7389 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7390 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7391 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7392 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7393 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7394 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7395 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7396 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7397 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7398 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7678 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7679 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7680 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7681 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7682 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7683 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7684 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7685 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7693 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7694 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7698 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7702 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7703 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7705 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7707 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7709 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7710 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7712 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7713 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7717 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7720 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7723 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7724 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7728 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7730 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7731 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7733 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7734 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7735 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7738 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7743 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7747 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7748 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7750 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7752 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7756 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7758 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7761 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7763 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7764 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7772 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7781 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7785 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7794 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7799 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7801 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
           |- 7805 /usr/local//myproject/.env/bin/python2.7 /usr/local//myproject/.env/bin/celery worker -A /myproject -l info --autoreload
lines 1-66

और यह तब तक वापस नहीं आता जब तक कि मैं मैन्युअल रूप से स्क्रॉल नहीं करता या Qबाहर निकलने के लिए प्रेस नहीं करता । मैं इस सुविधा को कैसे अक्षम करूं?

जवाबों:


54

उबंटू एक सिस्टमड सिस्टम है, जहां service statusकमांड वास्तव में कॉल करता है systemctl status, और सिस्टमक्टेल में एक --no-pagerविकल्प होता है जो वास्तव में आप क्या देख रहे हैं। तो आप अपनी स्क्रिप्ट में सीधे systemctl कमांड का उपयोग करके बेहतर हो सकते हैं।

sudo systemctl --no-pager status supervisor

संपादित करें: env var SYSTEMD_PAGER

एक अन्य तरीका, जैसा कि @jwodder द्वारा बताया गया है, SYSTEMD_PAGER पर्यावरण चर सेट करना है। इसका एक और लाभ यह है कि systemctlजब किसी अन्य एप्लिकेशन द्वारा कॉल किया जाता है तो आउटपुट को भी प्रभावित करता है service

export SYSTEMD_PAGER=''
sudo service supervisor status

आपको समान आउटपुट प्राप्त करने की अनुमति देगा।


2
: मैं आदेश से पहले विकल्प डाल सुझाव देना चाहते हैंsudo systemctl --no-pager status supervisor
जेफ स्कालर

आपके सुझाव का मिलान करने के लिए संपादित किया गया। साधनों का उपयोग करने के लिए अच्छा है। धन्यवाद।
टिम कैनेडी

2
"उबंटू एक systemdसिस्टम है" ... जब अपस्टार्ट उपयोग में नहीं है
बिल्ली

6
systemctlहमेशा की तरह व्यवहार करने के लिए --no-pagerदिया गया है, आप SYSTEMD_PAGERपर्यावरण चर को या तो catखाली स्ट्रिंग पर सेट कर सकते हैं ।
jwodder

@jwodder - SYSTEMD_PAGER को सेट करने का अतिरिक्त फायदा यह भी है systemctlकि जब यह कहा जाता है तब भी इसका आउटपुट प्रभावित होता है service। अच्छा लगा।
टिम कैनेडी

34

यदि यह पता चलता है कि इसका आउटपुट टर्मिनल नहीं है, तो सामान्य रूप से इसका पेजर मोड बंद हो जाएगा। तो आप कुछ चलाकर अपने कमांड के आउटपुट को न-टर्मिनल बनाने की कोशिश कर सकते हैं:

sudo service supervisor status | cat

4
यह उत्तर अच्छा है क्योंकि यह सामान्य है। टिम कैनेडी का जवाब अच्छा है क्योंकि यह विशिष्ट है systemctl। मैंने दोनों को उकसाया।
कामिल मैकियोरोस्की

मैं लगभग एक दूसरे के पक्ष में अपने उत्तर को हटाने के बारे में था, लेकिन मैं देखता हूं कि सामान्य ज्ञान tidbit कैसे मूल्यवान हो सकता है। रिकॉर्ड के लिए, मुझे लगता है कि अन्य उत्तर को स्वीकार किया जाना चाहिए।
19

मैं हमेशा अधिक सामान्य उत्तर चुनूंगा, अन्य सभी चीजें समान होंगी। यह वही है जो मैं आरएचईएल पर करूंगा अगर बैक-एंड कमांड में जा lessरहा था और मैं उस व्यवहार को नहीं चाहता था। बेशक, अगर मैं इसे एक स्क्रिप्ट में कर रहा था जो "एक्टिव:" लाइन की तरह कुछ करता है, तो यह पहले से ही टर्मिनल पर नहीं जाएगा, और यह समस्या मौजूद नहीं होगी।
मोंटी हार्डर

यह lessकुछ भी बंद नहीं कर रहा है। यह systemctlपहली बार एक पेजर को लागू नहीं कर रहा है जब इसका मानक आउटपुट टर्मिनल नहीं है।
JdeBP

इस तथ्य के अलावा कि आप शायद एक्टिव: लाइन से बाहर न निकलें, क्योंकि आप सिर्फ सिस्टमक्टल स्टेटस के एक्जिट कोड की जांच कर सकते हैं (वास्तव में आपको स्थिति के बजाय स्क्रिप्ट में सिस्टेक्टल शो का उपयोग करना चाहिए) या सिस्टमैक्टल है- "सक्रिय, विफल}" , जो आपको इस बीएस बीएस के किसी भी :) के बिना बताएगा :)
फिर भी एक और उपयोगकर्ता

16

से man systemctl:

ENVIRONMENT
...
   $SYSTEMD_PAGER
       Pager to use when --no-pager is not given; overrides $PAGER.
       Setting this to an empty string or the value "cat" is equivalent to
       passing --no-pager.

   $SYSTEMD_LESS
       Override the default options passed to less ("FRSXMK").

तो, अपने पर्यावरण आरम्भिकरण में कहीं, सेट करें:

SYSTEMD_PAGER=

अच्छा लगा। इसके बारे में यह अच्छी बात यह है कि, SystemD_PAGER को सेट करने से अन्य प्रोग्राम भी प्रभावित होते हैं, जो कि systemctl कहते हैं! तो अब, service supervisor statusउसी व्यवहार को प्रदर्शित करता है।
टिम कैनेडी

@ क्षमा करें, लेकिन मैं कोड ब्लॉक में अपने मैनपेज़ पसंद करता हूं।
मूरू

3

आपको अपनी sudoersफ़ाइल को संशोधित करने की भी आवश्यकता होगी :

 Defaults        env_keep += "SYSTEMD_PAGER"

यह बहुत उपयोगी जानकारी है .. इस तथ्य पर चिढ़ हो रही थी कि SYSTEMD_PAGER को स्विच करने के बाद, sudo systemctl status <service>अभी भी पृष्ठांकित था .. +1
Procyclinsur
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.