嵌入式入门学习系列笔记索引
目录
一、基本系统维护命令
1.man
使用man命令可以找到特定的联机帮助页,并提供简短的命令说明。一般语法格式为
man commandname联机帮助页提供了指定命令commandname的相关信息。通常联机帮助信息包括以下几个部分:
NAME:命令的名称
SYNOPSIS:命令的语法格式
DESCRIPTION:命令的一般描述以及用途
OPTIONS:描述命令所有的参数或选项
SEE ALSO:列出联机帮助页中与该命令直接相关或功 能相近的其他命令
BUGS:解释命令或其输出中存在的任何已知的问题或缺陷
EXAMPLES:普通的用法示例
AUTHORS:联机帮助页以及命令的作者
无论帮助有多长,都遵循这个格式显示。在页面很多的情况下使用PageUp和PageDown键翻页。最后,使用“:q”退出帮助页面。
2.passwd
出于系统安全考虑,Linux系统中的每一个帐号都必须同时具备用户名和密码。
可以使用passwd命令,为已有账户重新修改用户口令。需要说明的是,超级用户root可以修改所有其他用户的口令,而普通用户只能修改自己的用户口令,如果确要修改超级用户或其他用户口令的话,需要具有超级用户的权限。
passwd命令的一般语法格式为:
passwd username单独使用passwd命令,意为修改当前用户自己的口令。下面命令实例用于修改用户自己的口令。
linux@ubuntu:~$ passwd
Changing password for linux #修改当前用户口令
(current) UNIX password: #用户输入旧口令
Enter new UNIX password: #用户输入新口令
Retype new UNIX password: #确认新口令
passwd:已成功更新密码
3.su
su命令用于临时改变用户身份,具有其他用户的权限。普通用户可以使用su命令临时具有超级用户的权限;超级用户也可以使用普通用户身份完成一些操作。
当需要放弃当前用户身份,可以使用exit命令切换回来。
su命令的一般语法格式为:
su [ -c | -m | - ] username选项“-c”表示执行一个命令后就结束;-m表示仍保留环境变量不变;-表示转换用户身份时,同时使用该用户的环境。单独使用su命令,默认为要转换为超级用户root。
4.echo
echo命令用于在标准输出——显示器上显示一段文字,一般起到提示作用。echo命令的一般语法格式为:
echo [-n] information选项-n表示输出文字后不换行。提示信息字符串可以加引号,也可以不加。
linux@ubuntu:~$ echo "Hello everyone." #输入信息字符串使用引号
Hello everyone.
linux@ubuntu:~$ echo ‘$PATH’ #严格的原样输出
$PATH.
linux@ubuntu:~$ echo Hello everyone. #输入信息字符串不使用引号,字符串之间用一个空格隔开
Hello everyone.
5.date
date命令用于显示和设置系统日期和时间。date命令的一般语法格式为:
date [-d | -s | -u] datestr选项-s表示按照datestr日期显示格式设置日期;
单独使用date命令,用于显示系统时钟中当前日期。时间的格式为:“hh:mm:ss”,日期格式为:“mm/dd/yy”。
linux@ubuntu:~$ date #查看当前时间
2007年 09月 16日 星期日 18:44:45 CST
linux@ubuntu:~$ sudo date -s 1:19:18 #设置新时间,需要系统管理员权限
Password:
2007年 09月 16日 星期日 01:19:18 CST
6.clear
clear命令用于清除屏幕上的信息。清屏后,shell命令提示符移动到屏幕左上角。
由于shell命令是逐行执行,执行结果也将随即显示。因此,用户在使用命令终端窗口时,终端窗口会很快就会被字符占满。
clear可以帮助清理一下窗口中杂乱的字符显示。
7.df
df命令用于查看磁盘空间的使用情况。查看磁盘空间是用户应当经常做的事情,因为谁也不希望看到根或/var分区在不经意间填满,以便及时清理。
df命令的一般格式为:
df [-a | -T | -h | -k ] Filesystem其中,参数Filesystem表示物理文件系统。各选项的含义如表所示。
| 选项 | 含义 |
| -a | 显示所有物理文件系统的使用情况,包括虚拟文件系统,如/proc、/sys等 |
| -T | 显示物理文件系统的文件格式类型 |
| -h | 物理文件系统大小按兆字节为单位显示 |
| -k | 物理文件系统大小按千字节为单位显示 |
从以下命令的执行结果可以看到,这台计算机只有一块硬盘(/dev/sda1),文件格式类型为Ext3,已经使用36%的存储空间。同时,可以发现计算机上还安装了CD-ROM(/dev/hdc)、USB存储器(/dev/sdb1)。其他分区均为专用的虚拟文件系统。
linux@ubuntu:~$ df –T
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 ext3 7850996 2664868 4787316 36% /
varrun tmpfs 255960 104 255856 1% /var/run
varlock tmpfs 255960 0 255960 0% /var/lock
procbususb usbfs 255960 84 255876 1% /proc/bus/usb
udev tmpfs 255960 84 255876 1% /dev
devshm tmpfs 255960 0 255960 0% /dev/shm
lrm tmpfs 255960 33788 222172 14% /lib/modules/2.6.20-16-generic/volatile
/dev/hdc iso9660 712946 712946 0 100% /media/cdrom0
/dev/sdb1 vfat 249582 211602 37980 85% /media/disk
8.du
列出目录和文件所使用的磁盘块数,每块占512个字节。
常用参数
- -a :仅列出空闲的文件数
- -h :列出磁盘的使用情况(KB)
- -s :列出总的空闲空间(KB)

二、Linux用户管理
用户的属性
- 用户名
- 口令
- 用户ID(UID)
- 用户主目录(HOME)
- 用户shell
2.1.用户管理相关文件
2.1.1./etc/passwd文件
/etc/passwd文件是系统能够识别的用户清单。
用户登陆时,系统查询这个文件,确定用户的UID并验证用户口令:
- 登陆名
- 经过加密的口令
- UID
- 默认的GID(用户属ID号)
- 个人信息
- 主目录
- 登录shell

每一项由冒号“ :”隔开。
2.1.2./etc/group文件
包含了UNIX组的名称和每个组中成员列表,每一行代表一个组,包括4个字段:
- 组名
- 加密的口令
- GID号
- 成员列表

2.1.3.adduser配置文件
adduser用法:
adduser newuser #添加用户名为newuser的新用户配置完信息后,可以在/home/目录下看到相应的文件夹生成,也可以在/etc/passwd文件中查看相应的信息。
adduser命令添加新用户时,会引导你输入用户相关的信息,完成新用户的创建。
adduser配置文件:/etc/adduser.conf
- FIRST_UID=1000(起始UID)
- LAST_UID=29999(末尾UID)
- USERS_GID=100(用户属ID号)
- DHOME=/home(默认主目录)
- DSHELL=/bin/bash(默认登录shell)
- SKEL=/etc/skel
2.1.4.SKEL模板
此文件是一个用户创建的时候一个模板,
如果该/etc/skel文件夹有文件的话,使用useradd命令则会将/etc/skel/下的文件拷贝到新建用户的/home/用户名文件夹下,常用的文件:
- .bash_profile
- .bashrc
- .bash_logout
- .dircolors
- .inputrc
- .vimrc
2.2.用户管理相关命令
2.2.1.Linux添加新用户
手动添加新用户的过程
系统
- 编辑passwd和shadow文件,定义用户账号
- 设置一个初始口令
- 创建用户主目录,用chown和chmod命令改变主目录的属主和属性
为用户所进行的步骤
- 将默认的启动文件复制到用户主目录中
- 设置用户的邮件主目录并建立邮件别名
useradd命令添加新用户过程
例:
useradd lamp不要小看这条简单的命令,它会完成以下几项操作:
- 在 /etc/passwd 文件中创建一行与 lamp 用户相关的数据
- 在 /etc/shadow 文件中新增了一行与 lamp 用户密码相关的数据
- 在 /etc/group 文件中创建一行与用户名一模一样的群组
- 在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息
- 默认创建用户的主目录和邮箱
- 将 /etc/skel 目录中的配置文件复制到新用户的主目录中
当然,如果你能彻底掌握 useradd 命令创建用户的整个过程,完全可以手动创建用户。
adduser命令添加新用户时,会引导你输入用户相关的信息,完成新用户的创建。
2.2.2.设置初始口令- passwd
使用passwd命令可以修改用户口令
root用户可以修改任何用户的口令:
#语法
passwd [-k] [-l] [u] [-f] [-d] [-S] username
#使用方法
passwd username2.2.3.修改用户属性- usermod
usermod选项:
- -c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
- -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
- -e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD",即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
- -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
- -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
- -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
- -l 用户名:修改用户名称;
- -L:临时锁定用户(Lock);
- -U:解锁用户(Unlock),和 -L 对应;
- -s shell:修改用户的登录 Shell,默认是 /bin/bash。
用法/语法:
usermod [-u uid [-o]] [-g group] [-G gropup,…] [-d home [-m]] [-s shell] [-c comment] [-l new_name] [-f inactive] [-e expire] [-p passwd] [-L|-U] name
其中[-u uid [-o]]指的是这个选项要以-u开头,以-o结尾,中间存放uid。
用户oldname改名为newname,注意要同时更改家目录:
usermod –d /home/newname –m –l newname oldname
2.2.4.删除用户- deluser
#语法
deluser <username>
#使用方法
deluser --remove -home user1 #删除用户user1的同时删除用户的工作目录2.2.5.添加用户组- addgroup
#语法
addgroup <groupname>
#使用方法
addgroup groupname12.2.6.删除用户组- delgroup
#语法
delgroup <groupname>
#使用方法
delgroup groupname2三、Linux进程管理
3.1.进程(process)
程序的一次执行就是一个进程。
程序的两次执行就产生了p1和p2两个进程。

进程的状态标志:
D: 不可中断的静止
R: 正在执行中
S: 阻塞状态
T: 暂停执行
Z: 不存在但暂时无法消除
<: 高优先级的进程
N: 低优先级的进程
L: 有内存分页分配并锁在内存中
3.2.使用命令查看进程
3.2.1.ps命令
显示进程的动态。
#语法
ps [options]
#常见的用法
ps -elf
ps -aux
3.2.2.top命令
监视进程,通常会全屏显示,而且会随着进程状态的变化不断更新
整个系统的信息也会显示,为查找问题提供了便利
可以显示系统总共有多少CPU和内存资源以及负载平衡等信息。

3.2.3.pstree命令
将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以init这个基本进程为根,如果有指定使用者id, 则树状图会只显示该使用者所拥有的进程。
参数:
-a 显示该进程的完整指令及参数, 如果是被记忆体置换出去的进程则会加上括号
-c 如果有重覆的进程名, 则分开列出

3.3.使用kill命令终止进程
kill [-signal] PIDkill命令向指定的进程发出一个信号signal,
在默认情况下,kill 命令向指定进程发出信号15,正常情下,将杀死那些不捕捉或不忽略这个信号的进程
四、Linux文件系统
4.1.文件和目录相关的命令
pwd 打印当前工作路径
ls 显示指定工作目录下之内容
cd 切换当前工作目录
touch 修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
cp 复制文件或目录
mv 为文件或目录改名、或将文件或目录移入其它位置
rm 删除一个文件或者目录
cat 连接文件并打印到标准输出设备上
head 查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容
tail 查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件
mkdir 创建目录
rmdir 删除空的目录
详细用法参考:https://www.runoob.com/linux/linux-command-manual.html
4.1.1.flie命令
在Linux文件系统中,文件扩展名不总是被使用或被一致地使用。
如果一个文件没有扩展名,或者文件与其扩展名不符时怎么办呢?
file命令功能用于判定一个文件的类型。file命令一般语法格式为:
file <filename>其中filename是文件名。命令的输出将显示该文件是二进制文件、文本文件、目录文件、设备文件,还是Linux中其他类型的文件。
linux@ubuntu:~$ file /usr/games/banner
banner: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), stripped
linux@ubuntu:~$ file Textfile.txt
Textfile.txt: UTF-8 Unicode text
4.1.2.创建链接文件
Linux中有两种类型的链接:
- 硬链接 是利用Linux中为每个文件分配的物理编号——inode建立链接。因此,硬链接不能跨越文件系统。
- 软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。
需要注意的是:如果是修改硬链接的目标文件名,链接依然有效;
如果修改软链接的目标文件名,则链接将断开;
对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。
假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。
4.1.3.ln命令
命令可以用于创建文件的链接文件。ln命令一般语法格式为:
ln [-s] <target_file> <link_file>其中,选项“-s”表示为创建软链接。在缺省情况下,创建硬链接。参数target_file为目标文件,link_file为链接文件名。
如果链接文件名已经存在但不是目录,将不做链接。目标文件可以是任何一个文件名,也可以是一个目录。
linux@ubuntu:~$ ln -s /proc/cpuinfo mycpuinfo
linux@ubuntu:~$ ls –l mycpuinfo
lrwxrwxrwx 1 wdl wdl 13 2007-09-22 00:43 mycpuinfo -> /proc/cpuinfo
以上命令为/proc/cpuinfo文件创建了一个软链接文件。使用“ls –l”命令可以查看到新创建的链接文件所指向的目标文件名。
4.2.文件的归档和压缩
4.2.1.概念
归档文件是将一组文件或目录保存在一个文件中。目前,归档工具使用最广泛的tar命令,可以把很多文件(甚至磁带)合并到一个称为tarfile的文件中,通常文件扩展名为.tar。然后,再使用zip、gzip或bzip2等压缩工具进行压缩。
压缩文件也是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。
归档文件仍是没有经过压缩的,它所使用的磁盘空间仍等于其所有文件的总和。因而,用户可以将归档文件再进行压缩,使其容量更小。
| 压缩工具 | 解压工具 | 文件扩展名 |
| gzip | gunzip | .gz |
| bzip2 | bunzip2 | .bz2 |
| zip | unzip | .zip |
gzip是Linux中最流行的压缩工具,具有很好的移植性,可在很多不同架构的系统中使用。
bzip2在性能上优于gzip,提供了最大限度的压缩比率。如果用户需要经常在Linux和微软Windows间交换文件,建议使用zip。
4.2.2.gzip与gunzip命令
与zip明显区别在于只能压缩一个文件,无法将多个文件压缩为一个文件。
gzip命令符号模式的一般语法格式为:
gzip [ -l | -d | -num ] filename
其中,filename表示要压缩的文件名,gzip会自动在这个文件名后添加扩展名为.gz,作为压缩文件的文件名。
| 选项 | 描述 |
| -l | 查看压缩文件内的信息,包括文件数、大小、压缩比等参数,并不进行文件解压 |
| -d | 将文件解压,功能与gunzip相同 |
| -num | 指定压缩比率,num为1~9个等级 |
gunzip命令符号模式的一般语法格式为:
gunzip [ -f ] file.gz
其中,选项“-f”用于解压文件时,对覆盖同名文件不做提示。
在执行gzip命令后,它将删除旧的未压缩的文件并只保留已压缩的版本。
以下命令以最大的压缩率对文件file_1进行压缩,生成file_1.gz文件。
linux@ubuntu:~$ gzip -9 file_1
linux@ubuntu:~$ gzip -l file_1.gz
compressed uncompressed ratio uncompressed_name
1200 4896 76.0% file_1
linux@ubuntu:~$ gunzip file_1.gz
使用“-l”选项可以查看压缩的相关信息。
最后使用gunzip命令对文件进行了解压。与压缩时相反,file_1.gz文件会被删除,继之生成file_1。
4.2.3.tar命令
tar命令主要用于将若干文件或目录合并为一个文件,以便备份和压缩。
当然,之后出现tar程序的改进版本,可以实现在合并归档的同时进行压缩。
tar命令符号模式的一般语法格式为:
tar [ -t | -x | -u | -c | -v | -f | -j | -z ] tarfile filelist
| 选项 | 描述 |
| -t | 显示归档文件中的内容 |
| -x | 释放归档文件 |
| -u | 更新归档文件 |
| -c | 创建一个新的归档文件 |
| -v | 显示归档和释放的过程信息 |
| -f | 用户指定归档文件的文件名,否则使用默认名称 |
| -j | 由tar生成归档,然后由bzip2压缩 |
| -z | 由tar生成归档,然后由gzip压缩 |
例:
一,将myExamples/目录下的所有文件全部归档,打包到一个文件中myExamples.tar;
二,将myExamples/目录下的所有文件全部归档,并使用bzip2压缩成一个文件myExamples.tar.bz;
三,将myExamples/目录下的所有文件全部归档,并使用gzip压缩成一个文件myExamples.tar.gz。
linux@ubuntu:~$ tar –cf myExamples.tar myExamples
linux@ubuntu:~$ tar -cjf myExamples.tar.bz myExamples
linux@ubuntu:~$ tar -czf myExamples.tar.gz myExamples
linux@ubuntu:~$ ls -lh myExamples.tar*
-rw-r--r-- 1 wdl wdl 9.3M 2007-09-23 00:42 myExamples.tar
-rw-r--r-- 1 wdl wdl 8.6M 2007-09-23 00:43 myExamples.tar.bz
-rw-r--r-- 1 wdl wdl 8.5M 2007-09-23 00:44 myExamples.tar.gz
如果想查看一下归档文件中的详细内容,使用类似以下命令:
linux@ubuntu~$ tar –tvf myExamples.tar.gz
使用以下命令完成tar文件的释放。其中,“ tar -xjf ”和“ tar –xzf ”等效与先解压缩后释放tar文件。
linux@ubuntu:~$ tar –xvf myExamples.tar
linux@ubuntu:~$ tar -xvjf myExamples.tar.bz
linux@ubuntu:~$ tar -xvzf myExamples.tar.gz
五、Linux网络配置管理
5.1.网络配置基础
用户既可以通过命令行的方式,也可以通过友好的图形界面,轻松完成网络配置。
实现Linux网络配置的唯一目标就是修改系统中众多的网络配置文件,如/etc/interfaces、/etc/hosts,/etc/resolv.conf 等等。
通常,用户可能使用普通以太网卡、无线网卡、调制解调器等不同类型的设备接入网络。
不同类型的网络设备在主机中被映射为相应的网络接口,比如以太网卡映射为eth,无线网卡映射为wlan。有时,用户还可能同时使用多个网络设备,就会出现eth0、eth1…,或wlan0、wlan1…的情况。
那么,如何标识每个连接到Internet的网络接口呢?
解决办法是:为每个网络接口分配一个全世界范围内惟一的32bit的标识符。这个标识符就是IP(Internet Protocol)地址。
5.2.配置IP地址
IP地址包括三部分:Internet网络号(Net-ID)、子网号(Subnet-ID)和主机号(Host-ID)。
| 三级IP地址 | net-id | subnet-id | host-id |
| 子网掩码 | 1111,1111,1111,1111 | 1111,1111 | 0000,0000 |
可以这样解释:一个IP地址唯一标识了,处在某个互联网中的,某个子网的,某个网络接口。
根据Internet网络号的字段长度(1,2,3字节长),IP地址区分为A类、B类、C类。三类IP地址的掩码如下所示。
- A类地址的默认子网掩码是255.0.0.0,或0xFF000000;
- B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000;
- C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00;
IP网络中通常用最小的IP地址标识网络本身,将最大的IP地址作为该网络的广播地址,其余所有IP地址都分配给网络中的主机。
然而,局域网中的主机并不能直接访问Internet,需要通过一个作为代理的网关或网络地址转换服务(NAT)才能访问Internet。
通常将IP地址的第一个或最后一个留给该网络的Internet网关。
接入网络的计算机主机依靠IP地址,唯一地标识其在网络中的身份,因此为主机配置IP地址是接入网络的关键。配置IP地址的方法有两种:
- 配置静态IP:在主机进入网络之前,事先为主机设置固定 的IP地址;
- 配置动态IP:选择DHCP网络服务,在主机进入网络之后,动态随机获取IP地址。
5.3.网络相关命令
5.3.1.ifconfig命令
ifconfig是GNU/Linux中配置网卡的基本命令,包含在net-tools软件包中。
它可用于显示或设置网卡的配置,如IP地址、子网掩码、最大分组传输数、IO端口等,还可以启动或禁用网卡。
ifconfig命令有以下两种格式:
ifconfig [interface]
ifconfig interface [aftype] option | address…
ifconfig的第一种格式用于查看当前系统的网络配置情况;第二种格式用于配置网卡,包括添加、删除网卡,以及绑定多个IP地址等。
从下面的运行结果可以看出,主机有两个接口eth0、lo。lo代表主机本身,也称回送接口(Loopback),其IP地址约定为127.0.0.1。

如果主机安装了第二块、第三块网卡,则有eth1,eth2标识。常见的接口类型还有以下几种(N表示接口号):
- pppN表示调制解调设备
- wlanN表示无线网卡
- trN表示令牌环网卡
如果只是关心某个网络设备,可以在ifconfig后面加上接口名称,则只显示该设备的相关信息,例如:
linux@ubuntu:~$ ifconfig eth0
假设主机现有的IP地址为192.168.1.200,需要为其重新分配IP地址192.168.1.199,即。使用ifconfig命令设置主机的第一块网卡(eth0)的IP地址。
linux@ubuntu:~$ sudo ifconfig eth0 192.168.1.199 netmask 255.255.255.0
linux@ubuntu:~$ ifconfig eth0
eth0 Link encap: Ethernet HWaddr 00:0C:29:7E:77:96
inet addr:192.168.182.128 Bcast:192.168.182.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7e:7796/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:914 errors:0 dropped:0 overruns:0 frame:0
TX packets:870 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:423597 (413.6 KiB) TX bytes:253856 (247.9 KiB)
Interrupt:17 Base address:0x1400
5.3.2.配置动态IP地址
在大型网络中,由于存在许多的移动计算机系统,随时都可能进入网络,在每次更换网络时,就不得不重新配置网络信息。
如果计算机在网络里能够自动获取IP地址、子网掩码、路由表、DNS服务器地址等网络信息,具有动态配置IP的能力,就可以大大简化客户端的网络配置难度。
动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)可以实现动态分配IP资源。
只要在局域网中架设有DHCP服务器,在Ubuntu Linux中为主机配置DHCP客户端是非常容易的。
需要说明的是,通常普通以太网卡和无线网卡可以配置动态IP,而调制解调器等网络设备不能配置动态IP。

#使用动态主机配置协议动态的配置网络接口的网络参数,也支持BOOTP协议
linux@ubuntu:~$ dhclient
5.3.3.动态IP的获取过程
可比作一个“租赁”过程。DHCP服务器好比是IP地址的出租方,用户主机(即DHCP客户端)好比是IP地址的临时租用者。
如果将用户主机设置为DHCP客户端之后,手动启动网络服务,就可以从执行结果中看出获取动态IP的过程。
执行过程中包括以下四个阶段:
- 客户端寻找DHCP服务器(DHCPDISCOVER):客户端广播申请动态IP的请求;
- 服务器提供可分配的IP地址(DHCPOFFER):所有接收到请求的DHCP服务器都将向客户端提供一个IP地址;
- 客户端接受IP地址租借(DHCPREQUEST):客户端从多个IP选择中挑选一个,通知DHCP服务器,并标识出所选中的服务器;
- 服务器确认租借IP(DHCPACK):被选中的DHCP服务器最后发出一个确认信息,包含IP地址、子网掩码、默认网关、DNS服务器和租借期(客户端使用这个IP的这段时间,称为租借期)。
最终客户端临时“租借”的IP地址为192.168.1.200。
、
wdl@ubuntuwdl:~$ sudo /etc/init.d/networking restart
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/00:0c:29:7e:77:96
Sending on LPF/eth0/00:0c:29:7e:77:96
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.182.254
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.182.254
bound to 192.168.182.129 -- renewal in 808 seconds.
5.3.4.IP地址存放位置
无论是配置静态IP还是动态IP,计算机系统将IP信息保存放在什么地方?
答案是配置文件“/etc/network/interfaces”。
在Ubuntu Linux启动时就能获得IP地址的配置信息。若是配置静态IP,就从配置文件中读取IP地址参数,直接配置网络接口设备;若是配置动态IP,就通知主机通过DHCP协议获取网络配置。
以下分别为配置静态IP和动态IP时,配置文件“/etc/network/interfaces”的实例。


5.3.5.DNS客户端配置文件
DNS就是把域名和IP地址联系在一起的服务,有了DNS服务器,就不用输入IP地址来访问一个网站,可以通过输入网址访问,DNS协议运行在UDP协议之上。
Ubuntu Linux将DNS服务器地址保存在配置文件/etc/resolv.conf中。
依然延续上面的例子,添加DNS服务器IP地址后,查看配置文件/etc/hosts,如下所示。
linux@ubuntu:~$ cat /etc/resolv.conf
nameserver 172.16.28.1
nameserver 202.204.58.2
nameserver 192.168.182.2
在配置文件/etc/rc.local中,键入:
echo “namesever 192.168.1.1” >> /etc/resolv.conf
exit 0
这样每次启动都会自动配置DNS为192.168.1.1。
5.3.6.ping命令
ping(Packet Internet Groper)命令可能是最有名气的网络连接检测工具。
它使用了Internet控制报文协议(ICMP)回送请求与回送应答报文,测试两个主机之间的连通性。
该命令的一般格式如下所示。ping命令测试的远程主机,既可用域名,也可用IP地址标识。
ping [DomainName | IP-address]
可以使用该命令来判断主机与远程主机是否可达,或之间的网络是否拥塞。min/avg/max/mdev是ping命令的完成测试后的统计结果,分别表示最小响应时间/平均响应时间/最大响应时间/响应时间方差。这些指标用于反应网络的联通程度。
linux@ubuntu:~$ ping www.ustb.edu.cn
PING www.ustb.edu.cn (202.204.60.12) 56(84) bytes of data.64 bytes from www.ustb.edu.cn (202.204.60.12): icmp_seq=1 ttl=128 time=0.539 ms
64 bytes from www.ustb.edu.cn (202.204.60.12): icmp_seq=2 ttl=128 time=0.606 ms
64 bytes from www.ustb.edu.cn (202.204.60.12): icmp_seq=3 ttl=128 time=0.724 ms
64 bytes from www.ustb.edu.cn (202.204.60.12): icmp_seq=6 ttl=128 time=0.560 ms
….
--- www.ustb.edu.cn ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 6015ms
rtt min/avg/max/mdev = 0.427/0.554/0.724/0.090 ms
ping命令执行时,会持续不断地向目的主机发送ICMP包。在得到对方的应答后,显示每次连接的统计数据,直到用Ctrl+C组合键中断执行。但是,目前很多主机通过设置防火墙,对ping命令不予应答。在这种情况下,ping命令由于不停地发送测试数据包,又得不到返回任何结果,而致使ping命令僵死。不过,使用-c参数设置发送测试数据包的次数,以便在有限时间内完成测试。
linux@ubuntu:~$ ping -c 3 www.google.com
PING www-china.l.google.com (66.249.89.99) 56(84) bytes of data.
--- www-china.l.google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2000ms
5.3.7.管理DNS服务器地址
DNS域名解析可以在更大范围的计算机网络、Internet,提供域名到IP地址的转换。
网络中的每台计算机都是一个DNS客户端,向DNS服务器提交域名解析的请求;
DNS服务器完成域名到IP地址的映射。因此DNS客户端至少有一个DNS服务器地址,作为命名解析的开端。
5.3.8.nslookup命令
使用nslookup命令可以查看当前系统所使用的DNS服务器的IP地址
#DNS客户端向服务器发送域名(www.google.com)的解析请求,服务器把域名 www.google.com 解析为了IP
#地址:66.249.89.99
linux@ubuntu:~$ nslookup www.google.com
Server: 192.168.182.2
Address: 192.168.182.2#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
www.l.google.com canonical name = www-china.l.google.com.
Name: www-china.l.google.com
Address: 66.249.89.99
服务器192.168.182.2完成了域名解析。
Server表示提供服务的DNS服务器,Address中的#53表示TCP/UDP命名服务的端口号。
若所有的DNS服务器都访问失败,则出现如下的执行结果。
linux@ubuntu:~$ nslookup www.google.com
;; connection timed out; no servers could be reached
总结
以上就是Linux常用的命令,本文系统介绍了linux在基本系统维护、用户管理、进程管理、文件系统和网络配置中,常用的命令与操作,
如有不足之处欢迎补充与指正。
