“Hizmet foo durumunun” çıktılarını “daha ​​az” kullanarak sayfalamasını engelleyebilir miyim?


35

Komutun çıktısını service <name> statuskullanmasını nasıl lessönlersiniz?

Bazı sysadmin eylemlerini otomatikleştiren bir komut dosyasına sahibim ve sunucumu Ubuntu 16.04'e yükselttikten sonra, hizmet durumunu denetleyen eylemler engelleniyor, çünkü lessözellikle de supervisorhizmeti göstermek için bir şey kullandığı için kırılıyor .

Çalıştırmak için yapılandırılmış birkaç servise sahibim ve çalıştırdığımda şunu sudo service supervisor statusalıyorum:

* 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

Ve manuel olarak aşağı kaydırıncaya veya çıkana kadar basana kadar geri gelmiyor Q. Bu özelliği nasıl devre dışı bırakırım?

Yanıtlar:


54

Ubuntu, service statuskomutun gerçekte çağırdığı bir systemd sistemidir systemctl statusve systemctl, --no-pagertam olarak aradığınızı yapan bir seçeneğe sahiptir. Bu yüzden, betiğinizdeki düz systemctl komutunu kullanarak daha iyi olabilirsiniz.

sudo systemctl --no-pager status supervisor

EDIT: env var SYSTEMD_PAGER

@Jwodder tarafından işaret edildiği gibi bir başka yol da SYSTEMD_PAGER ortam değişkenini ayarlamaktır. Bu, systemctlbenzeri başka bir uygulama tarafından çağrıldığında çıktısını da etkileme avantajına sahiptir service.

export SYSTEMD_PAGER=''
sudo service supervisor status

Aynı çıktıyı elde etmenizi sağlar.


2
Ben komuta önce seçeneği koyarak önermek isterim:sudo systemctl --no-pager status supervisor
Jeff Schaller

önerinize uyacak şekilde düzenlendi. Amaçlanan kullanım araçlarını takip etmek iyi. Teşekkürler.
Tim Kennedy

2
"Ubuntu bir systemdsistemdir" ... Upstart kullanımda değilken
kedi

6
Her systemctlzaman --no-pagerverilen gibi davranmak için SYSTEMD_PAGERortam değişkenini ya catda boş dizeye ayarlayabilirsiniz .
jwodder

@jwodder - ayarı SYSTEMD_PAGER, systemctlçağrıldığında bile çıktısını etkileyen ek bir avantaja sahiptir service. Güzel.
Tim Kennedy,

34

daha az normalde, çıktısının bir terminal olmadığını tespit etmesi durumunda çağrı modunu kapatır. Böylece komutunuzun çıktısını terminal gibi bir şey yapmayı deneyerek deneyebilirsiniz:

sudo service supervisor status | cat

4
Bu cevap iyidir, çünkü geneldir. Tim Kennedy'nin cevabı iyidir çünkü kendine özgüdür systemctl. İkisini de kaybettim.
Kamil Maciorowski

Neredeyse cevabımı diğeri lehine silmek üzereydim, ancak genel bilgi toplama alanının nasıl değerli olabileceğini görüyorum. Kayıt için, diğer cevabın kabul edilecek cevap olması gerektiğini düşünüyorum.
1717'de

Her zaman daha genel olan cevabı seçeceğim, diğer tüm şeyler eşit. Bu, arka uç komutu giderse ve lessbu davranışı istemiyorsam RHEL'de yapacağım şeydir . Tabii ki, bunu "Active:" satırı gibi bir şey çıkaran bir senaryoda yapsaydım, çoktan terminale gitmezdi ve bu problem bile olmazdı.
Monty Harder

O değil lesskapatarak bir şey. Bu oluyor systemctlstandart çıkış terminal değilken ilk etapta bir çağrı cihazı yürütmesini değil.
JdeBP

@MontyHarder, muhtemelen Active: satırını çıkarmamanız gerektiği gerçeğinin yanı sıra, systemctl durumunun çıkış kodunu da kontrol edebilirsiniz (gerçekten status yerine komut dosyasında systemctl show kullanmalısınız) veya systemctl is- {active, fail} , bu hiçbir ayrıştırma BS olmadan size söyleyeceğim :)
Yine Başka Bir Kullanıcı

16

Kimden 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").

Böylece, ortamınızın başlatılmasında herhangi bir yerinde, şunları ayarlayın:

SYSTEMD_PAGER=

Güzel. Bununla ilgili bu güzel şey, SYSTEMD_PAGER ayarının aynı zamanda systemctl! şimdi service supervisor statusde aynı davranışı sergiliyor.
Tim Kennedy

@Obedersin, ama manpages'ımı kod bloklarında tercih ederim.
muru

3

sudoersDosyanızı değiştirmeniz de gerekecektir :

 Defaults        env_keep += "SYSTEMD_PAGER"

Bu çok yararlı bilgiler .. SYSTEMD_PAGER geçtikten sonra, aslında üzerinde tahriş başlamıştı edilir sudo systemctl status <service>hala belleğine edildi .. 1
Procyclinsur
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.