Tôi muốn biết làm thế nào tôi có thể nhận được số lượng của các quá trình cho mỗi người dùng hiện đang đăng nhậpSố lượng các quá trình người dùng đang chạy sử dụng bash
Trả lời
này cung cấp cho một thử:
ps -u "$(echo $(w -h | cut -d ' ' -f1 | sort -u))" o user= | sort | uniq -c | sort -rn
Để xử lý đúng đắn tên người dùng mà có thể dài hơn tám ký tự, sử dụng users
thay vì w
. Sau này cắt bớt tên người dùng.
ps -u "$(echo $(printf '%s\n' $(users) | sort -u))" o user= | sort | uniq -c | sort -rn
Bạn có thể thử một số biến thể của việc này:.
ps haux Ou | cut '-d ' -f1 | uniq -c
Nó cung cấp cho bạn số lượng quy trình cho mỗi người dùng (đang đăng nhập hay không). Bây giờ bạn có thể lọc những kết quả sử dụng đầu ra của lệnh w hoặc một cách khác để xác định người đang đăng nhập.
Tuyệt vời! Có thể thêm một 'grep 'pts \ | tty'' trước khi cắt, sẽ cắt ra bất kỳ quá trình không gắn liền với một thiết bị đầu cuối. – zigdon
ps -u aboelnour | awk 'END {print NR}'
sẽ hiển thị số của quá trình mà người dùng aboelnour chạy nó
'wc -l' hoạt động giống như lệnh awk đó. –
liên kết Sau chứa hữu ích ps commands options bao gồm yêu cầu của bạn:
userlist=$(w|awk 'BEGIN{ORS=","}NR>2{print $1}'|sed 's/,$//')
ps -u "$userlist"
Tôi đã sử dụng kết hợp này với câu trả lời của Aboelnour nhưng nó mang lại cho tôi số lượng quy trình mà không có người dùng tương ứng của các quy trình đó. Bất kỳ ý tưởng nào về cách tôi có thể sửa lỗi này? – Vidi
Nếu bạn chỉ muốn một số các quá trình bạn có thể sử dụng procfs trực tiếp như thế này: (yêu cầu linux 2.2 hoặc cao hơn)
bạn có thể sử dụng wc:
number_of_processes=`echo /proc/[0-9]* | wc -w`
hoặc làm điều đó trong bash thuần túy (không có lệnh bên ngoài) như thế này
procs=(/proc/[0-9]*)
number_of_proccesses=${#procs[*]}
Nếu bạn chỉ muốn sử dụng hiện tại thoát khỏi
procs=(/proc/[0-9]*/fd/.)
number_of_proccesses=${#procs[*]}
Đây là giải pháp của tôi, dành cho Linux:
$ find/-user proc $ USER -maxdepth 1 -name '[0-9] *' | wc –l
Giải pháp này sẽ không thành công khi số lượng quy trình lớn hơn giới hạn dòng lệnh.
Nếu bạn quan tâm đến việc gần đạt đến giới hạn quy trình người dùng được hiển thị bởi ulimit -a
, bạn muốn nhận TẤT CẢ các quy trình (bao gồm LWP).Trong trường hợp này bạn nên sử dụng:
ps h -Led -o user | sort | uniq -c | sort -n
Trên một hệ thống làm việc này:
ps haux Ou | cut '-d ' -f1 | uniq -c
sản lượng:
# ps haux Ou | cut '-d ' -f1 | uniq -c
30 user1
1 dbus
3 user2
1 ntp
1 nut
1 polkitd
2 postfix
124 root
2 serv-bu+
nơi làm sản lượng cựu quá trình thực count:
# ps h -Led -o user | sort | uniq -c | sort -n
1 ntp
1 nut
2 dbus
2 postfix
2 serv-builder
3 user2
6 polkitd
141 root
444 user1
- 1. Phát hiện số quá trình đang chạy với cùng tên
- 2. Nicing một quá trình python đang chạy?
- 3. parallelize Bash kịch bản với số lượng tối đa của các quá trình
- 4. Người dùng nào đang chạy ứng dụng Rails của tôi?
- 5. Kiểm tra xem quá trình Mac có đang chạy bằng Bash theo tên quy trình
- 6. Sản lượng màu của chương trình chạy dưới BASH
- 7. Quy trình đang chạy. Tại sao hiển thị số uid thay vì tên người dùng?
- 8. Chức năng chạy bash với người dùng khác nhau
- 9. kịch bản để cho tôi biết ai và số lượng người dùng đang trực tuyến
- 10. file đang được sử dụng bởi một quá trình
- 11. Số lượng đối số không xác định cho các hàm do người dùng định nghĩa SQL?
- 12. BitBucket.org - chỉ giới hạn số lượng người dùng?
- 13. Cách đếm số lượng người dùng đồng thời sử dụng dữ liệu khoảng thời gian?
- 14. Thay đổi người dùng Linux hiện tại trong ứng dụng C# đang chạy bằng Mono?
- 15. Làm thế nào để chạy quá trình tổng thể nginx với người dùng khác nhau
- 16. Bash: Kiểm tra lên, chạy một quá trình nếu không chạy
- 17. Sử dụng quá nhiều ASP.Net của các Điều khiển Người dùng
- 18. bash: lưu trong một biến số giây mà một quá trình đã thực hiện để chạy
- 19. Lấy danh sách các thư viện đã sử dụng bằng một tiến trình đang chạy (unix)
- 20. Sử dụng AttachConsole, trong khi quá trình tôi đã đính kèm đang chạy và phun, tôi vẫn có thể nhập và chạy các lệnh khác
- 21. Phát hiện số lượng người dùng đã cuộn
- 22. Tôi làm cách nào để biết trình duyệt nào người dùng đang sử dụng?
- 23. Quá trình khởi chạy ứng dụng Android
- 24. Quy trình chạy theo người dùng hiện tại
- 25. Liệt kê các tiến trình đang chạy trong Delphi
- 26. Kiểm tra Nếu quá trình đang chạy từng phút
- 27. Hủy quá trình xây dựng đang chạy trong VS
- 28. Trình khởi chạy nào đang chạy?
- 29. Tìm hiểu xem người dùng Apache đang chạy như thế nào trong các cửa sổ?
- 30. Tìm hiểu số lượng ứng dụng mà ứng dụng của tôi đang chạy?
Đây chỉ là những gì tôi cần cảm ơn bạn !!! – Vidi
Thật không may 'w -h 'cắt ngắn tên người dùng thành 8 ký tự, nó cũng chỉ liệt kê những người dùng đã đăng nhập để bạn không có được cái nhìn của tất cả người dùng, chỉ cần đăng nhập người dùng. –
@OliverDungey: OP yêu cầu người dùng hiện đang đăng nhập. Nếu bạn muốn quy trình cho tất cả người dùng bất kể họ đăng nhập thì bạn không cần 'w' - bạn chỉ có thể sử dụng' ps' (có thể được thực hiện để hiển thị tên người dùng đầy đủ). Lệnh 'users' hiển thị người dùng đã đăng nhập và dường như không cắt bớt tên. Câu trả lời của tôi có thể được điều chỉnh để sử dụng nó. Tôi sẽ cập nhật câu trả lời của mình. –