it-swarm-vi.com

Làm thế nào tôi có thể có được một danh sách quá trình đầy đủ trong solaris, mà không cần cắt ngắn?

Có cách nào để tạo một danh sách quy trình đầy đủ trong solaris, mà không cần cắt ngắn không? Tôi đã thử lệnh ps, với các đối số sau:

[.__.] -f Tạo một danh sách đầy đủ. (Xem bên dưới để biết [.__.] Ý nghĩa của các cột trong danh sách đầy đủ - [.__.] Ing.) [.__.]
[.__.] -l Tạo một danh sách dài. (Xem bên dưới.)

Vì vậy, cả hai dường như làm những gì tôi muốn, tuy nhiên, sâu hơn trong trang ps man, tôi thấy điều này:

 [.__.] args Lệnh với tất cả các đối số của nó là một chuỗi [.__.]. Việc triển khai có thể cắt bớt [.__.] Giá trị này theo chiều rộng của trường; đó là [.__.] phụ thuộc vào việc triển khai cho dù có bất kỳ [.__.] cắt ngắn nào xảy ra nữa. Đó là [.__.] Không xác định liệu chuỗi [.__.] Được đại diện là một phiên bản của danh sách đối số [.__.] Khi nó được chuyển đến lệnh [.__.] Khi nó bắt đầu hoặc là phiên bản của các đối số [.__.] vì chúng có thể đã được sửa đổi [.__.] bởi ứng dụng. Các ứng dụng không thể [.__.] Tùy thuộc vào việc có thể sửa đổi danh sách đối số [.__.] Và có sự sửa đổi đó - [.__.] Tion được phản ánh trong đầu ra của ps. [.__.] Việc triển khai Solaris giới hạn [.__.] chuỗi đến 80 byte; chuỗi là phiên bản [.___.] của danh sách đối số như đã được [.__

Về cơ bản nói rằng đầu ra sẽ bị cắt ngắn và tôi không thể làm gì về nó. Vì vậy, tôi đang đến đây. Chắc chắn những người khác đã gặp phải vấn đề này và thậm chí có thể có cách giải quyết. Tôi đoán ps không thể làm điều đó và vì vậy tôi cần sử dụng các công cụ khác để làm điều này. Điều đó có chính xác không?

57
gabe.

bạn có thể thử

pargs <PID>

cái này cung cấp cho bạn một danh sách tất cả các đối số

hoặc người khác sử dụng một ps khác. Nếu chạy dưới quyền root (hoặc bất kỳ người dùng nào có đủ đặc quyền cho vấn đề đó)

/usr/ucb/ps auxww

sẽ cung cấp cho bạn tất cả các đối số. Một phần của SUNWscpu, "Tương thích nguồn, (Usr)"

62
Marcel G

Hạt nhân không bắt buộc phải theo dõi các đối số dòng lệnh. Khi một chương trình được bắt đầu thông qua cuộc gọi execve, hạt nhân phải sao chép các đối số vào bộ nhớ tiến trình (ví dụ như chúng sẽ có sẵn dưới dạng argv trong chương trình C). Sau đó, kernel có thể loại bỏ bộ nhớ được sử dụng để lưu trữ các đối số dòng lệnh ban đầu. Quá trình này được phép ghi đè lên bản sao của các đối số. Vì vậy, có thể chỉ đơn giản là không có dấu vết của các đối số.

Một số biến thể unix giữ một bản sao của các đối số ở một số hình thức. Solaris tiết lộ một số dữ liệu trong /proc/$pid. Kể từ OpenSolaris 2009,06, dấu vết duy nhất của các đối số là trong /proc/$pid/psinfo, nơi chúng được nối với các khoảng trắng ở giữa (vì vậy bạn không thể phân biệt giữa foo "one" "two"foo "one two") và chuỗi kết quả được cắt ngắn thành 80 byte. Trường này trong /proc/$pid/psinfo là những gì ps in trong cột args.

Nhân tiện, -f-l tùy chọn kiểm soát các trường được in, không phải là các trường được cắt ngắn theo chiều rộng nào đó.

14

ps -e đưa ra danh sách tất cả các quy trình đang chạy. Ngoài ra còn có ps -elf.

2
ari

Tùy thuộc vào lệnh ps mà bạn sử dụng, tôi sử dụng

ps -auxw
0
Wes

prstat sẽ cung cấp cho bạn các quy trình hiện đang chạy cùng với các pids của chúng và việc sử dụng CPU.

0
user41052