上一篇简单介绍了Linux系统编程的一些概念知识,从本篇文章开始,从解释系统命令的功能入手,由浅入深,逐步讲解Linux系统编程。
建议学习者最好具有一定的C语言基础,了解数组、结构体、指针和链表的概念。
代码实验环境
操作系统:Ubuntu 18.04 LTS
编译器gcc版本:gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
学习目标
通过分析who指令,来学习Linux的读文件操作。
who指令介绍
Linux为多用户操作系统,有时候需要查看系统是否繁忙,某人是否正在使用系统等,可以使用who指令来查看Linux系统中活动用户的情况。
命令也是程序。Linux系统中,几乎所有的命令都是人为编写的程序。在Linux系统的中增加新的命令很简单,把可执行文件放到以下任意一个目录即可:/bin、/usr/bin、/usr/local/bin,这些目录存放着很多系统命令。
如果想知道谁在使用系统,输入who指令,输出如下:
$ who
user :0 2021-10-31 21:42 (:0)
test pts/1 2021-10-31 23:19 (192.168.0.104)
每一行代表一个已经登陆的用户,第一列是用户名,第二列是终端名,第三列是登陆时间,第四列是用户的登陆地址。
who指令详解
我们可以通过联机帮助指令man,来查看who的使用方法和详细解释。查看who的帮助可输入:
$ man who
Linux系统的联机帮助内容:
名字(NAME):命令的名字以及对这个命令的简短说明。
概要(SYNOPSIS):给出命令的用法说明,包括命令格式、参数和选项列表。方括号([OPTION])为可选项。选项为短线 - 加上abdHlmpqrstTu这些字母的任意组合,命令末尾还可以有一个文件参数或者给定两个参数。
描述(DESCRIPTION):关于指令的详细阐述。根据指令和平台的不同,描述的内容也不同。
选项(OPTIONS):给出命令行中每一个选项的说明。
作者(AUTHOR):命令的作者。
参阅(SEE ALSO):包含这个命令相关的其他主题。
who指令如何工作
向下翻阅 man who
指令看到的帮助信息,有以下信息
圈出的内容说明,如果who命令没有指定文件,通常用 /var/run/utmp
和/var/log/wtmp
作为选项文件。
/var/run/utmp
文件保存当前登陆系统的用户信息
/var/log/utmp
文件保存登陆过本系统的用户信息
who通过读取文件/var/run/utmp
获得当前系统登陆