【問題】統計系統上有多少個用戶


今天突發奇想冒出這么個問題,覺得很有必要寫篇文章紀念一下。

以前我都是tail /etc/passwd,手動去查有多少個用戶(包括活躍的 和 不活躍的),但是這種方法太蠢了。於是解決問題的漫長之旅開始了。。。。。。

按照由簡到難的順序展開

統計當前系統有多少活躍用戶(沒登陸的不算)

借助who命令

who顯示登陸到Linux的每個會話

[root@localhost ~]# who
root     pts/0        2018-06-13 21:29 (192.168.80.1)
root     pts/1        2018-06-13 21:47 (192.168.80.1)
lfs      pts/2        2018-06-13 21:53 (192.168.80.1)
[root@localhost ~]# who -H
NAME     LINE         TIME             COMMENT
root     pts/0        2018-06-13 21:29 (192.168.80.1)
root     pts/1        2018-06-13 21:47 (192.168.80.1)
lfs      pts/2        2018-06-13 21:53 (192.168.80.1)

但是如果一個用戶開啟了多個xshell遠程鏈接,就會有多個會話,需要過濾一下

[root@localhost ~]# who | cut -d " " -f 1|sort -u
lfs
root

然后在統計個數

[root@localhost ~]# who | cut -d " " -f 1|sort -u | wc -l
2

還有個參數-q,可以顯示當前會話個數,以及用戶名。但是這個參數也有個必斷,如果一個用戶開啟了多個xshell遠程鏈接,就會有多個會話,會產生多個相同用戶名

[root@localhost ~]# who -q
root root lfs
# users=3

借助w命令

w不僅顯示登陸用戶詳細信息,還能看到他們在干什么

[root@localhost ~]# w -h | cut -d " " -f 1 | sort -u |wc -l
2

借助ps命令

[root@localhost ~]# ps -eaho user
root
root
root
root
root
lfs
root

This command says, "show information for every process owned by any user, do not show headers, and print only the name of the user."

who僅僅顯示登錄到終端會話的用戶,而ps會列出擁有正在允許進程的所有用戶,即使他們沒有打開終端。ps會包含root用戶,還有可能包含其他系統用戶

[root@localhost ~]# ps -eaho user | sort -u
lfs
root
[root@localhost ~]# ps -eaho user | sort -u | wc -l
2

另一個路子

[root@localhost ~]# echo $(wc -l < /etc/passwd)
22

這種方法會把所有用戶(包括系統用戶)統計出來

 

統計當前系統有多少用戶

這個暫時想不到好方法,只能自己cat /etc/passwd來目查了。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM