vorrei sapere come avrei potuto ottenere il numero di processi per ogni utente che è attualmente connessiIl numero di processi che un utente è in esecuzione utilizzando bash
risposta
dare una prova:
ps -u "$(echo $(w -h | cut -d ' ' -f1 | sort -u))" o user= | sort | uniq -c | sort -rn
Al fine di gestire correttamente i nomi utente che potrebbero essere più di otto caratteri, utilizzare users
invece di w
. Quest'ultimo tronca i nomi utente.
ps -u "$(echo $(printf '%s\n' $(users) | sort -u))" o user= | sort | uniq -c | sort -rn
Si potrebbe provare qualche variazione di questo:.
ps haux Ou | cut '-d ' -f1 | uniq -c
Fornisce il numero di processi per ciascun utente (accesso o meno). Ora si potrebbe filtrare i risultati utilizzando l'output del comando w o di un altro modo di determinare quanti utenti sono collegati.
Bello! Potrebbe aggiungere un punto 'grep '\ | tty'' prima del taglio, eliminerebbe qualsiasi processo non legato a un terminale. – zigdon
ps -u aboelnour | awk 'END {print NR}'
mostrerà il numero di processo che utente aboelnour eseguirlo
'wc -l' funziona altrettanto bene del comando awk. –
seguenti link contengono utili ps commands options compreso le vostre esigenze:
userlist=$(w|awk 'BEGIN{ORS=","}NR>2{print $1}'|sed 's/,$//')
ps -u "$userlist"
Ho usato questo in combinazione con la risposta di Aboelnour ma mi dà il numero di processi senza l'utente corrispondente di quei processi. Qualche idea su come potrei risolvere questo? – Vidi
Se si desidera solo un conteggio di processi che è possibile utilizzare procfs direttamente in questo modo: (richiede Linux 2.2 o superiore)
è possibile utilizzare wc:
number_of_processes=`echo /proc/[0-9]* | wc -w`
o farlo in puro bash (nessun comando esterno) come questo
procs=(/proc/[0-9]*)
number_of_proccesses=${#procs[*]}
Se si desidera solo l'uso corrente liberarsi
procs=(/proc/[0-9]*/fd/.)
number_of_proccesses=${#procs[*]}
Ecco la mia soluzione, per Linux:
$ find/proc -user $ USER -maxdepth 1 -name '[0-9] *' | wc -l
Questa soluzione non fallirà quando il numero di processi è maggiore del limite della riga di comando.
Se si è mai preoccupati di avvicinarsi al limite del processo utente mostrato da ulimit -a
, si desidera ottenere TUTTI i processi (inclusi i LWP).In tal caso si dovrebbe usare:
ps h -Led -o user | sort | uniq -c | sort -n
su un sistema a fare questo:
ps haux Ou | cut '-d ' -f1 | uniq -c
rendimenti:
# 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+
dove fare gli ex rese il conteggio vero processo:
# 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. come limitare il numero di processi PBS in esecuzione simultaneamente
- 2. Conteggio semplice script bash in esecuzione processi per nome
- 3. Come utilizzare Trap in modo affidabile utilizzando Bash in esecuzione processi figlio in primo piano
- 4. Multiprocessing in Python mentre si limita il numero di processi in esecuzione
- 5. Esecuzione stringhe bash utilizzando scala.sys.process
- 6. Recupero nomi di processi in esecuzione
- 7. Come tracciare e prevenire il deadlock apparso in c3po che è in esecuzione in processi separati?
- 8. Processi in esecuzione. Perché visualizzare il numero uid invece di username?
- 9. Come modificare il numero di processi paralleli?
- 10. ottenere tutte le informazioni sui processi in esecuzione utilizzando QProcess
- 11. Bash: limitare il numero di lavori simultanei?
- 12. processi in esecuzione in background php
- 13. Python: esecuzione di processi daemon in Windows7
- 14. Il numero di processi celeryd dipende dall'impostazione di --concurrency?
- 15. Come visualizzare un elenco di processi in esecuzione in PowerShell
- 16. Numero massimo di processi in linux
- 17. Come uccidere tutti i server in esecuzione in gulp utilizzando un comando bash
- 18. Verifica se il processo Mac è in esecuzione utilizzando Bash per nome processo
- 19. Numero di thread in esecuzione
- 20. Posso interrompere il comando bash in esecuzione?
- 21. Bash Arithmetic $ numero! = $ ((Numero))
- 22. Processi di biforcazione/filettatura multipla | Bash
- 23. Esecuzione di un comando bash tramite CMake
- 24. Esecuzione script Cmder bash
- 25. comunicazione tra due processi in esecuzione node.js
- 26. Esecuzione di script bash in gradle
- 27. Cambiare l'utente che i processi di lavoro di nginx sono in esecuzione (Ubuntu 12.04)
- 28. Trova il numero più piccolo che è maggiore di un dato numero in un elenco ordinato
- 29. Come verificare se un processo è in esecuzione utilizzando Delphi?
- 30. Determinare il percorso dello script BASH esecuzione
Questo è proprio quello di cui avevo bisogno, grazie !!! – Vidi
Sfortunatamente 'w -h' tronca i nomi utente a 8 caratteri, elenca anche solo gli utenti che hanno effettuato l'accesso in modo da non avere una vista di tutti gli utenti, basta accedere agli utenti. –
@OliverDungey: l'OP ha chiesto agli utenti che sono attualmente connessi. Se vuoi processi per tutti gli utenti, indipendentemente dal fatto che siano loggati, non hai bisogno di 'w' - puoi semplicemente usare' ps' (che può essere fatto per mostrare i lunghi nomi utente per intero). Il comando 'utenti' mostra gli utenti registrati e sembra non troncare i nomi. La mia risposta potrebbe essere adattata per usarla. Aggiornerò la mia risposta –