Linux命令

http://blog.csdn.net/yourtommy/article/details/7084482

第1章 Linux简介

Linux是一套遵守POSIX(Portable Operating System Interface for Computer Enviroment,即可移植操作系统环境接口)规范的操作系统。它以其系统简明功能强大性能稳定以及扩展性和安全性高著称,可以支持多用户、多任务环境,具有较好的实时性广泛的协议支持,同时具有优秀的系统兼容性可移植性

Linux起源于UNIX。1969年,Bell实验室的Ken Thompson在一台闲置的PDP-7计算机上设计了一种多用户、多任务的操作系统。不久,Dennis Richie加入并与其共同开发了最早的UNIX。早期的UNIX由汇编语言编写,在其第三个版本用C语言进行了重写。之后,UNIX移植到更为强大的DEC PDP-11/45与11/70计算机上运行并逐渐走出实验室成为主流操作系统之一。

UNIX通常在价格不菲的企业级服务器或工作站等级的服务器上使用,因此得不到普及。Andre S.Tanenbaum教授开发出在PC上使用的具有相同功能而且是免费的类似UNIX的系统——Minix系统。之后,1991年芬兰赫尔辛基大学技术科学系的Linus Torvalds在Minix的基础上开发了Linux,并将0.02版放到Internet上,作为自由和开放源代码的自由软件传播,来自世界各地的编程人员对其进行修订和扩充。1994年,在互联网上的志愿开发者协同开发下,Linux发布了标志性的1.0版本。

Linux的特点及主要优势:

1、免费的专业级操作系统:Linux遵守公共许可GPL,因此任何人都有共享和修改的自由,并且可以免费得到Linux的源代码;

2、良好的可移植性:Linux可以在所有的计算机平台上运行,包括笔记本、PC、工作站甚至大型机,支持x86、MIPS、PowerPc、SPARC等主流系统架构,并同时支持32位和64位操作系统。

3、良好的用户界面:由MIT开发的X-Windows可以为用户提供一个具有多种窗口管理功能的对象集成环境。

4、低成本:Linux不仅内核是免费的,其许多系统程序及应用程序也是自由软件,用户可以从网上免费获得。

5、内核的定制和剪裁:Linux内核采用动态加载技术,用户可以将暂不需要的模块从内核中剪裁掉,在需要时再重新加载,从而定制出很小的内核,甚至可以在一张容量为1.44M的软盘上安装一个Linux操作系统。

6、广泛的协议支持:网络是Linux的生命。Linux在网络方面具备与生俱来的优势,其内核支持的主要协议包括:
TCP/IP通信协议。
IPX/SPX通信协议。
Apple Talk通信协议。包括X.25及Frame-relay。
ISDN通信协议。
PPP、SLIP、PLIP等通信协议。
ATM通信协议。

7、丰富的应用程序和开发工具支持:大部分在UNIX系统下的工具已经被成功移植到Linux系统上,包括几乎所有的GNU软件库。
语言及编程环境:C、C++、Java、Perl和Fortran等。
数据库:MYSQL、PostgreSQL及Oracle等。
Shell:bash、tesh、ash及csh等。
编辑器:emacs、Gedit、VIM及pico等。
图形环境:GNOME、KDE、GIMP、IceWM等。
文字处理软件:Opernoffice、Kword、abiWord等。
浏览器:Firefox等。

8、良好的安全性和稳定性:Linux是多任务、多用户操作系统,可以支持用户同时使用系统的处理器、内存、磁盘和外设等资源。为此,Linux采取了多种安全技术措施,包括对读、写进行权限控制,带保护的子系统,审计跟踪,核心授权等等。Linux本身的设计就对病毒攻击提供了非常好的防御机制,因此Linux系统基本上不用安装杀毒软件。Linux内核有极强的稳定性,可以长年累月地运行而不死机,因此被广泛应用在网关和防火墙。

Linux的版本继承了UNIX版本制定的规则,分为内核版本发行版本两类。

内核是运行程序和管理如磁盘和打印机等硬件设备的核心程序,其开发规范一直由Linus领导的开发小组控制。内核具有两种不同的版本号:实验版本产品化版本。版本的格式通常为“主版本号.次版本号.修正号”。主版本号和次版本号表示有重要的功能变动,修正号表示较小的变动。次版本号如果是偶数说明这种版本相对稳定,是可以产品化的版本,如果是奇数说明是实验版本,内核中可能加入一些测试功能, 是一个内部可以存在BUG的测试版。比如2.6.34是产品化版本,2.5.73是实验版本。产品化版本是修订实验版本中存在的错误后的副本。

全球有超过100种的Linux发行版本,较知名的包括:

1、Red Hat Linux:目前流行最广的发行版。主要特点是方便简易的安装和操作使用,用户可以名去繁杂的安装和设置工作,尽快开始使用Linux。其图形化的操作环境与Windows不相上下。Red Hat Linux曾被权威的计算机杂志Info World评为最佳的Linux。

2、Slackware Linux:由Patrick Volkerding创建于1992年,是历史最悠久的Linux发行版。主要特点是尽量采用原版的软件包而不进行任何修改,并且一直坚持KISS(Keep It Simple and Stupid)原则。Slackware追求效率而非易用性,所以使用配置文件进行管理,对Linux的新用户是十分困难的。Slackware提供了更多的透明性和灵活性,更适合比较有经验的使用者。用户可以通过Slackware深入学习Linux或者安装编译自己的软件程序。有人评价:学会了Red Hat Linux,则只学会了Red Hat Linux;而学会了Slackware Linux,则学会了Linux。

3、Mandriva Linux:原名Mandrake,最早由Gal Duval创建并于1998年7月发布。特点是集成了图形化的桌面环境及图形化的配置工具。最早基于Red Hat进行开发,Red Hat默认的桌面是GNOME,而Mandriva则采用KDE。

4、Debian Linux:最早由Ian Murdock于1993年创建,是迄今为止最遵循GNU规范的Linux系统。特点是使用了Debian特有的软件包管理工具dpkg,使得Debian上安装、升级、删除和管理软件包变是非常容易。

5、SUSE Linux:最早由德国的SUSE linux AG公司发行维护,特点是使用了自主开发的软件包管理系统YsST。2003年11月,Novell收购了SUSE,并对SUSE Linux进行了改进,使之成为Red Hat有力的竞争对手。

6、红旗Linux:中国人自行研发的Linux,特点是提供了良好的中文支持,其界面和操作设计也更符合中国人的习惯。

 

自由软件创始人Richard Stillman于1984年开创了GNU Project (GNU采用递归方式定义:是“GNU's Not Unix”的缩写),该项目得到业界认可并迅速遍及全球。大量志愿者在GNU的激励下,编写了大量自由软件,Richard Stillman本人也开发了很多著名的自由软件,包括GNU Compiler Collection (GCC)、GNU symbolic debugger (GDB)和GNU Emacs。由于GNU Emacs的成功,Richard Stillman在1985年建立了自由软件基金会FSF(Free Software Foundation)。

GPL是由FSF发行的用于计算机软件的证书,取得该证书的软件被称为自由软件。GPL与传统商业软件许可协议CopyRight相对立,所以又被称为CopyLeft。GPL保证任何人有共享和修改自由软件的自由,并且规定在不增加费用的条件下可以得到自由软件的源代码。同时还规定自由软件的衍生作品必须以GPL作为它重新发布的许可协议,即GPL在给予用户各种权利的同时,也要求用户通过修改其自由软件而得到的软件也必须成为自由软件,从而从整体上保证了自由软件的衍生和传播。

Linux树立了“自由开放之路”的典范。它的发展状大以事实证明了自由软件发展道路的成功。

 

第2章 初识Linux

计算机启动时,BIOS(从硬盘中)装载MBR(主引导记录),然后从当前分区启动,从而运行启动器程序。启动器有两种:LILO(LInux LOader)和GRUB(GRand Unified Bootloader)。通过启动器,用户可以选择要启动的操作系统。如果选择Linux,Linux则从引导程序手中接管CPU的控制权,继而开始执行Linux的核心映像代码,开台Linux的启动过程。

Linux启动后,提供两种方式供用户登录:文本方式和图形方式。如果以图形方式登录,登录成功后可以直接进入KDE或Gnome等窗口管理器。当Linux系统引导时,启动的第一个进程是init(/sbin/init)。init程序会根据/etc/inittab文件的配置内容执行相应的脚本。init是在linux下,在系统启动过程中,初始化所有的设备驱动程序和数据结构等之后,由内核启动的一个用户级程序,并由此init程序进而完成系统的启动过程。init会根据/etc/inittab文件中的配置内容执行相应的脚本,完成系统的初始化工作。(Ubuntu上使用upstart完成系统的启动,而且读取的脚本为/etc/init/rc-sysinit.conf文件。)

在inittab文件中,每行包括4个以冒号分隔的字段,格式如下:
id : runlevels : action : process 比如 1:2345:respawn:/sbin/mingetty tty1
id为标识符,通常由1~2字符组成;runlevels表示运行级别,共7种;action表示执行的动作;process表示执行的进程。

运行级别(runlevels)包括如下几种:# 0 - 停机;# 1 - 单用户模式;# 2 - 多用户,没有 NFS;# 3 - 完全多用户模式(标准的运行级);# 4 – 系统保留的;# 5 – X11 (x window);# 6 - 重新启动。(Ubuntu与传统的linux有差别,它的运行级别有# 0 – 关闭系统;# 1 – 单用户模式;# 2~5 – 完整的多用户模式;# 6 – 重新启动)

执行动作(action)包括:initdefault - 指定默认的运行模式;sysinit - 指定运行的初始化脚本,默认为/etc/rc.d/rc.sysinit;respawn - 若指定的进程结束,则重新执行该进程;ctrlaltdel - 用户按下Ctrl+Alt+Del。

 

使用文本方式登录的用户可以通过startx命令启动图形界面:
startx [ [ client ] options ... ] [ -- [ server ] options .. ]
其中“--”用于分隔客户端参数与此同时服务器参数。startx命令通常不带参数运行。在图形界面下运行该命令会出现错误。

xset可以用来设置X-windows的各项参数。它的语法格式为:
xset [c][q][s][r][p][m][-dpms][+dpms][-display][led]

 

使用图形界面登录后可以使用虚拟终端进入终端工作方式。(其它使用终端的方式为:设置initab文件使系统启动直接进入命令行终端方式;远程登录进行终端。)

编辑命令行时的快捷键有:

移动光标的快捷键:Ctrl+f - 字符前移、Ctrl+b - 字符后移、Alt+f - 单词前移、Alt+b - 单词后移、Ctrl+a - 行起始、Ctrl+e - 行结尾、Ctrl+l - 清屏。

编辑的快捷键:Ctrl+d - 删除当前位、Backspace - 删除前一位、Ctrl+t - 调换当前字符与前一字符、Alt+t - 调换当前单词和前一单词、Alt+u - 把当前单词大写、Alt+l - 把当前单词小写、Alt+c - 把当前单词首字母大写、Alt+v - 插入特殊字符。

剪切和粘贴的快捷方式:Ctrl+k - 剪切至行末、Ctrl+u - 剪切至行首、Ctrl+w - 剪切前个单词、Alt+d - 剪切下一个单词、Ctrl+y - 粘贴最近剪切的文本、Alt+y - 粘贴先前的文本、Ctrl+c:删除整行。(Ubuntu虚拟终端下Alt+y和Ctrl+c命令不起作用)。

 

命令行利用tab键可以自动补全。如果当前文本可以确定一个唯一的匹配项,则一次tab就可以补全该项;否则连续两次tab可以显示所有可能匹配的项。可以补全的种类包括:

以$开头的文本以当前Shell的环境变量补全;

以~开头的文本以用户名补全;

常规字符开头的文本以命令、别名或函数名来补全;

以@开头的文本以/etc/hosts/文件中的主机名来补全(Ubuntu上貌似不支持)。

 

退出Linux的命令包括:

关机或重新启动 —— shutdown [-akrhfnc] [-t secs] [time] [warning message]

关闭系统 —— halt [-n] [-w] [-d] [-f] [-i] [-p];(halt命令相当于shutdown -h now)

重新启动系统 —— reboot [-n] [-w] [-d] [-f] [-i] [p];(reboot命令相当于shutdown -r now)

退出Shell -- exit;(等同于Ctrl+D)

注销用户 -- logout;(虚拟终端不能使用logout,而只能使用exit)


man命令可以查看Linux的帮助手册:
man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] [name]

man手册的存储位置定义在/etc/man.config文件里(在ubuntu里是/etc/manpath.config)。一般按类型存放在/usr/share/man目录里。手册根据类型分为man1~man9共九个章节,比如/usr/share/man/man1。在各章节目录下包含着.gz格式的手册文件,它的命名规则为“手册名称.章节.gz”。要查看特定章节的手册信息,可以使用命令“man N [name]”,其中N取值范围为1~9。

可以使用重定向把man的信息输出到一个文件中:man [name] > [filename]


其它的联机帮助命令有:

基于字符串查找whatis数据库 -- apropos;(等同于man -k。apropos以“name - description”的格式输出所有名称或描述与关键字匹配的命令)

显示内建命令的帮助信息 -- help [-s] [pattern..]; (-s表示只显示命令的格式信息,pattern是要查询的内容。该命令同样显示多个以pattern开头的命令。[command] --help同样可以得到命令的帮助信息。)

查看info格式帮助信息 -- info   [-apropos=STRING] [--directory=DIR] [--dribble=FILENAME] [--file=FILENAME] [--help] [--index-search=STRING] [--node=NODENAME]  [--output=FILENAME] [--raw-escapes] [--no-raw-escapes] [--restore=FILENAME] [--show-options, --usage] [--subnodes] [--vi-keys] [--version] [--where, --location];(info文档是比man手册有更强的交互性的另一种格式的帮助信息,通常存放在/usr/share/info目录中。pinfo命令同样可以查看info文档,其采用Lynx浏览器风格,支持鼠标功能。)

查询文件存储位置 -- whereis [-s] [-b] [-m] [-S dir] [-M dir] [] [-f] [name];(查找一个命令的二进制文件、源文件或帮助文件在系统中的位置)

查找简洁的帮助信息 -- whatis [keyword]。(在使用whatis命令之前需要用makewhatis命令建立whatis数据库,只有系统管理员才能建立)


第3章 系统管理与设置

3.1常用的信息显示命令

arch:显示主机的体系结构,等同于uname -m,可输出i386、i486、arm等。

cal:显示日历。

cat /proc/meminfo:查看内存使用情况。/proc目录下的文件通常用来帮助查看内核运行信息,系统关闭后,该目录的文件不再存在。

cat /proc/modules:查看当前系统模块。

cat /proc/version:查看当前系统版本。

cat /proc/partitions:查看当前系统分区。

cat /etc/issue:显示当前系统的发行版本。

cat /proc/cpuinfo:显示CPU信息。

cat /proc/interrupts:显示中断信息。

cat /proc/filesystems:显示文件系统信息。

date:显示或设置系统时间。

dmesg:显示启动信息。检测和控制内核的缓存,通常用来显示输出系统最后一次启动时的内核内部缓存信息。

echo:显示文本行。(echo -e支持转义字符)

free:显示内存信息。(free -s 2 -c 3表示每隔2s刷新一次内存,共刷新3次)

fgconsole:显示活动的虚拟终端数目。

fuser:用文件或套接口识别进程。(fuser -l显示信号,fuser -a /root显示与/root目录相关的进程,fuser -k /root杀死所有与/root目录相关的进程)

gdialog:从Shell创建对话框。(例:gdialog --title "hello" --yesno "this is content")

history:显示历史指令。(保留最近执行的命令记录,默认可以保留500个。history 5表示显示最近执行的5个命令。history -c清空历史记录。重新执行已执行的命令可以使用“!<命令事件号>”)

hostname:显示或设置当前系统的主机名。(-s显示短主机名;-a显示主机别名;-i显示主机IP;-d显示主机域名;--yp显示NIS/YP域名;hostname somename设置主机名)

hash:显示、添加或清除哈希表。(-l显示哈希表;-r清除表;-p<path><name>增加内容;-t<command>显示指定命令的完整路径)

hwclock:显示和设置硬件时钟。(hwclock -utc显示utc时间)

ipcs:显示IPC设备信息。(对进程通信进行描述。-p显示PID信息;-t时间信息;-m共享内存信息;-c创建者信息)

isosize:显示输出iso9660文件系统的大小。(光驱设备属于iso9660文件系统,isosize /dev/cdrom显示文件大小。isosize -d 1024 /dev/cdrom以大小为1024的块来显示光驱设备的大小。-x以易读方式显示大小。)

jobs:显示后台执行的作业。(命令后接&会以后台方式运行该命令。-l列出作业的详细信息;-p列出作业ID,-s列出停止执行的作业。)

lsmod:显示所有已加载的模块。

locale:显示当前系统的语言设置。(-a输出所有可用的语言名称;-m输出所有可用的字符集)

mesg:显示信息。(y允许用户通过write命令发送信息到当前终端;n禁止发送)

minfo:显示ms-dos文件系统的各项参数。(包括扇区数、磁头数、柱面数等。minfo -v C: 除显示文件系统的各项参数外,以十六进制显示C盘扇区内容。)

modinfo:显示内核模块信息。(modinfo modname)

mev:监视鼠标情况。

pstree:以树状图显示程序。(默认以init进程为根。pid可指定某一进程为根;-p可显示进程及进程号;-h高亮当前正在执行的进程。)

pwd:显示当前目录。

proc文件系统:查看系统内核信息。(proc不是真实的文件系统,不占用外存,只是以文件的方式为访问Linux内核数据提供接口。ls /proc可查看)

ps:报告程序状况。(-e查看当前所有进程;-u root查看以root身份运行的进程;-u root N查看非root身份运行的进程;-o pid,tt,user,fname,f,tmout,wchan以指定的排序方式显示;a显示所有进程,包括其他用户的进程;x显示没有控制终端的所有进程;-C command显示与command进程相关的进程号,进程及其子进程)

pmap:显示程序的内存信息。(pmap pid)

procinfo:显示系统状态信息。

runlevel:显示系统运行级别。(输出前一个和当前的运行级别。如果没有记录上次系统的运行等级,则用N表示。运行级别说明:0-关闭系统;1-单用户模式;2-多用户模式,但不支持NFS;3-完全的多用户模式;4-保留;5-图形用户模式;6-重新启动。)

sysctl:设置系统核心参数。(-a显示当前所有的设置;-w<varible=key>设置参数。)

stat:显示文件/文件系统的详细信息。(例:stat /dev/sda)

top:显示进程信息。(q键退出)

time:执行命令并显示该进程执行的时间。(例time ls)

tload:显示系统负载。

uptime:显示系统的运行信息。(18:28:00 up 1 day,  6:58,  7 users,  load average: 0.07, 0.07, 0.12表示当前时间为18:28,系统运行1天6小时58分,有7个用户登陆系统,过去一分钟内的平均负载为0.07,过支5分钟内的平均负载为0.07,过去15分钟内的平均负载为0.12。)

uname:显示操作系统信息。(-a显示当前主机所有软硬件信息)

vmstat:显示虚拟内存的统计信息。

yes:连续输出给定的字符串。(yes | rm -i *命令可以自动回答rm命令提出的问题)

3.2 常用的系统管理命令

apm:高级电源管理。(ubuntu显示No APM support in kernel)

apmd:高级电源管理守护进程。

apmsleep:设置挂起、待机及唤醒。(apmsleep -s +1:50挂机1小时50分钟后被唤醒。apmsleep -s 8:00挂机直到早上8点被唤醒)

bg:将程序放在后台执行。(例:sudo find / -name *.txt,之后用ctrl+z中止,显示"[2]+  已停止 sudo find / -name *.txt",再执行bg 2可把这个程序放在后台执行。)

chsh:改变登录系统时的Shell。(默认为/bin/bash。)

clear:清除终端屏幕。

depmod:检查模块依赖关系。(--show显示输出模块之间的依赖关系。)

exec:执行完命令后,交出控制权。(虚拟终端上运行该exec会在执行完命令后退出终端。)

fc:修改并执行命令。(-l类似于history。fc 2 4:把命令号为2、3、4的命令在vi中编辑,编辑完成后执行这些命令。)

fg:把后台任务放到前台。(vi &,再通过jobs可以查看后台任务,显示“[1]+  已停止 vi”。执行fg 1可以把vi放到前台执行。)

gcov:coverage测试工具。(gcc sorcefile.c -o executable -ftest-coverage -fprofile-arcs可以生成一个.gcno文件,再运行executalbe,之后便可以用gcov命令查看运行情况。-b查看程序的分支情况,-f查看函数的使用情况。)

init:所有进程的父进程。(init 数字可以切换运行等级。比如init 0为关机;init 6是重启。init有一个链接命令telinit。)

ipcrm:删除消息队列、信号量或共享内存的ID。(ipcs显示IPC相关信息,ipcrm -m 32768删除进程32768的共享内存;-q删除消息队列;-s删除信号量。不带参数删除所有。)

kill:杀死进程。(-l参数显示所有可以使用的信号。kill -s 信号 进程号:向进程发送指定信号,不指定时的默认信号为SIGHUP。-s SIGKILL强制杀死进程,可能导致某些资源没有正确释放。信号可以直接作为参数,如kill -KILL或kill -9。)

killall:杀死同名的所有进程。(-l显示所有可用的信号。killall -s signal 进程名:向所有同名进程发送信号。默认信号为SIGTERM。信号也可以直接作为参数。)

logrotate:处理log文件。(替换、压缩、删除或通过邮件发送系统日志。logrotate /etc/logrotate.conf指定配置文件。)

mtools:软盘操作命令集。(mtools显示所有支持的软盘命令,为相应的MS-DOS命令前加“m”,如"mdir a:"。)

nice:设定进程优先级。(nice -N 命令。如nice -15 vim。N取值范围为-20~19。-20是最高等级,19是最低等级。超过19的值被视为19;小于-20的值被视为-20。系统默认等级为0。未指定优先级的nice命令默认等级为10。)

nohup:退出系统继续执行命令。(虚拟终端运行nohup command &会运行命令,并显示nohup: 忽略输入并把输出追加到"nohup.out"。)

ntsysv:设置系统的各种服务。(显示图形界面。ubuntu上找不到该命令。)

open:开启虚拟终端。(open -s -c 6 -- ls -al在虚拟终端6执行ls -al命令,同时切换到虚拟终端6。-s执行命令时,切换到新的虚拟终端。-w等待命令结束。如果-w与-s合用,在命令结束后切换加原来的终端。)

pgrep:查找符合条件的进程。(-u root查找由root用户创建的进程,-l同时列出进程名称和ID。-v搜索不符合条件的进程。-P pid列出父进程为指定进程的所有进程。)

pidof:显示当前正在运行程序的进程ID。(例pidof vi。-o omitpid忽略进程号为omitpid的进程。-s返回首次匹配。)

pkill:杀死进程。(ps各kill的结合,在当前所有进程中查找符合条件的进程,然后发送相应信号。pkill -t tty8杀死终端8的所有进程。-u root杀死root的进程。pkill -9 vim杀死vim。)

pwck:检查密码文件。(例:pwck /etc/passwd;pwck /etc/shadow。-r只读模式。)

rlogin:远端登录。(先在远端主机上运行chkconfig rlogin on开启rlogin服务,ubuntu上找不到该服务。之后使用rlogin 192.168.20.122 -l username来登录该远端主机。)

renice:对进程优先级进程调整。(renice N 进程号,或-u 用户名,或-g 用户组。与nice不同,N前不需要“-”。)

rmmod:删除模块。(lsmod显示系统已安装的模块。-a删除所有没有使用的模块。-v显示运行时的详细信息。)

rsh:远端登录的Shell。(远端主机chkconfig rsh on。例:rsh -l yang 192.168.20.122 /bin/ls。ubuntu上rsh为unknown service。)

screen:多重视窗管理程序。(在一个终端上模拟多个终端。screen或ctrl+a+c创建一个新的screen。ctrl+a进行screen的切换。screen -ls显示所有screen列表。-d让指定的screen离线。-r恢复指定的作业。unbuntu的虚拟终端好像只能创建一个screen。)

sleep:休眠。(s秒,m分,h小时,d天。虚拟终端上表示为其自身暂停。)

sudo:以其他身份来执行命令。(-L列出可以使用的参数。-u username使用指定身份执行命令。)

suspend:暂停执行Shell。(直到收到SIGCONT信号为止。-f表示强制暂停。)

symlinks:管理和维护符号链接。(symlinks -v /:列出根目录下所有的符号链接。-c将绝对路径的链接转化为相对路径;-d删除失效的链接(dangling);-r递归检查子目录;-t与-c合用时,对换进行检测,但不进行实际的转换。)

vlock:锁定终端。

wait:等待程序返回状态。(例:wait pid。)

watch:重复执行命令并将结果输出。(watch -n 10 ls每隔10秒运行一次ls命令。)

&:将任务放到后台执行。(例:vi &。)

3.3 常用的系统维护命令

alias:设置命令的别名。(alias列出已有的别名。-p以“name=value”的形式列出别名。alias name=value设置别名。)

aumix:设置音效设备。(图形界面。ubuntu上运行:aumix:打开混音器时发生错误: 没有那个文件或目录。)

authconfig:配置系统的认证资源。(图形界面。对NIS、/etc/passwd、/etc/shadow、LDAP、Kerberos5以及SMB等资源认证进行配置。-back将“取消”按钮更改为“返回”按钮。ubuntu:authconfig:找不到命令)

bind:显示或设置按键组合。(-l列出所有功能函数的名称。-p列出所有功能函数及其绑定。-q function查询指定功能的按键或按键组合。)

chkconfig:设置和检查系统的服务设置。(--list列出所有服务设置状态。chkconfig telnet on开启telnet服务。chkconfig telnet off关闭telnet服务。)

declare:显示或设置Shell变量。(-p显示每一变量的名称和属性值。-x显示环境变量;-f显示函数名称;-r只读模式。)

dircolors:设置ls命令显示的颜色。(-p显示默认值。-b显示Bourne Shell颜色代码设置;-c显示C Shell颜色代码设置。)

enable:开动或关闭Shell内置命令。(-a显示所有内置命令;-p显示已加载的命令列表;enable name指定加载的命令。enable -n name关闭指定的命令。)

eval:连续执行多个命令。(例:eval ls; free; ps)

export:设置或显示环境变量。(-p显示所有环境变量。export name=value设置;-n删除。)

false:返回值为失败。(例:ls后,echo $?显示0,表示无错误。false后,echo $?显示1,表示失败。)

fbset:显示或设置帧缓存。(fbset -g 800 600 1024 768设置画面分辨率800x600、桌面分辨率1024x768。-accel true启动硬件加速。-bcast true启动广播功能。-test测试。)

hostid:显示出当前主机的数字标识。

insmod:载入模块。

ldcondifg:配置动态链接绑定。(-v建立共享库的正确链接,更新缓冲区,并显示相关信息。-n dir只对特定目录更新。)

ldd:显示共享库文件的相互信赖关系。(显示指定的程序或库文件所使用的共享库。-v显示所有信息。)

lilo:安装启动装载程序。

losetup:设置和控制循环设备。(例:losetup /dev/loop0。)

mkraid:初始化或升级raid。(将一组块设备设置为一个raid设备阵列。适合所有raid类型,包括RAID1、RAID4、RAID5、线性和RAID0。例:mkraid -f /dev/sda1+/dev/fd0。)

modprobe:自动处理可载入模块。(根据模块内的依赖关系自动安装所有依赖的模块。-c显示当前默认设置。例:modprobe -v 8139too安装网卡8139too。)

mouseconfig:设置鼠标相关参数。(redhat linux下的鼠标配置工具,ubuntu不支持。--text图形界面方式;--noui genericusb以命令形式指定鼠标类型为genericusb。--device psaux指定鼠标所在的端口为PS/2。)

resize:设置终端视窗的大小。(resize查看视窗大小。-s 30 100设置大小为30行,每行100字符。-c采用C shell命令;-u采用Bourne Shell命令。)

rmp:管理rpm包。(-i安装;-q查询;-e卸载。)

setserial:设置或显示串口的信息。(例:setserial -v /dev/ttyS1显示串口/dev/ttyS1的信息。-a显示详细配置信息。)

setup:设置公用程序。(设置认证、防火墙、鼠标、网络配置、打印机配置、系统服务、时区配置等公用程序。ubuntu不支持。)

swapoff:卸载交换区(swap area)。(fdisk -l显示系统分区信息,/dev/sda3可能是一个交换分区。swapoff /dev/sda3卸载该交换分区。)

swapon:加载交换区。(swapon /dev/sda3加载交换分区。swapon -s /dev/sda3显示交换分区信息。)

set:设置Shell执行方式。(-f禁止使用通配符。+f添加通配符设置。例:set SHELL "/bin/sh"。)

telinit:设置系统运行等级。(/sbin/init的链接。)

true:返回值为成功。(与false相反。)

ulimit:控制Shell及进程的资源。(-a显示资源配置。-u 500设置单用户创建进程上限为500;-n 1000同一时间允许打开的文件数目最多为1000;-v 1024最大虚拟内存为1M。)

unalias:取消指定的别名。

unset:删除变量或函数。

up2date:升级red hat linux系统。(ubuntu不支持。)

3.4 自动作业处理

crontab:设置定时执行。(首先确保有crond守护进程运行,用service crond start或service crond stop来开启或关闭crond进程。ubuntu上是cron。该进程运行后,可以编辑/etc/crontab文件来设置自动作业。可以看到文件组织格式为“m h dom mon dow user  command”,分别表示“分、小时、日期、月、星期、用户、命令”。例:17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly表示每小时的第17分钟以root身份运行cd / && ... hourly的命令。另*/1 *   * * *   root    echo tommy crontab~~表示每隔1分钟以root身份执行echo,默认情况会以邮件的方式发给root,通过cat /etc/mail/root可以查看。可以使用重定向“echo tommy crontab~~ >> /home/tommy/tmp/record”把输出转到一个文件中。)

anacron:任务高度守护进程。(与cron类似,区别在于cron任务如果在指定时间没能完成,则调度工作就会失败,而anacron没能成功执行后会间隔一段时间后再次执行该任务。需要通过service anacron start启动守护进程。编辑/etc/anacrontab命令可以设置调度任务。文件格式为:时间间隔、等待时间、任务标识、命令。例:1 65 cron.daily run-parts /etc/cron.daily。)

at:系统将执行的任务排队。(把任务放到队列中,按时执行,与crond的区别是它只执行一次。例:at 21:55<回车> ls -al / /myshare/at_test<回车> <Ctrl+d>在21:55时执行。at now +5 min在5分钟后执行。at 3pm tomorrow在明天下午3点执行。at 8am+3days在三天后早上8点执行。at -l查询已经设置的任务。at -c 6显示已经设置的任务6的内容。所有的任务都存储在/var/spool/at目录中。)

atd:执行已经排队的任务。(at的任务要执行的话,必须要有一个atd的守护进程运行。-d输出调试信息。-s只执行已排队的任务一次。)

atq:检查排队的任务。

atrm:删除已经排队的任务。

atrun:执行已排队的任务。(本质为一个Shell脚本,等价于atd -s。)

batch:批处理。(与at一样,batch也使用atd守护进程执行,命令格式也相同。不同在于batch在系统平均负载低于一个特定值时才会运行,默认为0.8。例:batch<回车> ls <回车> echo "hello" <回车> <Ctrl+d>。)

3.5 系统日志

syslogd:启动syslog日志进程。(-r招收来自网络的syslog信息。修改配置文件后,用killall -HUP syslogd来重启syslog进程。)

syslog.conf:系统日志配置文件。(/etc/syslog.conf,格式为[消息来源.消息级别] <Tab> [动作]。例:mail.*  /var/log/maillog将所有与电子邮件相关的信息保存到mailog文件中。kern.emerg  *把内核恐慌消息发送给所有登录的用户。)

logger:测试syslog.conf。(logger -p [消息] [消息内容]。例:logger -p kern.emerg "Just test"。)

echo > 日志文件:清空日志。(如果创建日志文件的服务正在运行,必须停止服务,才能删除日志。利用echo命令,不必停止日志服务。例:echo > /usr/local/apache/logs/error_log。)


第4章 用户和用户组管理

4.1 普通用户的管理

/etc/passwd文件:存储用户的相关信息。(包括用户名、字码、主目录位置等。可以用vipw命令编辑/etc/passwd文件。vipw类似于vi,但在编辑文件时对文件加锁,编辑结束后解锁。文件格式为:Username:encrypted password:UID:GID:full name:home directory:login shell。例:root:x:0:0:root:/root:/bin/bash。因为linux2.0以上版本因为安全性,把密码与用户基本信息分开存储,所以在存放密码的位置为“x”标识。真正的密码在/etc/shadow文件中。用户标识号UID为整数,取值范围为0~65535。0~439一般由系统保留,其中“0”为根用户。用户组标识号GID也为整数,0~439被系统保留,用户组的具体定义在/etc/group文件。个人信息描述full name记录用户的真实姓名、电话、地址、邮编等信息,各项之间用“,”分隔,该字段可以为空。登录目录home directory是用户登录系统后的默认目录,通常就是用户的主目录,一般在/home下。根用户的登录目录为/root。登录Shell是用户以文本方式登录系统后启动的Shell进程,常用的包括sh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tcsh(TENEX/TOPS-20 type C Shell)、bash(Bourne Again Shell)等。)

/etc/shadow文件:存储用户密码。(passwd文件可被普通用户访问,而shadow文件只能被根用户访问。文件格式为:Username:Encrypted password:Number of days:Minimum password life:Maximum password life:Warning period:Disable account:Account expiration:Reserved,分别表示用户名、密码、从1970年到上次修改密码的天数、密码必须连续使用的天数、密码有效期、密码失效前告警的天数、从密码过期到彻底停用的天数、账号失效日期、保留字段。例:daemon:*:15089:0:99999:7:::。密码由MD5(Message Digest v5)算法加密。)

pwconv:创建影子文件。(把/etc/passwd中的密码转换为“x”,同时创建影子文件/etc/shadow保存密码。)

pwunconv:从影子文件恢复密文。(与pwconv相反,把/etc/shadow中的密码加入到/etc/passwd文件中,并删除/etc/shadow文件。)

useradd:添加新用户。(adduser是useradd的一个链接。-c comment:用户的注释说明;-d home_dir:登录目录;-e expire_date:帐号失效日期;-f inactive_days:帐号过期到永久停用的天数,值为0时表示帐号到期后立即停用,系统默认值为-1,表示账号不会被停用;-g initial_group:用户默认的用户组或默认用户组ID,必须是已经存在的,默认值为100,表示users组;-G group:设定该用户为若干用户组的成员,每个用户组之间用“,”分隔,且不可夹杂空格;-m:用户目录如不存在则自动建立;-k:把目录skeleton_dir和/etc/skel的文档复制到用户目录中,默认下-m和-k都不被启用;-M:不建立用户主目录,使用/etc/login.defs系统文件对用户进行设定;-n:系统默认用户组名称与用户名称相同;-r:建立系统帐号,即比定义在/etc/logins.defs中的UID_MIN小的值,UID_MIN的默认值是500,-r不会创建用户主目录,除非指定-m参数;-sehll default_shell:指定用户的登录Shell,默认为/bin/bash;-u uid:用户UID;-D:单独使用时显示当前默认值,与其它选项一起使用表示在默认设置的基础上重新设定默认值。)

usermod:修改用户的帐号。(支持useradd命令的选项,如-c、-d、-e、-f、-g、-G、-s、-u,此外还支持-l login_name:变更用户登录时的名称。)

userdel:删除用户。(删除用户在系统的账户信息。-r删除用户主目录下的文档,不指定该选项则保留主目录。删除用户前,应该等待该用户的进程执行完毕,或用ps -aux | grep "username"终止。此外还应查看是否有该用户的定时任务,用命令crontab -u username -r。)

passwd:修改用户密码。(-k:只有密码过期才需要用户设定密码。-l:通过在用户的密码字段加前缀“!”,对用户进行锁定。锁定的用户无法登录系统。--stdin:从标准输入重新读入密码。-u:与-l相反,删除密码字段前的“!”对锁定的用户进行解锁,口令为空的用户原则上是不允许解锁的,配合-f可强制解锁;-d:快速删除用户的密码。-n mindays:设定最短的密码有效期。-x maxdays:设定最长的密码有效期。-w:密码过期前,提前发出警报的天数。-i inactivedays:密码过期到帐号停用的天数。-S:显示指定用户当前密码状态。passwd单独使用时改变当前用户的密码。根用户可以用passwd username修改其他用户的密码。)

newusers:批量创建用户。(首先建立一个用户信息文件,格式与/etc/passwd相同,之后用命令newusers < filename来添加文件中定义的用户。如果不使用管道方式“<”,可以在标准输入中输入各行,以ctrl+d表示结束。)

chpasswd:批量创建用户密码。(与newusers类似,从文件中导入密码信息,文件格式为username:password。)

chage:查看帐户密码的有效期。(例:chage -l username。)

4.2 根用户的管理

su:变更用户身份。(例:su username。不输入用户名时,默认的用户为root。)

chroot:改变根目录。(对进程建立新的虚拟根目录“/“,通常保护真正的根目录。chroot newroot [command]。例:创建目录/tmp/empty,把ls链接到该目录,再运行chroot /tmp/empty /ls -Rl /。)

4.3 用户组的管理

/etc/group文件:存储组信息。(文件格式:用户组:加密密码:GID:组成员列表。密码用“x”代替。)

/etc/gshadow文件:存储组密码。(文件格式:用户组名称:加密密码:管理员帐号:组成员列表。管理员可以对该组进行增、删、改等操作。)

groupadd:添加新用户组。(命令格式:groupadd [-g GID [-o]] [-r] [-f] [-K KEY=VALUE] groupname。-g GID:用户组id;-r:创建小于500的系统组,若不指定-g,则按递减顺序从小于500的可用值中挑选;-f:如果所定义的组已存在,则退出并显示成功信息,若-g和-f合用,且-g指定的组已存在,则-g指定的组被忽略且新的group会分配另一个id值;-o允许指定不唯一的GID;-K KEY=VALUE:重载/etc/login.defs中的默认值,例如设置GID_MIN;groupname:用户组名称。)

groupmod:修改用户组属性。(-g GID;-n new groupname。例:groupmod -g 503 -n yourgroup mygroup。)

groupdel:删除用户组。(必须等待该用户组的所有用户退出系统才能正常删除。)

newgrp:切换所属用户组。(一个用户同时可以属于多个用户组,但用户登录系统后,默认只属于一个用户组,newgrp可以使用户在多个用户组之间进行切换。语法:newgrp [-] [groupname]。“-”用于重新加载用户工作环境,否则工作环境不改变。)

4.4 用户和用户组管理的安全防范措施

ac:统计用户连接时间。(ac查看系统总的连接时间。ac -p按用户进行统计。ac -d按天对连接进行汇总。)

last:查询最近的使用者登录时间。(例:last -n 10仅显示10行记录。)

lastb:显示最近登录系统失败的用户信息。

who:查询当前系统中登录的用户。(-H显示标题栏;-i显示空闲时间字段;-T显示用户状态;-m显示使用当前标准输入设备的用户;-q显示所有登录的用户名以及登录用户的数目;-p显示由init进程创建的活动进程。)

w:查看登录用户及其进行的操作。(-f显示登录用户信息,但不显示登录位置。-s以精简模式显示登录用户信息;-h不显示标题栏;w root只查询root用户的信息。)

4.5 其他用户和用户组管理的常用命令

finger:查找并显示用户信息。(finger -l显示用户信息。finger username显示特定用户的信息。)

groups:显示指定用户所属的用户组。(groups显示当前用户所属的用户组。groups username显示特定用户的用户组。)

id:显示用户的UID、GID。(id显示当前用户的UID、GID、和用户所属的组列表。id username显示特定用户的相应信息。-g显示当前组ID;-G显示用户所属的所有组ID;-u显示用户ID;-n显示名称而非数字;-r显示真实用户ID而非有效用户ID。)

logname:显示登录用户的用户名。

rwho:查看登录本地的用户信息。(与who类似,但可以显示局域网中多台主机的用户登录信息。当rwho命令在11分钟内没有收到主机的反馈信息,则会认为主机已关闭,也不会报告已知的登录用户。除非使用-a选项,否则忽略1小时内没有操作的用户。)

users:显示当前登录的用户。

write:将信息实时传递给登录的用户或终端。(例:write username<回车>this is message<回车><ctrl+d>。)

whoami:显示当前用户信息。

4.6 用户及用户组管理命令的综合应用

/etc/nologin文件:引起普通用户无法登录的问题。(通过touch /etc/nologin命令可以建立该文件。删除该文件可以解决普通用户不能登录的问题。ssh不查看/etc/nologin文件,所以即使该文件存在,使用ssh仍可以登录系统。)

第5章 磁盘管理

5.1 Linux磁盘分区工具

硬盘可以分成若干个分区,每个分区可视为独立的磁盘来使用。硬盘的分区方案被记录到“磁盘分区表”中,通常该表由4个部分组成,每个部分定义一个分区的信息,因此原始概念中一个硬盘最多只能建立4个分区,称为“主分区”。由于硬盘越来越大,4个分区已不无法满足用户的需要,为此引入“扩展分区”的概念。扩展分区由扩展磁盘分区表维护,可以把某个主分区作为扩展分区划分为若干更小的“逻辑分区”。理论上,硬盘空间足够时,可以建立任意数量的分区。

Linux上建议的分区有:swap分区,即虚拟内存;boot分区,存放操作系统的内核;根分区,整个操作系统的根目录;/var分区,可以避免日志文件的大小失控;/home分区,控制用户占用的空间大小。

磁盘分区工具有:

fdisk:强大的磁盘分区工具,不仅适合于Linux,在Windows及MS-DOS中也有广泛应用。-l显示当前设备的分区表。-s /dev/sda1显示指定分区的大小。-s /dev/sda显示设备所有分区大小的总和。-v显示fdisk的版本号。fdisk /dev/sda可以进入命令交互模式,内部命令包括m:显示命令帮助;p:显示当前分区表;q:退出;等等。)

parted:Linux下的磁盘分区与分区调整工具。parted /dev/sda可进入交互模式。

sfdisk:-l显示分区信息。-s显示磁盘或分区大小。

5.2 常用的磁盘管理命令

badblocks:检查设备坏块。(-s 显示检查进度。)

du:统计文件和目录占用的磁盘空间。(如果没有指定文件或目录名,则默认对当前目录进行统计。-s仅显示文件或目录占用的块数,默认一块等于1024字节。-b以字节为单位进行统计;-k以1024字节为单位;-m以1024K为单位;-c同时显示总计;-h按需显示K、M或G。-a显示所有文件及其子目录占用的数据块数。例:du ~tommy,统计tommy的主目录。)

df:显示文件系统磁盘空间使用情况。(不指定文件系统的话,则显示所有当前挂载的文件系统的可用空间。默认情况下空间以1KB为单位进行显示,除非环境变量POSIXLY_CORRECT被指定,此时以512字节为单位。-i以inode模式显示,列出的都为inode数量;-h以可读方式显示,按需显示K、M或G;-t type只显示指定文件系统的信息,如df -t ext3;-x type与-t相反,不显示指定的磁盘类型的磁盘。)

fdformat:格式化磁盘。(-n表示格式化完成后不进行验证。)

hdparam:显示和设定硬盘参数。(-C显示电源管理,-d 1开启DMA模式。例:hdparm /dev/sda1。)

mkfs:设置磁盘的文件系统。(例:mkfs -t ext4 /dev/sda2。)

mkswap:设置交换分区(swap area)。(例:mkswap /dev/hda4,将hda4指定为一个新式的交换分区。-c在创建交换分区前检查坏块;-v0建立一个旧式的交换区,-v1建立一个新式的交换区。)

mkisofs:建立ISO9660/JOLIET/HTS文件系统。(例:mkisofs -o myiso myfile把myfile制作为名为myiso的镜像文件。)

mkinitrd:创建ramdisk的镜像文件。(例:mkinitrd myfile.img 2.2.5-15建立名为myfile.img、内核号为2.2.5-15的镜像文件。ubuntu上不支持。)

mt:磁带驱动操作。(语法:mt operation device。操作有rewind、erase等。rmt命令是远端磁带传输协议模块,可以通过进程间通信,远程控制磁带机进行备份、恢复备份操作。)

mzip:弹出Zip/Jaz设备中的磁盘。(-e弹出磁盘;-f与-e同时使用强制弹出;-q查询状态。)

sync:将缓冲区内的数据写入磁盘。(在卸载移动硬盘前,可用sync把内存数据写入磁盘。)

rsync:远程同步。(例:rsync -av -e ssh /home/share/*.doc root@teacher.example.com:/usr/local/share通过ssh把/home/share下的所有doc文件备份到了teacher主机的/usr/local/share目录下。只同步修改过的文件和目录。-a:归档模式;-v:冗余模式。)

5.3 磁盘配额管理

/etc/fstab文件:定义分区的挂载方式。(文件格式为:<file system> <mount point>   <type>  <options>       <dump>  <pass>。例:/dev/sda1 / ext4 errors=remount-ro,user_xattr 0 1。要启用磁盘配额管理,则需要添加usrquota和grpquota选项,例:/dev/sda2 /mnt/disk ext4 defaults,usrquota,grpquota 0 1。更改该文件后,需要reboot或者重新挂载使得配置文件生效:mount -o remount /dev/sda2。注意,当新的分区建立后,需要使用mkfs指定该分区的文件类型,否则挂载时会出现找不到文件系统的错误。)

quotacheck:检查磁盘的使用空间与限制。(在修改/etc/fstab文件并添加usrquota与grpquota选项后,可以使用命令quotacheck -avugc来创建aquota.user和aquota.group这两个文件,其中-c表示重新创建配额文件,-a扫描在/etc/mtab文件中所有挂载的非NFS文件系统;-u计算每个用户占用的目录和文件数目,并创建aquota.user文件;-g计算每个用户组占用的目录和文件数目,并创建aquota.group文件;-v显示命令执行过程。/etc/mtab与/etc/fstab内容类似,/etc/fstab表示系统开机时默认加载的分区,而/etc/mtab表示目前系统加载中的分区。创建出来的aquota.user和aquota.group文件位于启用usrquota和grpquota选项的分区所挂载的位置,如/mnt/disk。)

edquota:对用户或用户组设置磁盘配额。(aquota.user和aquota.group文件太复杂,无法直接编辑,只能用edquotaa命令编辑。-u username设置用户的磁盘配额,-g groupname设置用户组的磁盘配额。默认情况下-u被使用。文件格式为:Filesystem blocks soft hard inodes soft hard,其中bolocks为用户已使用的空间,以块为单位,一块为1024字节,相应的inodes为已使用的i结点数。soft为软限制,当用户达到此限制时,系统会发出警告信息,但用户仍然可以继续使用;hard为硬限制,到达此限制时用户就无法写入了。前面的soft、hard对应block的软、硬限制,而后面的soft、hard对应inode的软、硬限制。-p复制配额设置,如edquota -p usr1 -u usr2 usr3;-t设置软时间限制。)

quota:显示磁盘已使用的空间与配额限制。(-u查看用户,为默认选项;-g查看用户组。)

quotaoff:关闭磁盘空间限制。(-a关闭所有在/etc/fstab列出的磁盘配额;-g用户组配额;-u用户配额;-p列出状态。)

quotaon:启动磁盘空间配额限制。(语法与quotaoff一样。)

quotastats:显示磁盘空间的限制。

repquota:对文件系统的磁盘配额情况进行统计。

5.4 逻辑卷管理(LVM)

LVM中相关的定义有:

物理卷(Physical volume,PV)相当于硬盘驱动器的一个标准主分区或逻辑分区;

物理盘区(Physical extent,PE)就是一块磁盘空间。物理卷被划分成多个同等大小的PE;

逻辑卷(Logical volume,LV)是LE的集合;

逻辑盘区(Logical extent,PE)和一个PE相对应,大小相同;

卷组(Volumn group,VG)是LV的集合。

pvdisplay:查看组成LVM卷的物理卷。

pvcreate:创建物理卷。(可以在硬盘上或其中某个分区上创建。)

vgcreate:创建卷组。(例:vgcreate myvolumn /dev/sdd1 /dev/sdc2。其中sdd1和sdc2都为物理卷。)

vgextend:在卷组里添加一个新的物理卷。(例:vgextend myvolumn /dev/sdd3。)

lvdisplay:查看逻辑卷。

lvcreate:创建一个逻辑卷。(例:lvcreate -l 50 myvolumn -n mylogical创建一个/dev/myvolumn/mylogical的新设备,可以用于挂载:mkfs -j /dev/myvolume/mylogical,mount -t ext3 /dev/myvolumn/mylogical /mnt/mynewdisk。-l 50表示大小为50个PE,每个PE大小可能为4.0M,而-L指定LV的size。-n指定LV的名字。)

lvextend:扩展逻辑卷。(如果有多余的PE,可以扩展逻辑卷的大小。例:lvextend -L 800M /dev/myvolumn/mylogical。)

第6章 文件和目录管理

6.1 Linux文件系统的组织方式称作文件系统分层标准(Filesystem Hierarchy Standard,简称FHS),即采用层次式的树状目录结构,此结构的最上层是根目录“/”。Linux文件名最长允许256个字符,文件名没有扩展名的概念,对大小写敏感。

6.2 系统的默认安装目录
/
:Linux文件系统的最上层目录,其他所有目录均是该目录的子目录;
/bin:Binary的缩写,存放用户的可执行程序,如cp和mv等,也存放Shell,如bash和csh。不应把该目录放到一个单独的分区中,否则Linux Rescue模式无法使用这些命令;
/boot:操作系统启动时所需的文件,包括vmlinuz和initrd.img,这些文件若是损坏常会导致系统无法正常启动,因此最好不要做任意改动;
/dev:设备文件目录,如/dev/sda表示第一块SCSI设备,/dev/hda表示第一块IDE设备;
/etc:有关系统设置与管理的文件,包括密码、守护程序以及X-Window相关的配置。可以通过编辑器(如vi、gedit等)打开并编辑相关的配置文件;
/etc/X11:X-Window System的配置目录;
/home:普通用户的主目录或FTP站点目录,一般存放在/home目录下;
/lib:存放共享函数库(library);
/mnt:文件系统挂载点(Mount),例如光盘的挂载点可以是/mnt/cdrom,软盘的挂载点可以是/mnt/floppy,Zip驱动器为/mnt/zip;
/opt:该目录通常提供给第三方较大型的应用程序使用,如Sun Staroffice、Corel WordPerfect,这可避免将文件分散至整个文件系统;
/proc:保存目前系统内核与程序执行的相关信息,与利用ps命令看到的内容相同。例如/proc/interrupts文件保存了当前分配的中断请求端口号,/proc/cpuinfo保存了当前处理器信息;
/root:根用户的主目录;
/sbin:System Binary的缩写。此目录存放的是系统启动时所需执行的系统程序;
/tmp:temporary的缩写,用来存放临时文件的目录;
/usr:存放用户使用的系统命令和应用程序;
/usr/bin:存放用户可执行的程序,例如OpenOffice的可执行程序;
/usr/doc:存放各种文档的目录;
/usr/include:存放C语言用到的头文件;
/usr/include/X11:存放X-Window程序使用的头文件;
/usr/info:存放GNU文档的目录;
/usr/lib:函数库;
/usr/lib/X11:存放X-Window的函数库;
/usr/local:提供自动安装的应用程序位置;
/usr/man:存放在线手册的目录;
/usr/sbin:存放用户经常使用的程序;
/usr/src:保存程序的源文件的目录,一般系统内核源码存放在/usr/src/linux目录下;
/usr/X11R6/bin:存放X-Window的可执行程序;
/var:Variable的缩写,存放包括日志、邮件等经常变化的文件。由于/var目录的大小经常变动,为了防止失去控制而侵占其他目录所需要的空间,建议将/var安装到一个独立的分区上。

6.3 设备文件

Linux下使用的设备如本地磁盘、网络文件系统、CD-ROM、U盘等都被识别为设备文件。当对设备文件进行I/O操作时,该操作会转给相应的设备驱动程序。一个设备文件用主设备号(指出设备类型)和从设备号(指出是该类型的第几个设备)来表示,可以通过mknod命令进行创建。典型设备文件有:
/dev/hda:第一个IDE接口的Master硬盘;
/dev/hdb:第一个IDE接口的Slave硬盘;
/dev/hdc:第二个IDE接口的Master硬盘;
/dev/hdd:第二个IDE接口的Slave硬盘;
/dev/sda:第一个SCSI接口的Master硬盘;
/dev/sdb:第一个SCSI接口的Slave硬盘;
/dev/sdc:第二个SCSI接口的Master硬盘;
/dev/sdd:第二个SCSI接口的Slave硬盘;
/dev/cdrom:光驱;
/dev/fd0:第一个软盘。

6.4 文件系统的类型

Linux兼容性很高,除了能够挂载各种类型的设备,还可以挂载其他各种文件系统。文件/proc/filesystem列出了系统当前可用的文件系统类型,其中不仅包括Unix支持的各种文件系统类型,也包括Windows文件系统。Linux支持的文件系统类型包括:
adfs:acron磁盘文件系统,是在RiscOS操作系统中使用的标准文件系统;
befs:BeOS操作系统使用的文件系统;
cifs:通用Internet文件系统(Common Internet File System,简写为CIFS),用于访问符合SNIA CIFS标准的服务器。CIFS对SMB协议进行改进和标准化(SMB协议可用于在Linux和Windows之间共享文件),是一种虚拟文件系统;
ext:ext文件系统的第一个版本,现在已经很少使用;
ext2:专门为Linux系统设计的文件系统,具有速度快和CPU占用率低等选特点。既可以用于标准的块设备,也可以应用到移动存储介质上。ext2不包括日志功能;
ext3:与ext2相比包含了日志功能,维护了最近更改的源数据(和文件有关的信息,包括权限、所有者、创建时间、访问时间等)的记录,如果源数据由于非法关机等原因遭到破坏,文件系统将不能正常工作。通过ext3的日志系统,可以对源数据进行适当的恢复。此外,ext3的日志功能可使硬盘读写头的移动达到最佳化;
iso9660:从High Sierra(CD-ROM使用的最初标准)发展而来的文件系统,是CD-ROM的标准文件系统;
kafs:AFS客户端文件系统,用于分布式计算环境,可与Linux、Windows和Macintosh客户端共享文件;
minix:最初用于Unix的minix版本,只支持长度为30字符以下的文件名;
msdos:MS-DOS、Windows和OS/2使用该文件系统,不支持长文件名,主要用于挂载Micorsoft操作系统生成的软盘;
vfat:Microsoft扩展FAT(VFAT)文件系统,支持长文件名,可被Windows9x/2000/xp使用;
umsdos:扩展的MS-DOS文件系统,不仅支持长文件名,还保持了对UID/GID、POSIX权限和特殊文件(如管道、设备)的兼容;
proc:基于内存的伪文件系统,不占用外存空间,只是以文件的方式为访问Linux内核数据提供接口。由于proc文件系统是虚拟的,所以无需挂载。用户和应用程序可以通过/proc得到系统的运行信息,并可以改变内核的某些参数;
reiser:reiserfs日志文件系统;
swap:用于交换分区,是系统虚拟内存的一部分;
nfs:网络文件系统(Network FileSystem,简写为NFS)类型;
hpfs:用于只读挂载OS/2 HPFS文件系统;
ncpfs:Novell Netware文件系统,可以通过网络挂载;
affs:Amiga计算机使用的文件系统;
ufs:Sun Microsystems操作系统(即Solaris和SunOS);
xfs:一种在高性能环境中很有用的日志文件系统,支持完整的64位寻址;
fs:JFS主要适合于企业系统,是为大文件系统和高性能环境而设计的;
xiafs:与minux文件系统相比,这种文件系统支持长文件名和更大的i节点;
coherent:System V使用的文件系统类型;
smb:支持SMB协议的网络文件系统,可用于实现Linux与Windows系统的文件共享。

6.5 文件系统的组成

ext3文件系统将磁盘分为4个块:
块0为引导块,包含系统启动程序的磁盘区块;
块1为超级块,主要用来记录文件系统的配置方式,其中包括i节点数量、磁盘区块数量、未使用的磁盘区块以及i节点表、空闲块表在磁盘中存放的位置。由于超级块保存了非常重要的文件信息,所以系统保存了超级块的冗余。fsck等命令修复文件系统时,实际上就是对超级块进行恢复操作。
块2存放i节点(i-node,index-node)表,记录文件大小、用户UID、用户组GID、文件存取模式(包括读、写或执行)、链接数目、文件最后修改时间、磁盘区块地址、间接区块等。
块3为数据存储块,存放文件内容。

文件有两种不同的组织方式:
逻辑结构:面向用户的,用户可以看到的表示文件内容的字符流。
物理结构:文件在磁盘上的存储方式,涉及具体的存放磁盘区块。用户看到的文件内容是连续的,但实际上文件可能并不是连续的方式存放在磁盘上的。事实上,大于1块(block)的文件将被分散地存放在磁盘上。i节点表帮助实现这种物理结构到逻辑结构的转换。

i结点是一个64字节长的表,表中包含了文件的相关信息和磁盘地址表。磁盘地址表中有13个块号。前10个块号是文件前10块的存放地址,文件根据块号在磁盘地址表现中出现在的顺序依次读取相应的块。当文件长度大于10个块,将会用到后面的3块所给出的间接地址块。磁盘地址表中的第11块给出了扩展块的位置,这个块号指出的块中含有256个块号,加上前10块文件长度为266块(272384字节)。如果文件大于266块,再启用磁盘地址表的第12块所定义的扩展块。当文件大于266+256x256块时,再启用第13个扩展块,这时文件所占的块数为266+256x256+256x256x256。

文件系统采用一对一映射的方法来实现文件名到i节点的转换。目录实际上是一个含有目录表的文件,对于目录中的每个文件,在目录表中都会有一个入口项,入口项中含有文件名和与文件相应的i节点号。df -i查看系统中节点的大小与数量。ls -i可以查看文件的i-node编号。

6.6 文件的类型

命令ls -l可以查看文件的详细信息,其中在行首的字符串包含文件的类型与权限信息,如:-rw-r--r--,首字母表示的就是文件的类型。文件可以分为:
普通文件:文件类型标识位为-,如-rw-r--r--。包括源程序文件、脚本文件、可执行程序文件以及各种数据文件。
目录文件:文件类型标识位为d,如drwxrwxrwt。目录实际上是特殊的文件,可以包含文件和子目录。
套接字文件:文件类型标识位为s,如srwx-------。Linux文件系统可以通过套接字文件实现网络通信。
命名管道:文件类型标识位为p,如prwx------。文件系统通过命名管道文件可以实现进程间的通信。
设备文件:设备文件分两类:字符设备和块设备。字符设备文件类型标识位为c,包括打印机,键盘等。块设备文件类型标识位为b,包括磁盘磁带等。
链接文件:文件类型标识位为l,包括硬链接和软链接。

6.7 文件和目录的权限

文件和目录的权限共分为5类:

符号表示八进制表示含义
-0没有权限
r4读权限
w2写权限
x1执行权限
s、S、t、T 特殊权限

命令ls -l可以查看到权限信息,如-rwxrw-r--表示该文件为普通文件,文件所有者的权限为rwx,即可读可写可执行;同组用户的权限为rw-,即可读可写;其他用户权限为r--,即只读。

文件权限可以用八进制表示,如rwx权限可以表示为4+2+1=7;rw-权限可以表示为4+2+0=6;r--权限为4+0+0=4。所以权限rwxrw-r--也可以表示为764。

除读、写、执行权限外,文件系统还有类特殊权限,包括set-UID、set-GID和粘滞位(sticky)。set-UID对应值为4,表示如果该文件是可执行的,则运行该文件的用户将在程序运行期间拥有与该文件的所有者相同的权限;set-GID对应值为2,表示如果文件是可执行的,则运行该文件的用户会在运行期间拥有与该文件的用户组相同的权限;粘滞位(sticky-bit)对应值为1,表示该文件如果是可执行的,一旦被装载进内存就一直驻留在内存。

权限相关的命令有:

chmod:权限设置与修改。(可以用八进制模式,如chmod 764 ABC.exe,或者以字符模式,如chmod u+x ABC.exe表示给文件的文件所有者增加执行权限。其中u、g、o、a分别表示文件所有者、组用户、其他用户和全部用户。+、-、=分别表示增加、减少和指定权限。设置特殊权限只能用八进制模式,利用4位八进制数的第一位来设置,如chmod 4777表示特殊权限为set-UID,即4,后三位表示所有者、组和其他用户的权限。-R以递归方式更改所有的文件和子目录。-c只在有更改时才显示结果。-v显示全部信息。)

umask:设置文件或目录的默认权限。(通常新建文件的默认权限为0666,新建目录的默认权限为0777。掩码可以改变权限,如umask 0022,则新建文件的权限为0666-0022=0644,而新建目录的权限为0777-0022=0755。)

setfacl:设置访问控制列表ACL。基于用户和用户组的权限机制有些不足,无法为用户组中的个别用户设定不同的权限。为此,访问控制列表ACL被引入到系统中,它支持ext3文件系统、NTFS文件系统以及SMB文件系统。在使用acl前,需确保设备以ACL方式挂载:mount -o acl /dev/sda1 /mnt/mydisk。此后便可以用setfacl -m u:myuser:rw myfile的方式为个别用户指定权限。setfacl -x u:myuser myfile可以删除权限。setfacl -d g:rw myfile设定默认的权限。)

6.8 创建Linux文件系统

mkfs:创建文件系统。(为磁盘分区指定文件系统,如mkfs -t ext3 /dev/hda4。)

mkbootdisk:建立目前系统的启动盘。(如mkbootdisk --device /dev/fd0 2.4.2.20-8在软盘/dev/fd0上创建内核版本号为2.4.20-8的启动盘。)

6.9 修复受损的文件系统

fsck:检测文件系统并尝试修复错误。(在正被挂载的文件系统上使用fsck可能会造成文件系统的严重损坏。)

e2fsck:检查ex2文件系统。

6.10 mount与umount命令

mount:挂载。(mount显示已挂载的文件系统。mount /dev/fd0 /mnt/floppy挂载软盘。mount -t iso9660 /dev/cdrom /mnt/cdrom挂载光盘。mount -t vfat /dev/sdb /mnt/flash挂载U盘。

umount:卸载。(不能卸载根分区。)

eject:卸载并弹出光盘。

6.11 其它文件和目录管理常用命令

常用的通配符有:
*:代表文件中任意长度的任意字符。比如ls n*w可以匹配文件new。
?:代表文件中的任一个字符。比如ls n?w可以匹配new。
[…]:匹配任意一个中括号中的字符,中括号里可以是一个用破折号分割的字母或数字范围。比如ls n[1-9]w可以匹配n3w。
{…}:逐一匹配括号里的字符串。比如ls n{ew,ow}2 可以匹配new2与now2。

attr:XFS文件系统对象的扩展属性。(XFS文件系统是SGI开发的高级日志文件系统。)

basename:显示文件或目录的基本名称。如basename /home/tommy显示tommy。该文件或目录未必存在。

cd:改变目录。

cp:复制文件。(例:cp srcfile destfile。-b如果目标文件已存在,则以备份形式保存,在文件名后加上“~”;-r复制所有子目录与子文件;-f强制执行;--suffix=@指定目标文件名的后缀为@。)

chattr:改变文件的属性。(用法:chattr [-RVf] [-+=AacDdeijsSu] [-v version] files...。+添加属性,-删除属性,=设置属性。lsattr可以查看文件属性。各属性的意义:
A:不修改时间。
a:文件只能以追加模式写入,根用户拥有设置或清除该属性的权限。
c:自动进行压缩。
D:对目录的修改会直接同步写入磁盘,该属性等同于dirsync命令。
d:使用dump命令时,不对具有该属性的文件进行备份。
E:表明压缩存在错误。
I:目录被Hash树索引。
i:文件不可被修改、删除、重命名、建立链接或写操作。
j:在向文件执行写入操作时,先记录日志。
s:安全删除文件,文件块被清零并写回磁盘。
S:当文件被修改时,将修改写入磁盘,等同于sync命令。
T:具有该属性的目录将被移到目录树的最顶层。
t:文件在进行合并时,不会留有碎块。
u:当文件被意外删除时,可以恢复。
X:压缩文件可以被直接访问。
Z:压缩文件损坏。)

cksum:文件的CRC校验。

chown:改变所有者。(chown username file只改变文件的所有者,如果chown groupname:username file的方式,可以同时改变组和用户,冒号或点号都可以作为分隔符。如果是chown groupname: file的形式,则只改变用户组。)

chgrp:更换用户组。

dirname:显示文件的除名字外的路径。

fold:自动换行以适应指定列宽。(fold -w 5 file以每行至多5列的方式打印文件。)

find:查找目录或文件。(-name string:找文件名包含字符串的文件;-user username:找属于用户的文件;-group groupname:找属于用户组的文件;-type x:找类型为x的文件,其中b为块设备文件、c为字符设备文件、d为目录文件、p为命名管道文件、f为普通文件、l为符号链接文件、s为socket文件;-follow跟踪符号链接文件到所指向的文件。)

file:显示文件类型。(例:file *显示当前目录下所有文件的类型。)

filterdiff:从diff文件中提取或去除差异。

findfs:通过卷标或UUID查找文件系统。(例:findfs LABEL=/。)

locate:定位文件或目录。(从数据库/var/lib/slocate中查找文件,该数据库一般一天更新一次,所以最新新增或删除的文件可能会找不到。由于是从数据库而非硬盘中查找,所以比find快上许多。)

ls或dir:列目录。(-a显示以.开头的隐藏文件;-A显示包括.和..的所有文件;-F显示文件类型的指示符号,.表示隐藏文件、/表示一个目录、*表示一个可执行文件、@表示符号链接文件、|表示管道文件、=表示socket文件;-l使用长格式列出信息;-R列出所有子目录;-x逐行列出项目;-1每行只列一个文件。ll为ls -asF的别名。)

ln:链接文件或目录。(-s符号链接。)

lndir:建立到目录的符号链接。(例:lndir source dest把source文件夹下的所有文件生成在dest文件夹下相应的符号链接。)

lsattr:显示文件属性。(-a显示所有目录和文件;-R显示子目录的内容。)

mkfontdir:创建x字体文件目录。(对指定的目录搜寻所有的字体文件,并生成文件fonts.dir,供X服务器和字体服务器使用。)

msginit:初始化消息目录。(关于本地化,即翻译。创建PO文件。更多内容参考http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/。)

msggen:创建英语消息目录。(输入文件名是最近创建的英文PO文件或PO模板文件,通常由xgettext创建。未翻译的记录会被填上和msgid一样的字符串,并标记为模糊。)

msgcomm:匹配消息。(在两个或多个指定PO文件中找出共同的信息。)

msgcat:合并消息。(连接和合并指定的PO文件。)

mkdir:创建目录。(-m设定权限,类似于chmod;-p需要时创建上层目录。)

mv:移动或更名现有的文件和目录。

mattrib:修改或显示MS-DOS文件的属性。(模拟MS-DOS的attrib命令,+/-打开或关闭属性,属性有a:归档位,被备份程序用来标识一个文件是不是新文件;r:只读位,标识只读文件;s:系统位:标识操作系统文件;h:隐藏位,使文件在目录中不可见。-/列出包含所有子目录的文件属性;-X简明方式,列出属性,不含任何空格。

mc:可视化文件管理程序。(可以用鼠标操作。)

mcopy:复制MS-DOS文件到UNIX或从UNIX复制MS-DOS文件。

md5sum:计算和检测MD5信息摘要。(MD5是一种哈希值。例:md5sum file。)

mdel:MS-DOS文件删除。

mdir:显示MS-DOS目录。

mktemp:建立暂存文件。(该文件可供Shell脚本安全地使用。)

mmove:移动MS-DOS文件。

mren:更改MS-DOS文件名称。

mshowfat:显示分配给文件的FAT簇信息。

mtools:显示mtools支持的命令。

mtoolstest:测试并显示mtools的相关设置。

paste:对文件进行纵向合并。(例:paste file1 file2分别把两个文件中的各行合并输出到标准输出上。-s以串行方式输出两个文件。-d指定合并行的分隔符。)

rcp:远端复制文件或目录。(例:rcp teacher@192.168.20.122 /home/src/patch /home/src。)

rm:删除文件或目录。(-r递归删除;-f强制删除;-i删前确认;-d:删除可能仍有数据的目录。)

rmdir:删除空目录。(-p删除路径中所有的空目录。)

slocate:安全查找文件或目录。(从其自己建立的数据库中查找。与locate一样。)

split:切割文件。(cat合并文件,split切割文件。-l指定每个文件包含的行数,默认为1000。-b指定每个文件的字节数;-C指定每个文件的大小,可用b、k、m作为单位。)

stat:显示inode内容。(-f显示文件系统状态而不是文件状态。-L跟随链接。-t以简洁格式显示信息。)

scp:远程复制文件。(在网络中不同主机之间复制文件。例:scp -v root@192.168.20.122:/root/test yang@192.168.20.123:/home/my/。-4强制使用IPv4协议;-6强制使用IPv6协议。-P指定端口号。)

sum:计算文件的校验码。

tmpwatch:删除临时文件。(例:tmpwatch 100 /tmp/删除/tmp目录下100小时内没有使用的文件。-u基于文件的访问时间删除文件,默认值;-m基于文件的修改时间删除文件;-c基于文件i节点的修改时间删除文件,默认值;-a删除所有文件,不仅是常规文件和目录;-d不删除目录;-f强制删除;-t不删除文件,仅测试;-s删除文件之前使用fuser命令检测文件是否正在被使用。-v冗余模式,具有2能冗余,即连续两个-v选项。)

touch:更新文件或目录时间。(如果文件不存在,则创建。-a更改存取时间;-c不创建任何文件;-d使用指定时间而非当前时间;-F sec时间提前sec秒;-m只更新变动的时间;-r使用指定文件的时间属性而非目前的时间;-t stamp使用[[CC]YY]MMDDhhmm[.ss]格式的时间而非目前的时间。)

tree:以树状图显示目录内容。

which:查找文件。(查找范围由环境变量$PATH设置,如which ls。)

lsof:查看正在被程序使用的文件。(lsof | grep 文件系统的挂载点可以找出某设备正在被哪个程序使用。)

blkid:查询设备上采用的文件系统类型。(可以找出UUID和type,如blkid /dev/sda2。)

debugfs:恢复已删除的文件。(首先需卸载要恢复文件的分区,再用命令debugfs /dev/sda1进入交互模式,交互模式中ls可查看文件,可以看到“<文件信息节点编号>”的文件,使用dump <编号> file把删除的文件恢复到file里。)

第7章 备份与压缩

一般需要备份的目录有/etc:系统配置文件存放的目录;/home:用户的目录空间;/root:根用户的主目录;/var:日志、邮件、打印机队列等存放的目录;/var/www:www服务器使用的目录;/var/ftp:ftp服务器使用的目录。

tar:压缩与解压。(tar -cvf mytar.tar file1 file2 file3创建压缩文件;tar -xvf mytar.tar解压;tar -tf mytar.tar查看包的内容;tar -rvf mytar file4向包里添加新文件;-z生成gz包,-zcvf、-ztf、-zxvf分别进行压缩、查看和解压。-h不归档链接文件,直接归档指向的源文件。-f仅对变化的文件进行更新。)

gzip:生成gz压缩包。(有较高的压缩率,但只能打包单个文件,无法把多个文件打包进同一个包里。例:gzip file1 file2生成file1.gz和file2.gz。gzip -l查看压缩包里的内容。-S .suffix可以指定后缀名而非默认的.gz。)

gunzip:解压gz包。

zcat:显示压缩文件的内容。

zip:生成zip压缩包。(例:zip myzip.zip fil1 fil2 fil3. -r连同子目录里的文件一并进行压缩,默认只将目录名放入压缩包. -j忽略子目录.-k使用8.3命名格式对压缩的文件进行命名.-n直接放入压缩包,而不进行压缩,例:zip -n .JPG : .GIF files.zip *,文件类型之间用冒号分隔.-@允许从标准输入设备读入文件名,以ctrl+d结束.-x指定排除在压缩包之外的文件. -t yymmdd把在指定时间之后创建的文件进行压缩. -1..-9指定压缩率,-1最低,-9最高,默认为-6. -y在打包符号链接文件时保持其链接属性,默认为打包其指向的源文件. -m 生成压缩文件后,自动删除源文件.)

unzip:解压缩zip包. (-x排除不需解压的文件. -Z以zipinfo格式显示压缩文件内的信息; -l以简略格式列出压缩文件的基本信息; -L将文件名全部改为小写,并添加"^"前缀,以防zip文件是从不区分大小写的系统中创建的.)

zipinfo:显示压缩文件信息. (-1只显示文件名. -2显示文件名,标题,注释,尾注等. -h显示标题行, -T显示时间设置, -v冗余模式, -z显示注释, -x排除文件, -s以短格式显示, -m以中等格式显示, -l以长格式显示.)

bzip2:使用Burrows-Wheeler块分类文本压缩算法压缩文件,并用Huffman进行编码.只对单个文件进行压缩.

bunzip2:解压缩bz2文件.

bzip2recover:恢复损坏的bzip2文件.

dump:制作备份. (-0~-9设置dump级别,0表示备份所有文件,1~9表示增量备份,不为0的等级表示仅对上次同等级或更低级别的备份后修改过的文件进行备份.例dump -0uf /dev/tape /dev/hda1把第一个IDE硬盘的第一个文件系统完全备份到磁带机上.)

restore:恢复备份. 

compress:使用Lempel-Ziv算法压缩成.Z文件.

uncompress:解压.Z文件.

ar:从归档文件中建立,修改或提取文件. (ar mylib a.o b.o生成静态库.-d删除.-p显示归档文件的内容.)

cpio:备份文件. (与tar相似,不仅支持分卷备份,还可以跳过磁带的坏区. -o从标准输入设备读入文件名,-i用于恢复备份. 例ls *.txt | cpio -o > backup_txt备份,cpio -i < backup_txt恢复.)

dd:磁盘复制命令. (例:dd if=abc.doc of=abc.doc.bak.)

cp /dev/fd0 镜像文件名:制作软盘镜像. (例cp /dev/fd0 /home/backup/myfloppy.img,生成的镜像可直接挂载到文件系统上:mount -o loop myfloppy.img /mnt/floppy_img.)

cp /dev/cdrom 镜像文件名:制作光盘镜像. (例cp /dev/cdrom mycdrom.iso.)

cdrecord:将镜像刻录到光盘. (例:cdrecord -v speed=8 dev=0,0 mycdrom.iso)

mkisofs:把文件或目录制作成光盘镜像. (例:mkisofs -r -o mybackup.iso /home/backup, 镜像文件同样可以挂载:mount -o loop mybackup.iso /mnt/backup.)

lha:压缩或解压缩.lhz文件. (a 压缩文件, x解压缩.)

unarj:解压.arj文件.

第8章 网络管理与相关应用

网络按地理覆盖范围可分为:
局域网(LAN):覆盖地区范围较小,一般连接距离在几公里以内,最大距离不超过10公里.IEEE的802标准委员会按介质访问方式定义了多种局域网,主要包括:以太网(Ethernet), 令牌环网(Token Ring), 光纤分布式接口网络(FDDI), 异步传输模式网(ATM)以及无线局域网(WLAN).
城域网(MAN):连接距离可以在10~100公里.多采用ATM技术做为骨干网. ATM采用固定长度(53字节)的"信元交换"技术来替代传统的"包交换"技术.ATM没有共享介质或包传递带来的延时,因此非常适合音频和视频数据的传输,但ATM需要专门的软硬件,部署成本相对比较高.
广域网(WAN):也称远程网,可以跨越城市,地区,国家甚至洲际,地理距离从几百公里到几千公里.通常以连接不同地域的大型主机系统或局域网为主要目的.比较典型的广域网应用如中国移动的网络运营系统.
互联网(Internet):对称"因特网",是世界上最大的计算机网络.互联网通过统一的TCP/IP协议将全球的计算机网络连接起来.

拓扑结构可分为:
星型拓扑结构:局域网中最普遍的一种结构,各个网络节点通过点对点方式连接到中央节点上. 具有容易实现,易扩展,维护方便,传输数据快等优点,但同时也存在设备成本高,可靠性较低,资源共享能力差等不足.
总线拓扑结构:采用一根总线作为传输介质,所有设备都直接与总线相连. 总线上的信息多以基带形式串行传递,传递方向总是从发送信息的节点开始向两端扩散,因此采用总线拓扑的网络双称为广播式计算机网络. 所有的工作站和服务器都连接到总线上,无中心节点,各个节点的地位是平等的.由于各节点是共用总线带宽的,所以在传输速度上会随着接入网络的节点的增多而下降. 总线拓扑结构具有组网费用低,可靠性高,易扩展等优点,但由于共享总线,一次仅能允许一个节点发送数据,其他节点必须等待总线空闲后才能发送,因此存在数据传输率较代,总线负担过重等问题. 而且该类型的网络一旦发生连接错误,维护和检测都很不方便.
环型拓扑结构:一般仅适用于IEEE802.5的令牌网(Token ring network).在这种网络结构中,所有节点首尾相接,连接成一个闭环,整个网络发送的消息就是在这个环中传递.网络中的节点若想发送信息,必须获得"令牌","令牌"会在环型连接中被依次传递. 传送的数据要经过每个节点,如果有一个节点出现故障,将会造成整个网络的瘫痪.同时,环型拓扑结构中对故障节点的定位较难,维护起来非常不便.环路上各节点都是自举控制,因而控制软件简单,但环路必须闭合才能正常工作,这使得该网络不便于扩充.令牌网一般由同轴电缆或光纤组成.
混合型拓扑结构:从星型结构和总线型结构演变而来,即各交换机连接在一根总线上,而交换机下的子交换机或终端机形成星型结构. 既突破了星型网络在传输距离上的局限,又解决了总线型网络在连接节点数量上的限制.但是,由于混合拓扑继承了总线型网络拓扑结构的特点,同样存在较难维护的问题.

网络体系结构有两个主要的参考模型:

OSI/RM参考模型: 开放系统互连参考模型. 是ISO在网络通信方面所定义的连接异种计算机的开放协议标准. 整个OSI/RM模型共分为7层,从下往上依次为:物理层(二进制传输),数据链路层(接入介质),网络层(寻路),传输层(端到端连接),会话层(进程之间通信),表示层(定义表示数据的方法)和应用层(处理用户的网络应用). 第1~3层属于通信子网的范畴,第5~7层属于资源子网的功能范畴,第4层是中间层,连接上下3层. 当接收数据时,数据自下而上传输,当发送数据时,数据自上而下传输. 每一层在逻辑上能够直接与远程计算机系统的相应层直接通信. 为构建这种层次间的逻辑连接,需要发送端在每一层都要在数据报文前增加报文头. 该报文头只能被远程计算机的相应层识别和使用. 接收端接收到报文后会删去报文头,每一层都删去该层负责的报文头,最后将数据传递给相关的应用程序.

各层功能如下:
物理层: 位于整个OSI参考模型的最低层,主要任务是为上一层的数据链路层提供一个物理连接,透明地传送比特流. 物理层建立在物理介质上, 提供机械和电气接口,包括电缆,物理端口以及附属设备.
物理层提供的服务包括:物理连接,物理服务数据单元顺序化(接收物理实体收到的比特顺序,与发送物理实体所发送的比特顺序相同)和数据电路标识.
数据链路层: 建立在物理传输能力的基础上,用于在两个相邻节点间的链路上无差错地传送以帧(Frame)为单位的数据. 数据链路层的主要任务就是进行数据封装和数据链接的建立. 封装的数据信息由4部分组成,其中地址段含有发送节点和接收节点的地址,控制段用来表示数据链接帧的类型,数据段包含实际要传输的数据,差错控制段用来检测传输中出现的帧错误. 数据链路层可使用的协议有SLIP, PPP, X25和帧中继等. 常见的集线器和低档的交换机以及Modem之类的拨号设备都是工作在这个层次上的. 工作在这个层次上的交换机通常被称为"第二层交换机".
数据链路层的功能包括: 数据链路连接的建立与释放, 构成数据链路单元, 数据链路连接的分裂, 定界与同步, 顺序和流量控制, 差错的检测和恢复等.
网络层: 属于OSI中的第3层,解决的是网际的通信问题, 即选择合适的路由和交换节点,透明地向目的节点交付发送节点所发送的分组. 网络层主要功能是寻路,即选择到达目标主机的最佳路径,并沿该路径传送数据包. 除此以外, 网络层还具有流量控制和拥塞控制的功能.较高档的交换机也可直接工作在这个层次上,通常称为"第三层交换机".
网络层的功能包括:建立和拆除网络连接,路径选择和中继,网络连接多路复用,分段和组块,服务选择和传输以及流量控制.
传输层:在两个节点之间建立通信信道,主要解决的是数据在网络之间的传输质量问题. 传输层提供两端点之间可靠,透明的数据传输,执行端到端的差错控制,顺序控制和流量控制,管理多路复用和解复用. 传输层是计算机通信体系结构中关键的一层,主要涉及的是网络传输协议,如TCP协议.
传输层的功能包括:映像传输地址到网络地址,多路复用与分割,传输连接的建立与释放,分段与重新组装,组块与分块.
会话层:提供面向通信的逻辑用户接口. 会话可能是一个用户通过网络登录到一个主机,或一个正在建立的用于传输文件的连接.
会话层的功能主要有:会话连接到传输连接的映射,数据传送,会话连接的恢复和释放,会话管理,令牌管理和活动管理.
表示层: 主要解决用户信息的语法表示问题, 如用于文本文件的ASCII和EBCDIC表示形式. 如果通信双方用不同的数据表示方法,彼此之间就不能互相理解.表示层就用于屏蔽这种不同之处.
表示层的主要功能有:数据语法转换,语法表示,连接管理,数据加密和数据压缩.
应用层
:OSI参考模型的最高层,直接面对用户的具体应用.应用层包含用户应用程序执行通信任务所需要的协议和功能,如电子邮件和文件传输等应用.

在7层网络中,第1,2层处理网络信道问题,第3,4层处理传输服务问题,第5,6,7层处理应用服务问题.

TCP/IP参考模型:与OSI参考模型不同,TCP/IP模型更侧重于互联设备间的数据传送,而不是严格的功能层次划分,因而为协议的具体实现留下很大余地. TCP/IP参考模型分为4层:
网络接口层(Network Interface Layer): 也称TCP/IP链路层, 对应于OSI的物理层和数据链路层, 与Ethernet(以太网), Token ring(令牌环网)以及ATM(异步传输模式)等网络接入技术密切相关.
网络层(Internet Layer):对应于OSI的网络层,与IP协议(即Internet Proctocol网际协议)密切相关.把来自传输层的报文分级封装在IP数据报(Datagram)中,然后按路由选择算法将数据报发送到相应的网络接口. 与此同时, 网络层还要接受下层递交过的数据报,校验数据报的有效性,删除报头,使用路由选择算法确定该数据报应该由本地处理,还是转发出去.
网络层另一个重要的协议是ICMP(Internet Control Message Protocol),即网际控制报文协议.该协议与ping命令联合使用,可以查看当前计算机节点与本地网络上其他节点的连通性.
传输层(Transport Layer): 对应OSI的传输层. 提供应用程序之间端到端的通信. 传输层将要发送的报文或数据流分成更小的段,即报文分组(Packet),然后把每个报文分组连同报文目的地址一并递交给网络层.与此同时, 传输层也接收来自下层的报文分组,重组成完整的报文或数据流.
传输层主要包括TCP(Transmission Control Protocol, 即传输控制协议)和UDP(User Datagram Protocol, 用户数据报协议). TCP在IP之上提供了一个可靠的,连接式的协议,可以提供比其他协议更多的保护.TCP要求在提供相应服务之前必须先建立连接(三次握手机制),因此TCP也被称为面向连接的协议(Connection-oriented).而UDP数据包传输基于尽力递交,没有差错修正,重传,重新排序等机制,无需选建立连接,因此UDP也被称为无连接协议(Connectionless).
应用层: 对应OSI的会话层,表示层和应用层. 在应用层,用户调用访问网络的应用程序,应用程序与传输层协议相配合,用以发送和接收用户所需的数据.
应用层协议比较多,常见的有HTTP,FTP,POP3等. 每个应用层协议通常会使用一些指定的端口(端口类似于电视机中的频道,将应用程序指定到正确的端口,就可以接收和发送与该端口相关的数据,TCP/IP有65536个可用端口).一些特定用途的端口由Internet Assigned Numbers Authority(www.iana.org)分配,如HTTP使用80,FTP使用21,以及POP3使用110.
/ect/services文件中列出了操作系统所使用的TCP/IP应用层协议的完整列表.

网络配置基本内容包括:

主机名:用于在网络上标识一台计算机,通常主机名在网络上是惟一的;

IP地址:任何连接到Internet上的计算机都有一个惟一的网络地址,国际网络信息中心(NIC)会根据网络的大小为每一个申请者统一分配IP地址。IP地址有IPv4和IPv6两个版本。IPv4使用点分十进制数来描述地址,共32位长,由4个分段的十进制数组成。例如126.136.1.47。IPv6采用冒号十六进制来描述地址,共128位,由8个分段的十六进制数组成,如FEDC:BA98:7654:3210:FEDC:BA98:7654:3210。当IPv4和IPv6节点混用时,采用另一种表示形式,x:x:x:x:x:x:d.d.d.d,其中x是地址中6个高阶16位段的十六进制值,d是地址中4个低阶8位段的十进制值。
IPv4协议规定,互联网上的IPv4地址共有A、B、C、D、E共5类。
A类地址是最大的地址组,用前面的8位来标识网络号(规定最前面的一们为“0”),其余24位标识主机地址。A类地址的第一段取值(也即网络号)可以是“00000001~01111111”之间的任一数字,转换为十进制后即为1~126之间的任一数字。其余各段合在一起表示主机号。主机号没有硬性规定,所以A类IP地址范围为“1.0.0.0~128.255.255.255”,其中127.0.0.1专门用于回环地址,127.0.0.0专门用于回环网络,10.0.0.0~10.255.255.254是内部网络地址。A类地址主要针对大型政府网络,全世界总共只有126个可用的A类网络,每个A类网络最多可连接多达16777214台计算机。
B类IP地址用前面16位标识网络号,其中最前面两位规定为“10”,其余16位标识主机号,B类地址第1段取值为“10000000~10111111”之间,即十进制的128~191。B类地址的取值范围为“128.0.0.0~191.255.255.255”,其中172.16.0.0~172.31.255.254地址专门用于内部网络。B类地址适用于中等规模的网络,全世界大约有16000个B类网络,每个B类网络最多可以连接65534台计算机。
C类IP地址用前面24位来标识网络号(其中最前面三位规定为“110”),其余8位标识主机号。C类地址第1段取值范围为“11000000~11011111”之间,即十进制的192~223。C类地址范围为“192.0.0.0~223.255.255.255”,其中192.168.0.0~192.168.255.255为内部专用地址段。C类地址适用于教室、机房等小型网络,每个C类网络最多可以有254台计算机。
D类IP地址用于多重广播组,一个多重广播组可能包括1台或多台主机,也可能没有主机。D类地址的最高位为“1110”,第一段取值范围为224~239,其余各位用于设定客户机参加的特定组,取值范围为“224.0.1.1~239.255.255.255”。在多重广播操作中没有网络或主机位,数据包将被传送到网络中选定的主机子集中,只有注册了多重广播地址的主机才能接收到数据包。
E类IP地址是实验性地址,保留作为以后使用。E类地址最高位为“1111”,第1段取值范围为240~247。248~254暂无规定。

子网掩码(subnet mask):主要用于标识子网是如何划分的,即地址的哪一部分包含子网的网络号,哪一部分是网络中的主机号。掩码与IP地址一样,由32位组成,用点分十进制来描述。掩码包含两个域:网络域和主机域,通常将IP地址的网络位号全改为“1”,将主机号全改为“0”。A类掩码为255.0.0.0.0,B类为255.255.0.0,C类为255.255.255.0。

广播地址(broadcast address):使用用户能将消息一次性传递到自己所在网络的全体成员中。广播地址设定规则为:主机部分被设置为255,网络部分保持不变,例如192.168.56.255。

网关地址(gateway):主机的IP地址设置正确后可以和同网段的其他主机进行通信,但还不能与不同网段的外网主机进行直接通信。为了与外部网络进行通信,需要正确设置网关地址。网关通常是提供外部网络连接的路由器,一般至少有两个网络接口:一个连接局域网,另一个提供外网连接。

域名服务器地址(DNS):IP地址和网关地址只能保证用户通过IP地址和其他主机进行通信,为了能够使用更为简易的主机域名进行通信,需要指定至少一个DNS服务器的IP地址。

DHCP服务器:为用户自动分配动态地址。当用户退出网络(关机或断开网络连接)时,所使用的IP地址会被释放,可由DHCP服务器重新分配。

网络管理常用命令

apachectl: apache HTTP服务器控制接口. (参数有configtest, graceful, fullstatus, restart, start, stop, help和status. apache的httpd命令同样具有这些功能.)

arp: 控制系统ARP缓存. (地址解析协议 Address Resolution Protocol. arp命令可以实现从IP地址到以太网MAC地址之间的转换. -a显示所有记录项, -e以默认格式显示.)

arpwatch: 监听ARP记录. (跟踪MAC地址和IP地址的对应情况,并通过Email的形式报告当前的变化. arpwatch使用pcap来侦听本地网卡的arp数据包. 例: arpwatch -i eth0 监听网卡eth0的ARP信息, arpwatch -i eth0 -f arp.log 把监听到的信息记录到arp.log文件中.)

arping: 向邻居主机发送ARP请求. (例: arping 192.168.20.147连续不停地发送ARP数据包,直到用户手动终止. -f得到第一个回复时就退出. -c 5指定发送的包的数目为5.  -q发送数据包, 但不输出相关的调试信息.)

cu: 调用其他主机系统. (类似于终端播号程序,可以调用其它主机系统,进行主机间的通信,也可以实现没有校验的文件传输.)

gaim: 即时信息传输客户端. (基于GTK的即时信息(IM)客户端,主要针对AIM,但也支持流行的IM协议. ubuntu上找不到gaim.)

hostname: 显示或设置当前系统的主机名.

host: dns查询. (将指定的名字转换为IP地址. 如: host www.google.com.)

httpd: apache http服务器程序. (-t检查配置文件的语法错误.)

ifup:启动指定的非活动的网卡. (与ifconfig up相似. ifup lo启动本地回环网络接口.)

ifdown:关闭指定的活动网卡. (与ifconifg down相似)

ifconifg: 显示或配置网络设备. (ifconfig显示当前系统中活动的网卡信息. -a显示所有网卡的信息,包括非活动的. ifconfig lo up和ifconfig lo down等同于ifup和ifdown. ifconfig eth0 192.168.20.122 broadcast 192.168.214.255 netmask 255.255.255.0设置eth0的ip地址, 广播地址和掩码. ifconfig eth0 add 3ffe:3240:8007:1005::2/64为网卡eth0配置IPv6地址. ifconfig eth0 del 3ffe:3240:8007:1005::2/64为网卡eth0删除IPv6地址. 

iptables:IPv4的包过滤和nat的管理. (iptables是linux的第一道防火墙,提供IP包过滤机制. 默认的iptables的表名为filter,规定了过滤包的规则. 另外还有两个名为mangle和nat的表, nat为Network Address Translation,是一张转换表,用于公共IP与私有IP的转换, mangle主要内容是修改包的内容,如IP包的TTL值和DSCP值. DSCP: 差分服务代码点(Differentiated Services Code Point). TTL: (Time To Live ) 生存时间, 指定数据包被路由器丢弃之前允许通过的网段数量。
iptables -t filter -L显示过滤表. iptables -t mangle -L显示高级表. iptables -t nat -L 显示转发包过滤表. iptables -P INPUT DROP设置默认规则为DROP,即与INPUT链的规则不匹配的数据包将被丢弃. iptables -P OUTPUT DROP设置OUTPUT链表的默认规则为DROP. iptables -P FORWARD DROP设置FORWARD链表的默认规则为DROP.  
iptables -A INPUT -s 192.168.20.7 -j ACCEPT添加规则:接受源地址为指定IP的数据包. iptables -A INPUT --dport 80 -j DROP添加规则:丢弃前往80端口的数据包. iptables -D INPUT 4删除INPUT链中的第4条规则. iptables -I INPUT 2 -s 192.168.20.7 -j ACCEPT在2号规则的位置插入新的规则. iptables -R INPUT 3 -s 192.168.88.7 -j ACCEPT更换规则.)

iptables-save: 打印ip表. (-t filter指定表.)

iwconfig: 配置无线网络设备.

mesg: 控制终端的写入操作. (mesg y允许其他用户发送信息到当前终端,例: write root pts/4. mesg n禁止发送.)

mingetty: 精简版的agetty. (适用于虚拟终端上的登录程序.)

minicom:串口通信程序。(基于文本的moderm控制与终端模拟程序。)

mkfifo:创建管道。(例:mkfifo -m 444 myfifo创建只读管道。)

mtr:网络诊断工具。(例:mtr 192.168.20.147诊断主机到目标机的网络状况。)

nc:TCP/UDP连接与侦听。(可以创建TCP链接,发送UDP数据包,侦听TCP或UPD套接口,进行端口扫描,追踪源路由等。nc -v -v -z -w2 192.168.20.122 1-40扫描目标机的1~40TCP端口,超时时间为2秒。-u使用UDP而非TCP。nc www.baidu.com 80 -vv以TCP方式连接80端口。-n使用IP地址,不使用DNS查询。)

netconfig:设置各项网络功能。(ubuntu没有此命令。)

netstat:显示网络状态。(显示网络连接状态、路由表信息、接口统计信息等。-r显示路由表;-a显示网络详细状况,包括是否处于侦听状态和连接状态。-u为UDP类型。-t为TCP类型。-n不解析主机名,直接显示IP地址。-p显示每个socket所属的进程号和程序名。-i显示网卡列表。-g显示组播关系。-s显示网络统计信息。-l查看所有处于侦听状态的socket。)

nslookup:查询DNS。(例:nslookup www.google.com或nslookup 74.125.71.99。不带参数进入交互模式,exit退出,host查找主机信息,server指定DNS服务器,set改变查询信息的状态。)

route:显示并设置路由。(不带参数显示路由信息。route add -net 172.16.0.0 netmask 255.255.0.0添加路由信息。route add default gw 192.168.255.254 dev eth0添加默认网关。route del default gw 192.168.255.254 dev eth0删除已存在的网关。)

ping:检测主机(IPv4)。(ping使用ICMP协议,可以向指定的主机发送ICMP包,并等待回复,以确定指定的主机是否存在。-c 5指定发送分组的数量。-s 6553指定分组的大小 ,最大分组不能超过65507字节。-i指定发送间隔的秒数。-t指定TTL值。)

ping6:检测主机(IPv6)。(与ping类似,针对IPv6。)

pppd:点对点连接的守护进程。(PPP,Point-to-Point Protocol,点对点协议,提供了在串行点对点连接中传输数据包的方法。PPP由三部分组成:串行连接的数据包封闭方法、扩展的连接控制协议LCP,以及用于建立和配置不同网络层协议的网络控制协议族NCP。数据包的封闭由内核驱动完成,pppd命令提供基本的LCP、认证支持和IPCP--用于创建和配置Internet协议的NCP。)

pppstats:显示PPP统计信息。

rdate:通过网络获取时间。(例:rdate 192.168.20.7。)

smbd:Samba服务端。(smbd是Samba服务器的守护进程,通过使用SMB或CIFS协议,可以给Windows用户提供文件共享和打印服务。SMB--Server Message Block通信协议是微软和英特尔在1987年制定的协议,主要是作为Microsoft网络的通信协议。简单的说,该协议是在局域网中共享目录和打印机的一种协议。SMB不仅可以工作在TCP/IP之上,也可以用在其他网络协议上,如IPX,NetBEUI等。SMB协议使用了NetBIOS的应用程序接口--Application Program Interface,API。通过SMB协议,客户端应用程序可以在各种不同的网络环境下访问服务器,并提出服务请求。SMB与LanManager协议兼容,支持LanManager客户端,包括MS-DOS下的MSCLIENT3.0,Windows工作组等。Samba的服务器程序实现了SMB协议,通过运行smdb守护进程,可以把Linux系统配置成一台Samba服务器,从而可能在安装和使用了SMB协议的机器之间实现共享文件和打印机。-D在后台启动服务。)

ssh:远程登录程序。(ssh 192.168.20.76 -l teacher以用户teacher身份远程登陆主机。)

statserial:显示串口连接状态。(显示标准的9针或25针串口列表,显示线路的连接状态,这对于调试串口或调制解调器错误将非常有帮助。Ctrl+C终止。例:statserial /dev/ttyS1。)

slrn:新闻阅读程序。(例:slrn -h news.usc.net -f /root/.jnewsrc。)

talk:与其他用户交谈。(可视化的通信程序。例:talk teacher tty4。)

tcpdump:显示网络中的TCP数据包。(例:tcpdump -c 5 -t -i eth0。-c连续显示的TCP数据包的数目。-t不显示时间。)

telnet:使用telnet进行远程登录。(Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。)

testparm:测试samba配置文件。

tracepath:追踪路径。(实现对主机连接到目的地址时所经过的路由的追踪。与traceroute相似,只是不需要root权限。例:tracepath www.google.com。)

traceroute:显示到达目标网络主机的路由包。(追踪网络数据包,可以显示到达目标网络主机的路由包,通常用于检测到达目的地的路由状况。)

tty:显示标准输入设备名称。(显示当前的名称。)

wall:发送信息。(向所有终端用户发送广播信息。ubuntu上使用echo hello | wall。)

wget:从互联网上下载资源。(例:wget www.google.com可以从网上获得index.html文件。)

ytalk:多用户聊天程序。

FTP常用命令

FTP全称为文件传输协议,File Transfer Protocol,能够实现文件共享、远程文件访问、对用户透明的文件存储技术以及高效可靠的数据传输。FTP采用客户端/服务器模型,客户端和服务器使用TCP建立连接。和大多数应用层协议不同,FTP协议在两台主机之间建立了两条通信链路,分别是控制连接和数据连接。控制连接主要负责传送在会话过程中用户发送的FTP命令和FTP服务的响应,数据连接主要负责传输数据。

在服务器端,FTP服务器有两个预分配的端口号,分别为20和21。其中端口20用于发送和接收FTP数据(ASCII码或二进制文件),该数据端口只在传输数据时打开,并在传输结束时关闭。端口21用于发送和接收FTP的控制信息,FTP服务器通过这个端口来判断是否有FTP客户的连接请求,FTP会话建立后,端口21的连接在会话期间将始终保持打开状态。

在客户端,当发出请求时将动态分配端口号,选择范围为1024~65535。当一个FTP会话开始后,客户端程序打开一个控制端口(如1038),该端连接到服务器上的21端口,接收和发送控制命令;需要传输数据时,客户端再打开第2个端口(如1039),连接到服务器上的20端口。每当开始传输文件时,客户端程序会打开一个新的数据端口,在文件传输完毕后,再自动释放该端口。

ftp:进入交互模式。(?显示常用命令。open IP连接FTP服务器。!执行本地命令。)

ncftp:进入FTP交互模式。(性能和便捷性方面具有优势,有取代ftp命令的趋势。)

ncftpget:下载文件。(不进入交互模式直接下载文件。例:ncftpget -u teacher -p 654321 192.168.20.122 / index.html用端口654321下载文件到本地根目录。)

ncftpls:显示文件目录。(例:ncftpls -u teacher -p 654321 ftp://192.168.20.122。)

ncftput:上传文件。(例:ncftpput -u teacher -p 654321 192.168.20.122 ./ *。)

tftp:文本模式的ftp命令。

UUCP常用命令

UUCP系统是一组程序,可以完成系统之间的文件传输、命令执行、使用情况统计、系统安全保护等功能。UUCP是各种UNIX版本包括LINUX都可用的标准网络系统,而且UUCP部署简便,是类UNIX系统中使用最广泛的网络实用系统。

uucico:UUCP文件传输守护进程。

uucp:在UNIX系统间传送文件。(例:uucp -d -R /home/ teacher!~tmp。)

uupick:处理UCP文件。

uuto:文件传送到远端主机。

uulog:显示uucp日志信息。

uuname:显示uucp远端主机。

uustat:显示UUCP状态。

uux:通过UUCP在远端主机上执行命令。

电子邮件

一个完整的Email系统一般由三个部分组成:
用户邮件代理:Mail User Agent,简称MUA,是用户与电子邮件系统的接口,负责用户和邮件服务器之间的交互工作。大多数情况下,MUA就是运行在客户端上的应用程序,其作用是将邮件发送到邮件服务器上和从邮件服务器上接收邮件。
邮件服务器:电子邮件系统的核心,其主要功能是发送和接收邮件,并向发件人告知邮件的传送情况。根据其功能,邮件服务器分为邮件传输服务器(SMTP服务器)和邮件接收服务器(POP3或IMAP4服务器)。
电子邮件协议:包含一系列标准规范,是TCP/IP协议体系中的一部分,主要内容包括邮件格式、邮件的传输、邮件的接收等。

电子邮件发送过程如下:用户A通过MUA发送一封邮件,通过邮件传输代理(Mail Transport Agent,简称MTA,所有的SMTP服务器都可以被称为MTA),到达目的服务器--邮件投递代理(Mail Delivery Agent,简称MDA),如果MDA确定该邮件是该服务器的用户的邮件,则把邮件投递到用户的邮箱里。当用户B访问该服务器时,就会发现有新的Email。

fetchmail:收取邮件。(用于从POP、IMAP、ETRN或ODMR-capable收取邮件,从远端邮件服务器获取邮件并将之发送到本地客户端,然后可以使用通常的邮件用户代理,如mutt、elm或Mail处理收到的邮件。可以设置fetchmail以守护进程的方式运行,周期性地收取邮件。例:fetchmail -p POP3 -u mail.someweb.com。)

mail:收发邮件。(mail进入交互模式。mail someone@somewhere发送邮件。)

mailq:显示发件箱的邮件。

mutt:Mutt用户邮件代理。(基于文本的小巧且功能强大的邮件管理器,可以读取邮件,支持彩色终端、MIME。)

pine:收发邮件。(交互式界面,可以同时给多个人发送邮件,支持MIME,可以访问远端或本地的邮箱。)



后记:写这篇博客的效率很低,中间一段时间忙着考驾照,之后又是过年,基本没有学习的心思。终于囫囵吞枣把这些命令过了一遍。有些其实并不是非常了解,而且也有不少记不住,以后要多用才能更加熟悉。网络那块知识还是有所欠缺,有必要搭建一个http、ftp、邮件服务器来练手。一大把东西要学,上大学的时候都干嘛去了……

2011.12.19~2012.2.5


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux命令PDF是一种包含Linux操作系统中常用命令和其使用方法的电子书格式文件。通过下载和阅读Linux命令PDF,用户可以方便地学习、查找和使用Linux系统中的各种命令Linux命令PDF中通常会包含诸如文件操作、目录管理、进程管理、网络配置、软件安装等方面的命令。通过学习这些命令,用户可以更好地理解和掌握Linux系统的使用。不论是Linux初学者还是有经验的用户,都可以利用Linux命令PDF来提高自己的技能和效率。 Linux命令PDF的优势包括: 1. 全面性:Linux命令PDF中包含了Linux系统中几乎所有的常用命令,用户可根据需要选择学习和掌握特定的命令。 2. 方便性:PDF文件格式易于阅读和搜索,用户可以方便地在文档中查找和定位具体的命令和使用方法。 3. 离线使用:用户可以将Linux命令PDF下载到本地,便于随时查阅,无需依赖网络连接。 4. 可打印性:用户可以将Linux命令PDF打印成纸质文档,以备在没有电脑或电子设备的情况下使用。 5. 更新性:由于Linux系统的不断更新和发展,命令也在不断增加和演变。因此,一些Linux命令PDF会提供定期的更新版本,使用户能够获取到最新的命令和使用方法。 总之,Linux命令PDF是一种有助于用户学习和使用Linux系统的工具。通过下载和了解Linux命令PDF,用户可以很快地了解和掌握Linux系统中的常用命令,从而提高自己的工作效率和技能水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值