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 \~

相关推荐
groundhappy17 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕17 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫18 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生19 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1120 小时前
linux基础IO
linux·运维·服务器
我不是QI21 小时前
一、主持人信息(域名 网站资产情报搜集)原理解析
安全·网络安全
BelongPanda1 天前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
2501_916008891 天前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
酷可达拉斯1 天前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998341 天前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器