Linux shell编程学习笔记50:who命令

0 前言

2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。比如,我们可以使用who命令来收集当前已登陆系统的用户信息,当前运行级别等信息。

1. who命令 的功能、格式和选项说明

我们可以使用命令 who --help 来查看who命令的帮助信息。

[purpleendurer @ bash ~] ++who --help++

Usage: who [OPTION]... [ FILE | ARG1 ARG2 ]

Print information about users who are currently logged in.

-a, --all same as -b -d --login -p -r -t -T -u

-b, --boot time of last system boot

-d, --dead print dead processes

-H, --heading print line of column headings

-l, --login print system login processes

--lookup attempt to canonicalize hostnames via DNS

-m only hostname and user associated with stdin

-p, --process print active processes spawned by init

-q, --count all login names and number of users logged on

-r, --runlevel print current runlevel

-s, --short print only name, line, and time (default)

-t, --time print last system clock change

-T, -w, --mesg add user's message status as +, - or ?

-u, --users list users logged in

--message same as -T

--writable same as -T

--help display this help and exit

--version output version information and exit

If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.

If ARG1 ARG2 given, -m presumed: 'am i' or 'mom likes' are usual.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/\>

Report who translation bugs to <http://translationproject.org/team/\>

For complete documentation, run: info coreutils 'who invocation'

1.1 who命令的功能

显示当前已登录的用户信息。

1.2 who命令的格式

who [选项]... [ 文件 | 参数1 参数2 ]

1.3 who命令的选项说明
选项 描述
-a --all 等于-b -d --login -p -r -t -T -u 选项的组合
-b --boot 上次系统启动时间
-d --dead 显示已死的进程
-H --heading 输出头部的标题列
--ips 打印 IP 而不是主机名。使用 --lookup,根据存储的 IP(如果可用)进行规范化,而不是存储的主机名
-l --login 显示系统登录进程
--lookup 尝试通过 DNS 查验主机名
-m 只显示和标准输入有直接交互的主机和用户
-p --process 显示由 init 进程衍生的活动进程
-q --count 列出所有已登录用户的登录名与用户数量
-r --runlevel 显示当前的运行级别
-s --short 只显示名称、线路和时间(默认)
-t --time 打印上次系统时钟更改
-T -w --mesg 用+,- 或 ? 标注用户消息状态
-u --users 列出已登录的用户
--message 等于-T
--writable 等于-T
--help 显示此帮助信息并退出
--version 显示版本信息并退出

如果未指定 文件,请使用 /var/run/utmp。 /var/log/wtmp 作为 文件 很常见。

如果给出 参数1 参数2,则 -m 假定:"am i"或"mom likes"是常见的。

2 who命令使用实例

2.1 who -b 显示上次系统启动时间。

[purpleendurer @ bash ~] ++who -b++

系统引导 2024-05-27 17:33

[purpleendurer @ bash ~]

2.2 who -l:显示系统登录进程

[purpleendurer @ bash ~] ++who -l++

登录 ttyAMA0 2024-05-27 09:33 1710 id=AMA0

登录 tty1 2024-05-27 09:33 1708 id=tty1

命令返回了6列信息,分别是什么含义呢?我们可以使用-H 选项来了解。

2.3 who -H -l:显示标题行及系统登录进程

[purpleendurer @ bash ~] ++who -l -H++

名称 线路 时间 空闲 进程号 备注

登录 ttyAMA0 2024-05-27 09:33 1710 id=AMA0

登录 tty1 2024-05-27 09:33 1708 id=tty1

这下我们知道每列信息的含义了吧?

2.4 who -H -m:只显示标题行及和标准输入有直接交互的主机和用户

[purpleendurer @ bash ~] ++who -m -H++

名称 线路 时间 备注

gxxc pts/0 2024-05-27 23:02 (:0)

[purpleendurer @ bash ~]

2.5 who -q:只显示标题行及和标准输入有直接交互的主机和用户

[purpleendurer @ bash ~] ++who -q++

root purpleendurer

用户数=2

2.6 who -r:显示当前的运行级别

[purpleendurer @ bash ~] ++who -r++

运行级别 5 2024-05-27 09:33

[purpleendurer @ bash ~]

说明:在传统的Linux系统中,运行级别可以分为以下几类:

  1. 0级:关机 - 所有进程都将被终止,系统被关闭。
  2. 1级:单用户模式 - 仅允许一个用户登录系统,通常用于系统维护或恢复。
  3. 2级:多用户模式,不带NFS - 多个用户可以登录系统,但网络文件系统(NFS)不可用。
  4. 3级:多用户模式,文本模式 - 这是一个完全的多用户模式,支持网络功能,但通常只提供命令行界面,没有图形界面。
  5. 4级:未定义 - 在某些系统中,这个级别可能用于定义自定义的运行模式。
  6. 5级:多用户模式,图形界面 - 类似于级别3,但提供了图形用户界面(GUI),允许用户使用图形界面登录和操作系统。
  7. 6级:重启 - 系统将重新启动。

2.7 who -w -H:用+,- 或 ? 标注用户消息状态

[purpleendurer @ bash ~] ++who -w -H++

名称 线路 时间 备注

boot + tty7 2024-05-27 09:33 (:0)

purpleendurer + pts/0 2024-05-27 23:02 (:0)

[purpleendurer @ bash ~]

2.8 who am i -H:显示当前用户信息

[purpleendurer @ bash ~] who am i -H

名称 线路 时间 备注

purpleendurer pts/0 2024-05-27 23:02 (:0)

[purpleendurer @ bash ~]

2.9 who -u -H:列出已登录的用户

[purpleendurer @ bash ~] ++who -u -H++

名称 线路 时间 空闲 进程号 备注

root tty7 2024-05-27 09:33 old 2428 (:0)

purpleendurer pts/0 2024-05-27 23:02 . 30989 (:0)

[purpleendurer @ bash ~]

其中第4列是闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。

2.10 显示所有信息

[purpleendurer @ bash ~] ++who -a -H++

名称 线路 时间 空闲 进程号 备注 退出

系统引导 2024-05-27 17:33

登录 ttyAMA0 2024-05-27 09:33 1710 id=AMA0

登录 tty1 2024-05-27 09:33 1708 id=tty1

运行级别 5 2024-05-27 09:33

root tty7 2024-05-27 09:33 old 2428 (:0)

purpleendurer pts/0 2024-05-27 23:02 . 30989 (:0)

[purpleendurer @ bash ~]

相关推荐
Peter_chq17 分钟前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮1 小时前
Linux 使用中的问题
linux·运维
dsywws2 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零3 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
小林熬夜学编程4 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
Lionhacker5 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术
程思扬5 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
sun0077005 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp5 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
乡村农夫5 小时前
cuda 环境搭建
linux