00. 目录
01. 命令概述
who命令用来打印当前登录用户信息,包含了系统的启动时间 、 活动进程 、 使用者 ID、使用终端等信息,是系统管理员了解系统运行状态的常用命令。
02. 命令格式
用法:who [选项]... [ 文件 | 参数1 参数2 ]
- 1
03. 常用选项
显示当前已登录的用户信息。
-a, --all 等于-b -d --login -p -r -t -T -u 选项的组合
-b, --boot 上次系统启动时间
-d, --dead 显示已死的进程
-H, --heading 输出头部的标题列
-l,--login 显示系统登录进程
--lookup 尝试通过 DNS 查验主机名
-m 只面对和标准输入有直接交互的主机和用户
-p, --process 显示由 init 进程衍生的活动进程
-q, --count 列出所有已登录用户的登录名与用户数量
-r, --runlevel 显示当前的运行级别
-s, --short 只显示名称、线路和时间(默认)
-T, -w, --mesg 用+,- 或 ? 标注用户消息状态
-u, --users 列出已登录的用户
--message 等于-T
--writable 等于-T
--help 显示此帮助信息并退出
--version 显示版本信息并退出
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
04. 参考示例
4.1 显示当前已登录的用户信息
[deng@itcast ~]$ who
deng :0 2019-07-17 08:57 (:0)
deng pts/0 2019-07-29 19:23 (:0)
deng pts/1 2019-08-02 20:11 (192.168.12.194)
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
第一列:显示用户名称
第二列:显示用户连接方式。tty表示用户直连主机,pts表示远程登录
第三列:显示用户登录日期
第四列:显示用户登录时间
第五列:显示用户登录的IP地址。
4.2 显示目前登入系统的用户详细信息
[deng@itcast ~]$ who -a
系统引导 2019-07-17 08:54
运行级别 5 2019-07-17 08:55
deng ? :0 2019-07-17 08:57 ? 2111 (:0)
deng + pts/0 2019-07-29 19:23 00:13 89907 (:0)
deng + pts/1 2019-08-02 20:11 . 61902 (192.168.12.194)
pts/2 2019-08-01 18:32 34901 id=ts/2 终端=0 退出=0
pts/3 2019-08-01 21:26 39431 id=ts/3 终端=0 退出=0
pts/1 2019-07-23 19:54 0 id=/1 终端=0 退出=0
pts/4 2019-07-24 18:48 34611 id=ts/4 终端=0 退出=0
pts/5 2019-07-19 19:58 62559 id=ts/5 终端=0 退出=0
pts/6 2019-07-19 16:16 62559 id=ts/6 终端=0 退出=0
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
4.3 列出所有已登录用户的登录名与用户数量
[deng@itcast ~]$ who -q
deng deng deng
# 用户数=3
[deng@itcast ~]$
- 1
- 2
- 3
- 4
4.4 上次系统启动时间
[deng@itcast ~]$ who -b
系统引导 2019-07-17 08:54
[deng@itcast ~]$
- 1
- 2
- 3
4.5 显示已死的进程
[deng@itcast ~]$ who -d
pts/2 2019-08-01 18:32 34901 id=ts/2 终端=0 退出=0
pts/3 2019-08-01 21:26 39431 id=ts/3 终端=0 退出=0
pts/1 2019-07-23 19:54 0 id=/1 终端=0 退出=0
pts/4 2019-07-24 18:48 34611 id=ts/4 终端=0 退出=0
pts/5 2019-07-19 19:58 62559 id=ts/5 终端=0 退出=0
pts/6 2019-07-19 16:16 62559 id=ts/6 终端=0 退出=0
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.6 输出头部的标题列
[deng@itcast ~]$ who -H
名称 线路 时间 备注
deng :0 2019-07-17 08:57 (:0)
deng pts/0 2019-07-29 19:23 (:0)
deng pts/1 2019-08-02 20:11 (192.168.12.194)
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.7 显示系统登录进程
[deng@itcast ~]$ who -l
- 1
4.8 只面对和标准输入有直接交互的主机和用户
[deng@itcast ~]$ who -m
deng pts/1 2019-08-02 20:11 (192.168.12.194)
[deng@itcast ~]$
- 1
- 2
- 3
4.9 显示当前的运行级别
[deng@itcast ~]$ who -r
运行级别 5 2019-07-17 08:55
[deng@itcast ~]$
- 1
- 2
- 3
4.10 只显示名称、线路和时间(默认)
[deng@itcast ~]$ who -s
deng :0 2019-07-17 08:57 (:0)
deng pts/0 2019-07-29 19:23 (:0)
deng pts/1 2019-08-02 20:11 (192.168.12.194)
deng pts/2 2019-08-02 20:30 (192.168.12.194)
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4.12 列出已登录的用户
[deng@itcast ~]$ who -u
deng :0 2019-07-17 08:57 ? 2111 (:0)
deng pts/0 2019-07-29 19:23 00:21 89907 (:0)
deng pts/1 2019-08-02 20:11 . 61902 (192.168.12.194)
deng pts/2 2019-08-02 20:30 . 61902 (192.168.12.194)
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.13 用+,- 或 ? 标注用户消息状态
[deng@itcast ~]$ who -T
deng ? :0 2019-07-17 08:57 (:0)
deng + pts/0 2019-07-29 19:23 (:0)
deng + pts/1 2019-08-02 20:11 (192.168.12.194)
deng + pts/2 2019-08-02 20:30 (192.168.12.194)
- 1
- 2
- 3
- 4
- 5
或者
[deng@itcast ~]$ who -w
deng ? :0 2019-07-17 08:57 (:0)
deng + pts/0 2019-07-29 19:23 (:0)
deng + pts/1 2019-08-02 20:11 (192.168.12.194)
deng + pts/2 2019-08-02 20:30 (192.168.12.194)
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
+:允许写信息;
-:不允许写信息;
?:不能找到终端设备。
4.14 显示由 init 进程衍生的活动进程
[deng@itcast ~]$ who -p
- 1
4.15 列出所有已登录用户的登录名与用户数量,并且显示头部的标题列
[deng@itcast ~]$ who -aH
名称 线路 时间 空闲 进程号 备注 退出
系统引导 2019-07-17 08:54
运行级别 5 2019-07-17 08:55
deng ? :0 2019-07-17 08:57 ? 2111 (:0)
deng + pts/0 2019-07-29 19:23 00:30 89907 (:0)
deng + pts/1 2019-08-02 20:11 . 61902 (192.168.12.194)
deng + pts/2 2019-08-02 20:30 00:08 61902 (192.168.12.194)
pts/3 2019-08-01 21:26 39431 id=ts/3 终端=0 退出=0
pts/1 2019-07-23 19:54 0 id=/1 终端=0 退出=0
pts/4 2019-07-24 18:48 34611 id=ts/4 终端=0 退出=0
pts/5 2019-07-19 19:58 62559 id=ts/5 终端=0 退出=0
pts/6 2019-07-19 16:16 62559 id=ts/6 终端=0 退出=0
[deng@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
05. 附录
信号量(Semaphore
)是一种实现任务间通信的机制,可以实现任务间同步或共享资源的互斥访问。一个信号量的数据结构中,通常有一个计数值,用于对有效资源数的计数,表示剩下的可被使用的共享资源数。以同步为目的的信号量和以互斥为目的的信号量在使用上存在差异。本文通过分析鸿蒙轻内核信号量模块的源码,掌握信号量使用上的差异。本文中所涉及的源码,以OpenHarmony LiteOS-M
内核为例,均可以在开源站点https://gitee.com/openharmony/kernel_liteos_m 获取。
接下来,我们看下信号量的结构体,信号量初始化,信号量常用操作的源代码。
1、信号量结构体定义和常用宏定义
1.1 信号量结构体定义
在文件kernel\include\los_sem.h
定义的信号量控制块结构体为LosSemCB
,结构体源代码如下。信号量状态.semStat
取值OS_SEM_UNUSED
、OS_SEM_USED
,其他成员变量的注释见注释部分。
typedef struct {
UINT16 semStat; /**< 信号量状态 */
UINT16 semCount; /**< 可用的信号量数量 */
UINT16 maxSemCount; /**< 可用的信号量最大数量 */
UINT16 semID; /**< 信号量Id */
LOS_DL_LIST semList; /**< 阻塞在该信号量的任务链表 */
} LosSemCB;
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: