Unix 记忆留存 (一)
这是该系列第一篇。
前言
本篇博客是笔者在学习Unix课程时所积累的学习笔记。
希望对后来学习Unix的友友复习准备Unix的期末考试有帮助。
什么是UNIX
UNIX是一类操作系统。
狭义理解,UNIX是一个分时操作系统的核心,控制和分配计算机资源(软硬件),协调各应用进程的运行。
广义理解,UNIX除了其核心外,还包括一些基本的工具,如编辑器、编译器、文件操作工具、文字处理工具等。
更广义地理解,UNIX还包括用户自己开发的各种工具软件。
UNIX的历史
1965年,贝尔实验室参与由MIT和GE发起的一个计划:开发一个多用户、多任务、多层次(multi-user、multi-processor、multi-level)的操作系统MULTICS(MULTiplexed Information and Computing System)
1969年,MULTICS计划失败,贝尔实验室的工程师们退出该计划。 Ken Thompson将自己开发一款原本运行在MULTICS系统上游戏软件“Space Travel(星际之旅)”移植到GE-635的机器上(GECOS系统),但速度很慢,且GE-635的运行费用昂贵(75$/秒)
Ken Thompson决定为自己的游戏软件寻找一个替代的开发运行环境。正好有一台PDP-7(DEC公司生产)迷你计算机闲置。 Ken Thompson和Dennis Ritchie共同开发了一个简单的操作系统,仅支持两个用户,也只有两个用户(作者自己)。Brian Kernighan 参照MULTICS将这个简单的操作系统戏称为UNICS,后来人们取其谐音称UNIX。
1970年----UNIX元年。
良好的可移植性促使UNIX系统蔓延。1974年,Ken Thompson的母校U.C. Berkeley开始接触UNIX。
1977年,Bill Joy修改了部分Kernel,编写了vi、pascal编译器等,产生了1BSD(Berkeley Software Distribution)。
1978年,BSD UNIX与TCP/IP开始结合,成为最有影响力的UNIX系统。
1988年,为统一各UNIX系统编程接口,提供应用程序在各UNIX系统之间的可移植性。IEEE出台了POSIX(Portable Operating System Interface)标准,定义了UNIX系统必须提供的接口函数(在C语言头文件中定义)
系统时间
自1970年1月1日0时0分0秒以来国际标准时间所经历过的秒数累计值。
需要掌握Unix历史,这里考的比例还不低。
大事编年史
- 1965:MULTICS
- 1969:MULTICS失败,UNIX开始研发
- 1970:UNIX元年(作者Ken Thompson和Dennis Ritchie)
- 1973:C语言诞生,UNIX第一个正式版本:SYSTEM V(Dennis Ritchie)
- 1977:Vi,Pascal编辑器,1BSD UNIX(Bill Joy)
- 1978:BSD UNIX结合TCP/IP,成为最具影响力系统
- 1984:X Window诞生
- 1987:X Window最后一版(11版本)
- 1987:MINIX(Andrew S. Tanenbaum)
- 1988:POSIX标准
- 1991:Linux(Linus Torvalds)
- 1994:X Window X11
- 1994:单一UNIX规范SUS,产生XSI,规定遵循XSI的操作系统才是Unix(Open Group)
- 2004:Ubuntu Linux(Mark Shuttleworth)
Linux
Linux的由来
1987年,荷兰阿姆斯特丹Vrije大学Andrew S. Tanenbaum教授(MIT学士,Berkeley博士)为课堂教学编写了Minix系统。
1991年,年仅21岁的芬兰赫尔辛基大学的学生Linus Torvalds参考Minix开发了PC版的UNIX,命名为Linux。
Linux的特点
与UNIX兼容,遵从POSIX标准
自由,开源
性能高,安全性强
Linux的版本
核心版本 由Linus本人负责维护,版本号由三部分组成x.y.z,x是主版本号,y是次版本号,z是修订次数。次版本号为偶数表示稳定的版本,奇数表示测试版。
发行版 各公司推出的版本。如Red Hat,红旗Linux等等,有上百种。
Ubuntu Linux
创始人 Mark Shuttleworth,1973年生于南非,现居伦敦。2004年通过旗下的Canonical公司来资助Ubuntu Linux的开发
是目前增长势头最强劲的Linux发行版
操作系统
用户与计算机硬件之间的界面,它是控制、管理计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软件(或程序集合)。
X Window
历史
1984年,麻省理工学院(MIT)计算机科学研究室开始研究UNIX系统下的视窗(window)系统,他们从斯坦福(Stanford)大学得到了一套叫做W(Window的第一个字母)的实验性视窗系统,然后开始进一步开发。同年6月,发布新系统的第一个版本,取名X(W的下一个字母),连同版本号,称X1。由于X是一个视窗系统,所以又叫X Window
1985年1月,发布第六版X6,对外部公司开始授权
1985年9月,发布X9
1985年12月,发布X10
1987年9月15日,发布X11。此时X已取得明显成功,MIT退出。第11版成为最终版。
1994年5月16日,第六次发布X11,称X11R64
体系结构
- 采用客户-服务器模型
- X客户程序将显示请求发送给X服务程序,由X服务程序驱动硬件设备予以显示。
- X客户与X服务器之间的接口协议叫做X协议
X server
- 处理输出
- 接受X client的输出请求,驱动硬件显示
- 处理输入
- X 系统采用客户-服务器模型,带来如下优点:
- X server屏蔽了硬件特性,使得X client和X server之间的X协议是一个完全抽象的协议,具有很强的可移植性
- 将X协议构建在网络协议之上,X server和X client可以运行在不同的机器上,这带来了很大的灵活性。
当用户使用X协议登录远程计算机时,本地运行的是X server,远程计算机运行的应用程序是X client。
X 开发接口
- X Library
- 最底层的程序界面,主要功能是存取X protocol的服务
- 常见的有:Xlib、Motif、Qt
- X Toolkit
- X Library基础上的拓展,提供大量函数或组件。
- 种类很多,有Motif、OpenLook、Gimp、X foums、X Toolkit(Xt)等
指令
登录
who 显示系统中有哪些使用者正在上面
who am I/whoami 实测whoami有效 表示当前用户
write username 给Username发消息
man command 查看command的手册
w/wr 执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序 实测w有效。
logout logout指令让用户退出系统,其功能和login指令相互对应。
常用操作
行编辑器
1 | ed # 打开ed编辑器 |
这玩意其实挺不常用的 = =,现在可能更多的是vim和nvim等
但积累一下还是有必要的,因为假如不小心把系统玩坏了,就只能用这个编辑器来抢救系统了。
文件列表
1 | ls //普通列出当前目录所有文件 |
常用命令
cat filename 命令用于连接文件并打印到标准输出设备上。
more filename 类似于cat,但只不过是将内容分页显示
touch 参见Linux指令操作记录
mv 参见Linux指令操作记录
cp 参见Linux指令操作记录
rm 参见Linux指令操作记录
针对文本文件的命令
wc 利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为”-“,则wc指令会从标准输入设备读取数据。
gerp 参见Linux指令操作记录
sort 命令用于将文本文件内容加以排序。默认排序为按列第一个字符的ASCII
cmp 命令用于比较两个文件是否有差异。
当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为”-“,则cmp指令会从标准输入设备读取数据。
diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
diff和cmp的区别在于diff按行比较,cmp按字比较。
文件目录
1 | pwd 显示当前路径(目录) |
Shell
定位
Shell的版本
bsh, csh, ksh, bash,…
Shell命令提示符
root用户 #,普通用户$, %,…
内部命令和外部命令
shell自己完成的命令为内部命令,如cd等;调用某个程序来完成的命令为外部命令,如ed。
文件名缩写(模式)
1 | ls *.c //匹配任意以.c为后缀的文件 |
I/O重定向
1 | ls > tmp //将标准输出重定向到文件tmp中(清除原有文件中的数据) |
管道
1 | who | wc -l // 计算所有用户登录的终端数 |
进程
1 | who; whoami //多个命令同时运行 |
环境设置
1 | 设置shell内部变量值 |
文件系统
文件树
文件类型
目录文件:包含其它文件的文件。
常规文件:文本文件、二进制文件(程序、数据库等)。
设备文件:键盘、显示器、打印机、硬盘等。
一切都是文件,这个很重要!!!
1 | ls -l //查看文件类型 |
主目录和当前目录
主目录:用户登录时所在的位置。($cd)
当前目录:用户或程序当前的工作位置。
绝对和相对路径
绝对路径:从根目录出发到某个文件的搜索路径。如:/home/user1/myc/p1.c
相对路径:从当前目录出发到某个文件的搜索路径。如:myc/p1.c, ./bin/prog1, ../user2/file1
文件名
字母、数字、’_’、’.’ 在shell中具有特殊含义的符号避免使用,如&*\{}[]$?%等
文件权限
综述
$ ls –l a.out
结果: -rwxr-xr-x 1 user1 users 9319 2010-02-09 23:56 a.out
rwx:读、写、运行
9个权限位,每3个为一组,分别代表文件所有者、同组用户和其他用户的权限。
具体解释:
更改文件权限可以用chmod1
2
3chmod 777 a.out
chmod –w a.out
chmod +x ldir
下面两个好理解,我解释一下777:
事实上,Linux 系统为每种权限(r、w 和 x)分配了对应的数字:
权限 | 数字 |
---|---|
r | 4 |
w | 2 |
x | 1 |
所以,如果我们要合并这些权限,就需要做简单的加法了:将对应的数字相加。
假如我们要分配读、写权限,那么我们就要用 4+2,就等于 6。数字 6 表示具有读和写权限。
所以777就表示为文件所有者、同组用户和其他用户赋予全部rwx权限。
目录文件权限
x: 是否可以存取目录中的文件。
r: 是否可以对目录进行文件列表。可以存取已知的文件。
w:是否可以增加、删除目录中的文件。
i节点
1 | ls -il |
531049一列即为i节点。
文件的组成
文件名、i节点、文件内容。
i节点中记录文件权限、所有者、修改日期、长度、存放位置等等。
使用
1 | ln file1 file2 //给file1所对应的i节点增加一个文件名file2 |
设备文件
UNIX的精华思想之一就是在文件系统中处理外部设备,按普通文件来处理外设。1
2
3
4ls -l /dev //列出所有设备 用文件指令ls
echo hello! > /dev/pts/0 //结果是shell界面出现Hello! 和echo hello!一个作用
cat c/sig.c >/dev/pts/1 //我失败了,找不到/dev/pts/1
cp tmp /dev/pts/0 //tmp的文件显示在了shell界面
所以/dev/pts/0什么含义已经呼之欲出了。
只能说这个思路真的太好了。
文件编辑和流处理
ed行编辑器
简介
作者:Ken Thompson(就是Unix创始人之一)
优点:
(1)运行环境要求低,是UNIX系统最基本的编辑器。
(2)编辑命令功能强大,至今仍然使用。
(3)ed提供的正则表达式广泛使用。
(4)运行速度很快。
基本命令
之前已有介绍,这里为了保证完整性允许我再次介绍一次。
一般指令
- a 从当前行开始添加,实际上是在该行的下一行开始输入
- . 结束添加状态 //必须在行首输入
- w 存盘
- q 退出ed编辑器
- ! 临时进入shell 实测用法为!+ 指令
显示命令
- 显示命令p (在命令模式下输入)
- p 显示当前行。
- 5 将当前行改为第5行并显示当前行。
- m,np 显示m到n行
- .代表当前行,$代表最后一行
- 可使用相对行,如.,.+3p(代表1-3行) or $-5,$p(代表倒数5行)
举例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15文件内容:
123
1234
12345
123456
1234567
12345678
使用:
-5,$p
输出:
1234
12345
123456
1234567
12345678
查找
/模式/ 查找下一个匹配模式的行,遇到尾行则从首行开始
?模式? 查找上一个匹配模式的行,遇到首行则从尾行开始
// 重复查找下一个匹配模式的行,模式不变
??重复查找上一个匹配模式的行,模式不变
查找会改变当前所在的行,查找本身有返回值,返回的是行号。
利用返回值可以做一些事情:
1 | 1,/main/p //显示1到第一次出现main的行 |
插入删除撤销
1 | na //从n行后添加 |
替换
1 | s/old/new/ //把当前行中第一个old替换为new |
这里有一个助记符号:&
表示被替换的对象:1
21,$s/big/very &/g //把文件中的big都替换为very big
s/and/\&/ //把and改为&,因为&被\转义
ed正则表达式
- c 普通字符,与自己匹配,如a,b等。
- \c 取消字符c的特殊意义,如\&
- ^ 在模式起始位置时,代表行首。如^a表示行首为a
- $ 在模式结束位置时,代表行尾。
- . 匹配任意单个字符。
[…]
匹配[]
中任意单个字符,如[1ac]
,[a-z]
,[1-9]
[^…]
匹配不在…中的任意单个字符r*
,零个或多个重复的r,r为单个字符。如a*
,[ab]*
,.*
- & 仅用于替换命令s的右边,代表第一个模式 (这个参看前面的助记符 &)
一些例子:这里的正则表达式和一般意义上的正则还是几乎一样的。
参看:正则表达式1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16/^$/ //空行
/./ //非空行
/^/ //任意行
/thing/ //包含字符串thing的行
/^thing/ //以thing开始的行
/ //以thing结尾的行
/^thing$/ //内容为thing的行
/thing.$/ //以thing加任意符号结尾的行
/thing\.$/ //以thing.结尾的行
/\/thing\// //包含/thing/的行
/[tT]hing/ //包含thing或Thing的行
/thing[0-9]/ //包含thing+任意一个数字的行
/thing[^0-9]/ //包含thing+任意一个非数字的行
/thing[0-9][^0-9]/ //包含thing+任意一个数字+任意一个非数字的行
/thing1.*thing2/ //包含thing1+任意内容+thing2的行
/^thing1.*thing2$/ //以thing1开头,thing2结尾的行
全局命令
命令格式:m,ng/re/cmd,含义是从m行到n行中对于匹配re模式的行执行命令cmd. 如果作用范围是全文件(1,$),m、n可以省略。
举例:1
2
3
4
5
6g/…/p //显示所有包含…的行
g/…/d //删除所有包含…的行
g/…/s//rep1/ //对于包含…的行,将其中第一个…替换成rep1
g/…/s//rep1/g //把所有的…替换成rep1
g/…/s/pat/rep1/ //对于包含…的行,将其中第一个pat替换成rep1
v/^$/p //打印所有非空行
移动,复制
命令格式:
m,nmd m到n行移到d行之后。
m,ntd m到n行拷贝到d行之后。
例子:1
g/^/m0 //我的理解是把非空行移到0行之后,但是由于它先移动第一行到第0行,然后再移动第二行至第0行后,导致位置颠倒过来了。
sed——流编辑器
简介
直接从ed发展而来,用于处理输出流,常用于管道中。
命令的一般形式 sed -[opt] ‘ed command1;ed command2’ file.
sed从输入文件中依次读取每一行,按指定的ed命令处理,将结果送至标准输出。
例子:1
2
3
4
5
6
7
8sed 's/UNIX/Linux/g' file //将file中的UNIX替换成Linux显示在屏幕上,但不改变file本身。
who | sed 's/ .*//' //显示当前登录用户,只显示用户名。
whoami |sed 's/ .*//' //获取我的登录名.
sed '10q' file //显示file文件的前10行
sed '/pattern/d' file //不显示包含pattern的行。
sed -n '/pattern/p' file //仅显示包含pattern的行。sed默认显示每一行,-n选项关闭自动显示功能。
sed -n ‘/pattern/p’ file //具有过滤功能,与grep pattern file功能相同。
ls -l | sed -n '/^d/p' //长格式列出当前目录下的子目录
由于sed处理的是输入流,一旦读入一行,前面的行就过去了,无法再次取回,因此sed不具备行运算的能力。
这里比较简略,只有简介,如果想系统学习推荐OSome平台(逃
过滤器
grep
1 | grep pattern file //pattern: ed pattern |
sort
1 | ls | sort //默认排序,上面已经提到了,就是第一列Ascii |
tail、head
1 | tail file //显示file的最后10行,实测确实是这样。 |
模式匹配与处理语言awk
一般使用
1 | awk 'program' filename |
program的形式
pattern1 {action1} pattern2{action2}…… ,模式之间为“或”的关系
pattern: ,ed的正则表达式,逻辑表达式
action: ,如print、printf等
缺省
1 | awk '/pattern/' file //显示匹配模式的每一行,功能同grep |
同样是一些例子:1
2
3awk '//' sig.c //输出sig.c全部内容
awk '{print}' sig.c //输出sig.c全部内容
awk '//{print}/main/{print "----------------------------"}'sig.c //输出全部内容的同时在main这一行下添加“-----”
记录、字段
每一行为一条记录,NR为记录数
每一个非空的字符串为一个字段,使用$1、$2、…标记,$0为整行,NF为字段数
一些例子:1
2
3awk '{print NR, $0}' file //显示file的每一行,并在行首加上行号
ls -l | awk '/^d/{print}' //长格式列出当前目录下的子目录
ls -l | awk '/^d/{print $8}' //列出当前目录下的子目录
打印(显示)
1 | ls -l | awk '{print NR, ": " $1, $8}' //打印行号:第一列,第八列 |
有点像C语言的风格。
pattern
一般
字段运算、模式表达式、逻辑表达式1
2
3
4
5ls -l | awk '$5~/.....*/' //列出长度超过999字节的文件
ls -l | awk '$5 !~ /.....*/' //列出长度小于等于999字节的文件
ls -l | awk '$5=="4096"' //列出长度为4096字节的文件
ls -l | awk 'length($5)>3' //列出长度超过999字节的文件
ls -l | awk '!(length($5)>3) ' //列出长度小于等于999字节的文件
第一个允许我好好解释一下,ls -l输出如下:
$5,即对应第五列,表示字节数,‘~’表示正则表达式匹配运算。后面的表达式就是要求至少有4位。
而只有1000才是4位,所以这里实现了列出长度超过999字节的文件的效果。
后面的就比较直观啦~
特殊
awk ‘BEGIN{初始化动作}’,表示在开始处理文件之前,要做的事情。
awk ‘END{结束动作}’,表示文件处理结束后,要做的事情。
变量和运算
这里举个例子,打印某个文件的行数、单词数和字符数:1
2
3
4
5
6
7
8awk '{
nw += NF;
nc +=length($0)+1;
}
END{
print NR, nw,nc;
}' sig.c
这段程序的功能与wc命令的功能完全一样。
awk在执行时,遇到自己不认识的东西,比如nw,nc就会将其隐式声明为变量。所以nw就记录了总字段数,nc记录了总字符数。
流程控制
举例
笔者用例子来解释,寻找文件中相同的相邻单词:1
2
3
4
5
6
7
8awk 'NF>0{
if ($1==lastword) //lastword为上一行最后一个单词
printf("double %s, line %d:\n%s\n", $1,NR,$0); //特判第一个和上一行最后一个单词是否相等
for (i=2; i<=NF; i++) //循环判断本行后一个和前一个是否相等
if ($i==$(i-1)) //判断是否相等
printf("double %s, line %d:\n%s\n", $i,NR,$0); //输出相等的单词,行数,本行全部内容
lastword=$NF; //记录本行最后一个单词
} ' tmp //文件名为tmp
语法
while语句:1
2
3
4
5while (condition){
statement1
statement2
…
}
break:跳出循环
continue:下一个循环
next:下一条记录,回到awk程序开始
exit:跳转至END模式或结束
内部变量
FILENAME 当前输入文件名
RS 输入记录的分割符(默认为换行符)
FS 输入字段的分隔符(默认为空格、制表符)
NF 当前记录的字段数
NR 当前记录数
OFS 输出字段的分隔符(默认为空格)
ORS 输出记录的分隔符(默认为换行)
内部函数
cos(expr) 求余弦
exp(expr) 求自然指数
index(s1,s2) 是否字符串s2位于s1中
int(expr) 取整
length(s) 求字符串长度
log(expr) 求自然对数
sin(expr) 求正玄
split(s, a, c) 按分隔符c将s放入a[1],a[2],…中
substr(s,m,n) 求s的子串,从第m个字符开始,共n个字符。
数组
1 | awk '{line[NR] = $0} |
约定
流处理程序的约定,当给定文件名时,数据从文件中读取,否则从标准输入读取。这样便于管道和重定向的使用。
具体学习
vi编辑器
由BSD UNIX的作者Bill Joy编写
分两种工作模式:命令模式、编辑模式。a、i、o、O命令进入编辑模式,ESC退出编辑模式。
在命令模式下,可使用所有的ed命令。
系统管理
特殊管理
超级用户
此为Ubuntu特有的管理:
每个UNIX系统都有一个默认的用户root,该用户为管理员,具有不受限制的权限,通常称为“超级用户”。在进行操作系统配置时使用该用户登录。为了安全,一般情况下,不使用该用户登录。
- 为了安全,Ubuntu Linux默认禁用root用户。使用sudo命令可以提升权限,只是有些麻烦。
- 当然,也可以使用su命令。临时转换为超级用户身份,此时shell提示符会给出超级用户的提升符#。1.将其中一行“AllowRoot=false”改为“AllowRoot=true”,就可以成功打开Root用户。
1
sudo vi /etc/gdm/gdm.conf //首先提升权限,再利用vi打开gdm.conf
当然,如果是具有图形界面的Ubuntu Linux,可以通过主菜单“系统”->“系统管理”->“登录窗口”进入“登录窗口首选项”,在“安全”选项页中选中“允许本地系统管理员登录”。重启系统即可完成更改。1
sudo passwd root //更改root用户口令
软件源
有些时候,软件源在国外,下载速度简直逆天,我们需要更改国内的软件源来加快速度。 - /etc/apt/sources.list是一个文本文件,其中记录了用于系统升级的软件源地址。由于用户所在的网络环境的不同,这些地址可能不是最优的。
- 使用搜索引擎(如百度)搜索“Ubuntu 教育网 软件源”会搜索出很多合适的地址。
- vi /etc/apt/sources.list 修改软件源地址
- apt-get update 软件源生效,下载更新列表信息
网络配置
IP地址
简介
计算机要实现网络通信,就必须要有一个用于快速定位的网络地址。IP地址就是计算机在网络中的唯一身份ID,与现实世界中快递的配送需要有具体的住宅地址是一个道理。
ip地址以圆点分隔号的四个十进制数字表示,每个数字从0到255,如某一台主机的ip地址为:128.20.4.1
组成
IP地址 = 网络地址 + 主机地址
子网掩码
子网掩码又叫网络掩码、地址掩码、子网络遮罩,是一个 4 * 8bit(1字节)由 0/1 组成的数字串。
它的作用是屏蔽(遮住)IP地址的一部分以划分成网络地址和主机地址两部分,并说明该IP地址是在局域网上,还是在远程网上。
通过子网掩码,可以把网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。(了解)
子网掩码不能单独存在,它必须结合IP地址一起使用。(了解)
默认网关
连接两个不同的网络的设备都可以叫网关设备;网关的作用就是实现两个网络之间进行通讯与控制。
网关设备可以是 交互机(三层及以上才能跨网络)、路由器、启用了路由协议的服务器、代理服务器、防火墙等
网关地址就是网关设备的IP地址。
作用
来一张电子包浆的图:
要实现这两个网络之间的通信,则必须通过网关。
如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络A向网络B转发数据包的过程。
修改这三者
1 | vi /etc/network/interfaces |
打开后文本如下:
auto eth0
iface eth0 inet static # or dhcp
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
第一行的意思是:eth0接口会在系统启动时被自动配置;
第二行的意思是:eth0接口具有一个静态的(static)IP配置;
第三行到第六行分别设置设置eth0接口的ip、网络号、掩码、广播地址和网关;
域名服务器DNS
我们访问一个网站的时候,往往使用的是域名(相对IP来说更加语义清晰、更加容易记忆,例如 www.baidu.com)。
域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
然而计算机之间的通信网络通信是通过IP进行的, 因此需要将域名解析为对应的IP,DNS就是进行域名解析的服务器。
DNS 维护着 域名(domain name)和IP地址 (IP address)的对照表表,以解析消息的域名。
查询
如图展示了DNS的查询过程:
修改本地
/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。
该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。
1 | vi /etc/resolv.conf //使用vi打开resolv.conf文件 |
有如下内容:
Generated by NetworkManager
nameserver xxx.xxx.xxx.xxx //add it
nameserver xxx.xxx.xxx.xxx
添加完毕后,可以使用:1
/etc/init.d/networking restart
来重启网络,使得配置生效。
可使用ifconfig,route等命令查看配置结果。
网络应用
创建WebServer
1 | apt-get install apache2 |
使用:http://xxx.xxx.xxx.xxx(Ubuntu Host IP Address) 来访问
共享文件
1 | apt-get install samba |
建一个共享文件夹,设权限为777,在文件管理器中使用鼠标右键共享之。
用户管理
概述
UNIX是多用户类型的操作系统,其多用户特征通过多个用户帐号来体现。每个用户可以获得不同的权限和资源,完成不同类型的工作
用户账号管理
- 命令 useradd、adduser、userdel、usermod、passwd
- 使用图形界面
- 增、删、改、查。
- 修改用户密码、权限。
1.在root权限下,useradd只是创建了一个用户名,如 (useradd +用户名 ),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的,为了避免这样的情况出现,可以用 (useradd -m +用户名)的方式创建,它会在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。
2.可以直接利用adduser创建新用户(adduser +用户名)这样在/home目录下会自动创建同名文件夹
组管理
- 命令 groupadd、addgroup、groupdel、groupmod、gpasswd
- 使用图形界面
- 增、删、改、查。
- 修改组权限、成员。
磁盘管理
概述
磁盘包括软盘、光盘、硬盘。设备文件分别为:/dev/fd[01](标准输入、输出)、/dev/hd[abcd](IDE硬盘)、/dev/sd[abcd](SCSI硬盘)、/dev/cdrom(光盘)
硬盘必须分区和格式化才可使用。硬盘分区后,每个分区对应的设备名为“硬盘设备名”[1256],例如/dev/sda1代表第一块SCSI硬盘的第一个分区。
硬盘分区
一块硬盘最多可分4个分区,需要分更多的区时,可分一个扩展分区,然后将扩展分区再分为若干逻辑分区。
管理硬盘分区的命令为fdisk。
例如:1
fdisk /dev/sdb //对第二块SCSI硬盘进行分区管理
格式化分区(创建文件系统)
1 | mkfs 分区名 //分区名:如/dev/sdb1 |
进程管理
进程:简单地说,就是一个正在运行的程序。(很不精确的说法)
进程包括系统核心进程、系统服务进程和普通用户进程
进程可强制结束
查看进程
1 | ps //查看当前终端启动的进程 |
结束进程
kill命令语法 kill [-signal] pid
用来给一个进程发信号,但常用的功能是结束某个进程(发一个可以结束某个进程的信号)。
kill -l //列出可用的信号选项1
2
3kill -2 pid
kill -14 pid
kill -9 pid