Solaris'te kesikli çizgiler olmadan tam bir işlem listesini nasıl alabilirim?


57

Solaris'te kesikli çizgiler olmadan tam bir işlem listesi oluşturmanın bir yolu var mı? Bu pskomutu aşağıdaki argümanlarla denedim :

  -f Tam bir liste oluşturur. (İçin aşağıya bakın
                      tam listedeki sütunların önemi
                      ing.)
  -L uzun bir liste oluşturur. (Aşağıya bakınız.)

Yani, ikisi de istediğimi yapıyor gibi gözüküyor, ancak ps man sayfasında daha da şunu buluyorum:

 
 args Komut olarak tüm argümanlarını içeren komut.
                         dize. Uygulama kesilebilir
                         bu değer alan genişliğine göre; bu
                         uygulamaya bağlı olup olmadığı
                         daha fazla kesme olur. Bu
                         dize olup olmadığı belirtilmemiş
                         temsil argümanın bir versiyonudur
                         Komuta geçirildiği şekliyle liste
                         başladığında, ya da
                         değiştirilmiş olabilecek argümanlar
                         uygulama tarafından. Uygulamalar yapamaz
                         değişiklik yapabilmeye bağlı
                         Argüman listesi ve bu değişiklik-
                         ps çıkışına yansımış.
                         Solaris uygulaması,
                         80 bayta kadar dize; dize
                         Argüman listesinin hali hazırdaki haliyle
                         başladığında komuta geçti.

Temel olarak, çıktının kesileceğini ve bu konuda yapabileceğim hiçbir şey olmadığını söyleyen şey var. Yani buraya geliyorum. Elbette diğer insanlar da bu problemle karşı karşıya kaldılar ve belki de bununla ilgili bir yol bulabilirler. Sanırım ps bunu yapamıyor ve bu yüzden bunu yapmak için başka araçlar kullanmam gerekiyor. Bu doğru mu?


Komutadan mı bahsediyorsun ps? Öyleyse daha net olması için lütfen soruyu güncelleyin.
phunehehe

Evet, özür dilerim ... ilk görüşmem ps komutuyla yapıldı, soruyu daha netleştirdim.
gabe.

Yanıtlar:


63

deneyebilirsin

pargs <PID>

bu size tüm argümanların bir listesini verir

veya başka bir ps kullanın. Kök olarak çalıştırılıyorsa (veya bu konuda yeterli ayrıcalıklara sahip herhangi bir kullanıcı)

/usr/ucb/ps auxww

Size tüm argümanları vereceğim. SUNWscpu'nun bir parçası, "Kaynak Uyumluluğu, (Usr)"


pargskomut satırı argümanlarının (ve isteğe bağlı olarak ortamın) işlem içi kopyasını gösterir. Bilmek güzel, teşekkürler!
Gilles 'SO- kötü olmayı bırak'

1
Bu bütün / usr / ucb dizini benim için yeni ... Bayıldım!
gabe.

2
Solaris 11'de, tire işareti olmayan seçenekler kullanırsanız ("/ usr / bin / ps auxwww" gibi) UCB stil seçenekleri olarak değerlendirilir ve çıktı, root olarak çalışmazsanız bile, ekstra uzun çizgiler gösterir. Bu iyi bir şekilde tanıtılmamıştır. Ayrıca bakınız: superuser.com/questions/148271/ps-command-in-solaris
Chris Quenelle

14

Komut satırı argümanlarını takip etmek için çekirdeğe gerek yoktur. Arama sırasında bir program başlatıldığında execve, çekirdek argümanları işlem belleğine kopyalamalıdır ( argvörneğin bir C programında olduğu gibi). Bundan sonra, çekirdek ilk komut satırı argümanlarını saklamak için kullanılan belleği atabilir. İşlem, bağımsız değişkenlerin kopyasının üzerine yazabilir. Öyleyse, argümanların izi yoktur.

Bazı unix türevleri, bazı formlardaki argümanların bir kopyasını tutar. Solaris bazı verileri içeriyor /proc/$pid. OpenSolaris 2009.06'dan itibaren, argümanların tek izi, /proc/$pid/psinfoaralarındaki boşluklarla birleştiği yerdedir (böylece foo "one" "two"ve arasında ayrım yapamazsınız foo "one two") ve sonuçta ortaya çıkan dize 80 bayta kesilir. Bu alan içinde /proc/$pid/psinfone psde yazdırır argssütununda.

Bu arada -fve -lseçenekler, alanların bir genişliğe kesilip kesilmediğini değil, hangi alanların yazdırılacağını kontrol eder.


Bu da çok iyi bilgilendirici bir cevaptı. Pargs komutu ihtiyacımı daha iyi karşıladı, bunun için bu cevabı seçmemin tek sebebi buydu.
gabe.

6
Bu yüzden, bir kez daha burada 2013 yılında oturuyoruz ve hala 80 bayta dizeleri kısaltıyoruz çünkü 1970'lerde sadece 80 char terminalleri vardı ve "bazı" programlar henüz hayatın devam ettiğini gerçeğini anlamadılar. Ve bundan hoşlanıyoruz, bunu "uyumluluk" olarak övüyoruz! Kendimizden utanmalıyız ...
Manjabes

1
@ Manjabes haha! Solaris'i kullanmaya devam etmeyi seçen kişiler, eski-skool yöntemiyle işleri yapan sistemden şikayet etmemelidir ;-) Solaris, belirli davranışları bekleyen eski programlarla daha geriye uyumlu olması için kasıtlı olarak yavaşça değişmektedir. Daha uzun bir ps listesine ve hizmet programlarında daha fazla fantezi özelliğine sahip bir işletim sistemi istiyorsanız, bunun yerine Linux kullanabilirsiniz.
JohnGH

2

ps -eÇalışan tüm işlemlerin listesini verir. Ayrıca bu var ps -elf.


2
-L argümanını kullanmak bile komut satırı bilgilerini keser
Lars Nordin

1
Sorunun cevabı değil.
Konrad Gajewski

0

Hangi pskomutu kullandığına bağlı olarak

ps -auxw

1
Solaris'te psw argümanları kullanan ps sürümü öncü gerektirmez '-' Solaris'te değilseniz, cevabınız önemli değildir.
JohnGH

0

prstat Size şu anda çalışan işlemleri pids ve CPU kullanımı ile birlikte verecektir.

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.