it-swarm-id.com

Bagaimana saya bisa mendapatkan daftar proses lengkap dalam solaris, tanpa garis terpotong?

Apakah ada cara untuk membuat daftar proses lengkap dalam solaris, tanpa garis terpotong? Saya sudah mencoba perintah ps, dengan argumen berikut:

 -f Menghasilkan daftar lengkap. (Lihat di bawah untuk 
 Signifikansi kolom dalam daftar lengkap - 
 Ing.) 
 -l Menghasilkan daftar panjang. (Lihat di bawah.)

Jadi, mereka berdua tampaknya melakukan apa yang saya inginkan, namun, lebih jauh ke bawah di halaman manual ps, saya menemukan ini:

 
 args Perintah dengan semua argumennya sebagai string 
. Implementasi dapat memotong 
 Nilai ini ke lebar bidang; tergantung pada 
 apakah ada 
 pemotongan lebih lanjut terjadi. Ini 
 Tidak ditentukan apakah string 
 Yang diwakili adalah versi dari argumen 
 Daftar ketika diteruskan ke perintah 
 Ketika dimulai, atau merupakan versi dari argumen 
 karena mungkin telah dimodifikasi 
 oleh aplikasi. Aplikasi tidak dapat 
 Bergantung pada kemampuan untuk mengubah daftar argumen 
 Mereka dan memiliki modifikasi itu - 
 Tion tercermin dalam output dari ps. 
 Implementasi Solaris membatasi 
 string ke 80 byte; string adalah versi 
 dari daftar argumen sebagaimana 
 diteruskan ke perintah ketika dimulai. 

Yang pada dasarnya mengatakan output akan terpotong dan tidak ada yang bisa saya lakukan. Jadi, saya datang ke sini. Tentunya orang lain telah mengalami masalah ini dan bahkan mungkin memiliki jalan keluar. Saya kira ps tidak bisa melakukannya dan jadi saya perlu menggunakan alat lain untuk melakukan ini. Apakah itu akurat?

57
gabe.

kamu bisa mencoba

pargs <PID>

ini memberi Anda daftar semua argumen

atau gunakan ps lain. Jika dijalankan sebagai root (atau pengguna mana pun dengan cukup hak istimewa dalam hal ini)

/usr/ucb/ps auxww

akan memberi Anda semua argumen. Bagiannya dari SUNWscpu, "Kompatibilitas Sumber, (Usr)"

62
Marcel G

Kernel tidak diperlukan untuk melacak argumen baris perintah. Ketika sebuah program dimulai melalui panggilan execve, kernel harus menyalin argumen ke dalam memori proses (sehingga mereka akan tersedia sebagai argv dalam program C, misalnya). Setelah itu, kernel dapat membuang memori yang digunakan untuk menyimpan argumen baris perintah awal. Proses ini diizinkan untuk menimpa salinan argumennya. Jadi mungkin tidak ada jejak argumen.

Beberapa varian unix menyimpan salinan argumen dalam beberapa bentuk. Solaris memaparkan beberapa data dalam /proc/$pid. Pada OpenSolaris 2009.06, satu-satunya jejak argumen ada di /proc/$pid/psinfo, di mana mereka digabungkan dengan spasi di antaranya (jadi Anda tidak dapat membedakan antara foo "one" "two" dan foo "one two") dan string yang dihasilkan dipotong hingga 80 byte. Bidang ini dalam /proc/$pid/psinfo adalah apa yang ps dicetak di kolom args.

Omong-omong, -f dan -l opsi mengontrol bidang apa yang dicetak, bukan apakah bidang tersebut dipotong dengan lebar tertentu.

ps -e memberikan daftar semua proses yang berjalan. Juga ada ini ps -elf.

2
ari

Bergantung perintah ps mana yang Anda gunakan, saya gunakan

ps -auxw
0
Wes

prstat akan memberi Anda proses yang sedang berjalan bersama dengan pids mereka dan pemanfaatan CPU.

0
user41052