আমি কি "সার্ভিস ফু স্ট্যাটাস" এর আউটপুটকে "কম" মাধ্যমে পেজিং থেকে আটকাতে পারি?


35

কমান্ডটি তার আউটপুট service <name> statusব্যবহার lessকরা থেকে কীভাবে থামায় ?

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা কিছু সিসাদমিন ক্রিয়া স্বয়ংক্রিয় করে তোলে এবং আমি আমার সার্ভারটি উবুন্টু 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। আমি উভয় upvated।
কামিল ম্যাকিয়েরোভস্কি

আমি আমার উত্তরটি অন্যটির পক্ষে প্রায় মুছে ফেলতে চলেছিলাম, তবে আমি জানি যে জেনেরিক জ্ঞানের টিডবিট কীভাবে মূল্যবান হতে পারে। রেকর্ডটির জন্য, আমি মনে করি যে অন্য উত্তরগুলি গ্রহণযোগ্য হওয়া উচিত।
ধাগ

আমি সবসময় আরও জেনেরিক উত্তরটি বেছে নেব, অন্য সমস্ত জিনিস সমান। ব্যাক-এন্ড কমান্ড যদি চলে যেত lessএবং আমি সেই আচরণটি না চাইলে আমি ঠিক এইভাবেই আরএইচএল-তে করতাম । অবশ্যই, যদি আমি এমন কোনও স্ক্রিপ্টে করছিলাম যা "অ্যাক্টিভ:" লাইনের মতো কোনও কিছুকে সরিয়ে দেয় তবে এটি ইতিমধ্যে টার্মিনালে যাবে না এবং এই সমস্যাটিও থাকবে না।
মন্টি হার্ডার

এটি lessকিছুই বন্ধ করছে না । এটির systemctlপেজারটিকে প্রথমে ডাকে না যখন এর স্ট্যান্ডার্ড আউটপুটটি টার্মিনাল হয় না।
জেডিবিপি

@ মন্টিহার্ডার ছাড়াও আপনার সম্ভবত অ্যাক্টিভ: লাইনটি গ্রেপ্তার করা উচিত নয় কারণ আপনি কেবল সিস্টেমটেক্সাল স্ট্যাটাসের প্রস্থান কোড পরীক্ষা করতে পারেন (সত্যিকার অর্থে আপনার স্থিতির পরিবর্তে কোনও স্ক্রিপ্টে সিস্টেমটেল শো ব্যবহার করা উচিত) বা সিস্টেমটিএল--সক্রিয়, ব্যর্থ} , যা আপনাকে এই বিভাজন বিএস ছাড়াই বলবে :)
তবুও অন্য একজন ব্যবহারকারী

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 নির্ধারণ করা অন্যান্য প্রোগ্রামগুলিকেও প্রভাবিত করে যা সিস্টেমেটেল কল করে! সুতরাং এখন, service supervisor statusএকই আচরণ প্রদর্শন করে।
টিম কেনেডি

@ টবি দুঃখিত, তবে আমি কোড ব্লকে আমার ম্যানপেজগুলি পছন্দ করি।
মুরু

3

আপনার sudoersফাইলটিও পরিবর্তন করতে হবে:

 Defaults        env_keep += "SYSTEMD_PAGER"

এই খুব দরকারী তথ্য .. সত্য যে SYSTEMD_PAGER স্যুইচ করার পরে, ওভার বিরক্ত হয় ছিল পেয়ে sudo systemctl status <service>এখনো পেজড ছিল .. + 1
Procyclinsur
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.