Để có độ dài động lớn hơn mà câu trả lời của moosaka (ví dụ, nếu bạn có rất ít tên người dùng, nhưng rất hiếm khi được sử dụng và bạn không muốn màn hình bị lãng phí phần lớn thời gian), bạn có thể sử dụng:
người dùng ps -eo: $ (ps axho uid | sắp xếp -u | xargs getent passwd | cắt -f1 -d: | wc -L), pid, ppid, c, stime, tname, time, cmd
Nó sẽ làm cho chiều dài của cột tên người dùng chỉ miễn là tên người dùng dài nhất của quy trình hiện đang chạy. (Lưu ý rằng nó không phải là chống đạn tuy nhiên, và nếu quá trình mới với tên người dùng dài hơn bắt đầu trong phân chia thứ hai trong khi lệnh đang chạy, bạn vẫn có thể nhận được một số hiển thị. Nhưng đối với 99,99% thời gian nó đẹp hơn nhiều)
Giải thích: $(ps axho uid [...] | wc -L)
tính toán độ dài tên người dùng tối đa của quá trình chạy CURRENTLY và sau đó chúng tôi thực thi ps bình thường với chiều dài của tên người dùng
Ngoài ra, nếu bạn muốn trông giống như bình thường đối với tên người dùng ngắn (< = 8 ký tự) và không tâm trí cho một vài tên người dùng dài ở đầu ra không được căn chỉnh với tiêu đề, bạn có thể làm điều gì đó như:
ps ax-người dùng: 40, pid, ppid, c, stime, tname, time, cmd | perl -pe 'if (/^(\ S +)/và chiều dài $ 1> 8) {s/^ (\ S +) \ s +/$ 1 /} khác {s/^ (. {9}) \ s +/$ 1 /} '
gì mà không là làm cho cột tên truy nhập đầu ra rất dài (-o user:40
), và sau đó postprocesses đầu ra tên người dùng quá lâu (length $1 > 8
) chỉ có một khoảng cách giữa họ và cột tiếp theo, và tên người dùng ngắn (else {
) đều được tỉa trở về mặc định (tối đa 8 ký tự, và số còn lại tối đa 9 ký tự là dấu cách)
Có thể vì số UID có độ dài tối đa có thể dự đoán được, trong khi tên người dùng có thể khá dài? –
Có chiều dài của tên người dùng (Nếu dài hơn 8 ký tự, thì 'ps aux' sẽ thay thế uid cho tên). Chạy 'man ps' ngay để xem chi tiết. –