1.登录
1.1 登录名
系统在其口令文件,通常是在/etc/passwd文件中查看登录名。口令文件中的登录项由7个以冒号分隔 的字段组成:登录名、加密口令、数字用户ID(224),数字组ID(20)、注释字段、起始目录(/home/stevens),以及shell程序(/bin/ksh)。
1.2 shell
shell是一个命令行解释器,其读取用户输入,然后执行命令,用户通常使用终端,有时通过文件(shell脚本)向shell输入。
常用的shell有:
- Bourne shell, /bin/sh
- C shell, /bin/csh
- KornShell, /bin/ksh
2.文件和目录
2.1 文件系统
UNIX文件系统是目录和文件的一种层次安排,目录的起点称为根 (root),其名字是一个
字符/。
2.2 文件名
不能出现在文件名中的字符只有两个,斜线(/)和空操作符(null);
当创建一个新目录时,自动创建了两个文件名:.(点)和…(点点)。点引用当前目录,点-点则引用父目录。在最高层次的根目录中,点-点与点相同,都表示当前目录。
某些UNIX文件系统限制文件名的最大长度是14个字符,BSD版本则将这种限制扩展为255个字符。
2.3 路径名
- 以斜线开头的路径名称成为绝对路径(absolute pathname);
- 否则称为相对路径(relative pathname);
2.4 工作目录
每个进程都有一个工作目录,所有的相对路径都从该工作目录为起点。可以使用chdir函数更改其工作目录。
2.5 起始目录
登录时,工作目录设置为起始目录,该起始目录从口令文件中的登录项中获取。
3 输入和输出
3.1 文件描述符
文件描述符是一个小的非负整数,内核用于标识一个特定进程正在存访的文件。当内核打开或创建一个文件时,返回一个文件描述符。当读、写文件时,就可以使用它。
3.2 标准输入、标准输出和标准出错
按惯例,每运行一个新程序时,所有的shell都为其打开三个文件描述符:标准输入、标准输出、标准出错。如果像简单命令ls那样没有做特殊的处理,则这三个都连着终端。
4 程序和进程
4.1 进程和进程ID
程序的执行实例被称为进程(process).每个UNIX进程都有一个唯一的数字标识,称为进程ID。进程ID总是一个非负数。
5 用户标识
5.1 用户ID
口令登录项中的用户ID是个数值,它向系统标识各个不同的用户。用户ID为0的用户为根(root)或超级用户。在口令文件中,通常有一个登录项,其登录名为root,我们称这种用户的特权为超级用户特权。
5.2 组ID
组文件将组名映射为数字组ID,它通常是/etc/group
习题
1. 若日历时间存放在带符号的32位整形数中,那么到哪一年它将溢出?
答:首先起始时间T=1970年1月1日 00:00:00,然后带符号的32位所存储的时间t=2^31/(606024*365)=68.0962598年,所以溢出的时间T+t=1970+68=2038年。其溢出的解决办法就是将其定义为time_t 64位整形。
2. 若进程时间存放在带符号的32位的整形数中, 并且每秒100滴答,那么经过多少天后该时间值会溢出?
答:t=2^31/(246060*100)=248.551348天
本文详细介绍了UNIX系统的基础概念,包括登录过程、shell类型、文件系统结构、输入输出管理、进程与用户标识等核心内容,为理解UNIX操作系统提供全面视角。
593





