linux 提供了许多有用的命令来查看用户、他们的活动以及他们对系统的影响。
在 Linux 上有很多方法可以获取登录系统的用户列表并查看他们在做什么。本文中描述的命令都提供了非常有用的信息。
users
users命令显示已登录用户的简单列表。在此示例中,一位用户登录两次,因此被列出两次。
$ users nemo popeye shs shs
请注意,用户按字母顺序列出。
who
who命令提供附加信息。登录终端连同登录日期和时间被识别。最后一个字段显示连接系统的终端或 IP 地址。
$ who shs tty2 2022-11-12 10:54 (tty2) nemo pts/0 2022-11-15 11:07 (192.168.0.3) shs pts/5 2022-11-15 10:41 (192.168.0.3) popeye pts/2 2022-11-15 11:12 (192.168.0.3)
w
w命令提供有关登录用户的更多信息。第一行输出显示当前时间、系统运行了多长时间、登录用户数以及 1、5 和 15 分钟的平均负载。此信息将使您快速了解系统的繁忙程度。
列标题后面的行显示用户名、登录时间、会话空闲时间、与用户 tty (JCPU) 关联的所有进程使用的时间、用户终端的当前进程使用的时间 (PCPU)、以及正在运行的命令。如果会话当前空闲,您将只看到正在使用的 shell(例如,-bash)。
w命令可以快速查看系统的使用量以及大部分活动的来源。
$ w 12:16:09 up 3 days, 15:10, 4 users, load average: 0.00, 0.01, 0.01 USER TTY LOGIN@ IDLE JCPU PCPU WHAT shs tty2 Sat13 3days 0.05s 0.05s /usr/libexec/gnome-session-bina nemo pts/0 11:07 4:38 0.04s 0.04s -bash shs pts/5 10:41 0.00s 0.10s 0.00s w popeye pts/2 11:12 1:02m 0.02s 0.02s -bash
last
last命令显示用户登录列表,最近的登录在最前面。要查看最近的登录,您可以使用如下命令:
$ last | head -3 popeye pts/2 192.168.0.3 Tue Nov 15 11:12 still logged in nemo pts/0 192.168.0.3 Tue Nov 15 11:07 still logged in shs pts/5 192.168.0.3 Tue Nov 15 10:41 still logged in
要查看当前可用的登录信息可以追溯到多远,请将last命令的输出通过管道传递给 tail 命令。
$ last | tail -3 reboot system boot 5.14.10-300.fc35 Mon Jun 6 15:57 - 16:55 (00:58) wtmp begins Mon Jun 6 15:57:30 2022
ps
如下所示的 ps命令将提供用户正在运行的进程列表。添加grep -v `whoami`只是省略了您将运行以创建列表的命令。您可以只用您的用户名进行grep(例如,grep -v shs),但显示的命令适用于任何人。
$ ps -ef | grep nemo | grep -v `whoami` root 124982 787 0 11:07 ? 00:00:00 sshd: nemo [priv] nemo 124990 1 0 11:07 ? 00:00:00 /usr/lib/systemd/systemd --user nemo 124999 124990 0 11:07 ? 00:00:00 (sd-pam) nemo 125018 124982 0 11:07 ? 00:00:00 sshd: nemo@pts/0 nemo 125025 125018 0 11:07 pts/0 00:00:00 -bash
通过使用grep按第一个字段选择进程详细信息,您将只能看到该用户的进程。^nemo 参数仅选择以“nemo”开头的输出行。
$ ps -ef | grep ^nemo nemo 124990 1 0 11:07 ? 00:00:00 /usr/lib/systemd/systemd --user nemo 124999 124990 0 11:07 ? 00:00:00 (sd-pam) nemo 125018 124982 0 11:07 ? 00:00:00 sshd: nemo@pts/0 nemo 125025 125018 0 11:07 pts/0 00:00:00 -bash
ID
您可以使用id命令显示用户的一些额外详细信息。这包括用户的 UID(用户 ID)、GID(组 ID)和用户所属组的列表。
$ id nemo uid=1012(nemo) gid=1012(nemo) groups=1012(nemo),900(techs)
finger
您还可以使用finger命令获取有关用户的一些信息。
$ finger nemo Login: nemo Name: Nemo the Fish Directory: /home/nemo Shell: /bin/bash On since Tue Nov 15 11:07 (EST) on pts/0 from 192.168.0.3 1 minute 44 seconds idle No mail. No Plan.
uptime
uptime命令会告诉您自上次重新启动以来系统运行了多长时间以及当前登录的用户数。与w命令一样,它也提供系统负载平均值。
$ uptime 12:07:47 up 3 days, 15:01, 4 users, load average: 0.07, 0.13, 0.06
top and htop
如果您想查看特定用户的进程是否对系统性能有影响,您可以使用top或htop等工具来确定是否有任何用户进程正在大量使用系统资源。使用这些工具中的任何一个,按Shift+M键将按内存使用情况对输出进行排序。使用Shift+P将按处理器使用情况对输出进行排序。下面的示例显示 nemo 是系统 CPU 和内存的重要用户,但系统并未受到很大影响。
top - 12:41:48 up 3 days, 15:35, 4 users, load average: 0.14, 0.06, 0.02 Tasks: 262 total, 1 running, 261 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.8 us, 0.5 sy, 0.0 ni, 98.5 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 5926.3 total, 145.1 free, 2273.7 used, 3507.5 buff/cache MiB Swap: 5926.0 total, 5926.0 free, 0.0 used. 3374.3 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3059 root 20 0 259104 29984 8428 S 1.7 0.5 11:11.01 sssd_kcm 134122 nemo 20 0 222648 3976 3524 R 1.3 0.2 0:00.07 loop <=== 128996 shs 20 0 225824 4436 3564 R 0.3 0.1 0:00.63 top 1 root 20 0 172392 17720 11256 S 0.0 0.3 0:03.51 systemd …
总结
用于查看登录用户、他们正在运行的进程以及它们如何影响性能的命令将派上用场,无论您是想了解 Linux 系统的使用方式还是寻找性能问题的根源。
本文由 @小喵 发布于弱电智能网 。
题图来自Unsplash,基于CC0协议
内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
文章名称:《在 Linux 上查看登录用户的方法》
文章链接:https://www.ruodian360.com/tech/sytemops/37441.html
添加微信ydian188免费入群,记得备注“弱电智能网”。