Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。

不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。

◆安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;

◆文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;

◆系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;

◆网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;

◆系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;

◆其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

一、安装和登陆命令

本文以Mandrake Linux 9.1(Kenrel 2.4.21)为例,介绍Linux下的安装和登录命令。

login

1.作用

login的作用是登录系统,它的使用权限是所有用户。

2.格式

login [name] [-p] [-h 主机名称]

3.主要参数

-p:通知login保持现在的环境参数。

-h:用来向远程登录的之间传输用户名。

如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login。一般界面是这样的:

Manddrake Linux release 9.1(Bamboo) for i586

renrel 2.4.21-0.13mdk on i686 / tty1

localhost login:root

password:

上面代码中,第一行是Linux发行版本号,第二行是内核版本号和登录的虚拟控制台,我们在第三行输入登录名,按“Enter”键在Password后输入账户密码,即可登录系统。出于安全考虑,输入账户密码时字符不会在屏幕上回显,光标也不移动。

登录后会看到下面这个界面(以超级用户为例):

[root@localhost root]#

last login:Tue, Nov 18 10:00:55 on vc/1

上面显示的是登录星期、月、日、时间和使用的虚拟控制台。

4.应用技巧

Linux是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6 。

例如,用户登录后,按一下“Alt+F2”键,用户就可以看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按“Alt+F1”键,就可以回到第一个虚拟控制台。一个新安装的Linux系统允许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。

shutdown

1.作用

shutdown命令的作用是关闭计算机,它的使用权限是超级用户。

2.格式

shutdown [-h] [-i] [-k] [-m] [-t]

3.重要参数

-t:在改变到其它运行级别之前,告诉init程序多久以后关机。

-k:并不真正关机,只是送警告信号给每位登录者。

-h:关机后关闭电源。

-c:cancel current process取消目前正在执行的关机程序。所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。

-F:在重启计算机时强迫fsck。

-time:设定关机前的时间。

-m:将系统改为单用户模式。

-i:关机时显示系统信息。

4.命令说明

shutdown命令可以安全地将系统关机。有些用户会使用直接断掉电源的方式来关闭Linux系统,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。

halt

1.作用

halt命令的作用是关闭系统,它的使用权限是超级用户。

2.格式

halt [-n] [-w] [-d] [-f] [-i] [-p]

3.主要参数说明

-n:防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。

-w:并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录。

-f:没有调用shutdown,而强制关机或重启。

-i:关机(或重启)前,关掉所有的网络接口。

-f:强迫关机,不呼叫shutdown这个指令。

-p: 当关机的时候顺便做关闭电源的动作。

-d:关闭系统,但不留下纪录。 

4.命令说明

halt就是调用shutdown -h。halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。若系统的运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代。 

reboot

1.作用

reboot命令的作用是重新启动计算机,它的使用权限是系统管理者。

2.格式

reboot [-n] [-w] [-d] [-f] [-i]

3.主要参数

-n:在重开机前不做将记忆体资料写回硬盘的动作。

-w:并不会真的重开机,只是把记录写到/var/log/wtmp文件里。

-d:不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。

-i:在重开机之前先把所有与网络相关的装置停止。

install

1.作用

install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。

2.格式

(1)install [选项]… 来源 目的地

(2)install [选项]… 来源… 目录

(3)install -d [选项]… 目录…

在前两种格式中,会将复制至或将多个文件复制至已存在的,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。

3.主要参数

–backup[=CONTROL]:为每个已存在的目的地文件进行备份。

-b:类似 –backup,但不接受任何参数。

-c:(此选项不作处理)。

-d,–directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。

-D:创建前的所有主目录,然后将复制至 ;在第一种使用格式中有用。

-g,–group=组:自行设定所属组,而不是进程目前的所属组。

-m,–mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。

-o,–owner=所有者:自行设定所有者 (只适用于超级用户)。

-p,–preserve-timestamps:以文件的访问/修改时间作为相应的目的地文件的时间属性。

-s,–strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。

-S,–suffix=后缀:自行指定备份文件的。

-v,–verbose:处理每个文件/目录时印出名称。

–help:显示此帮助信息并离开。

–version:显示版本信息并离开。

mount

1.作用

mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。

2.格式

mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir

3.主要参数

-h:显示辅助信息。

-v:显示信息,通常和-f用来除错。

-a:将/etc/fstab中定义的所有文件系统挂上。

-F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。

-f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用。

-t vfstype:显示被加载文件系统的类型。

-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。

4.应用技巧

在Linux和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux中,如果要使用硬盘、光驱等储存设备,就得先将它加载,当储存设备挂上了之后,就可以把它当成一个目录来访问。挂上一个设备使用mount命令。在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。

a.Linux可以识别的文件系统

◆Windows 95/98常用的FAT 32文件系统:vfat;

◆Win NT/2000 的文件系统:ntfs;

◆OS/2用的文件系统:hpfs;

◆Linux用的文件系统:ext2、ext3;

◆CD-ROM光盘用的文件系统:iso9660。

虽然vfat是指FAT32系统,但事实上它也兼容FAT16的文件系统类型。

b.确定设备的名称

在Linux中,设备名称通常都存在/dev里。这些设备名称的命名都是有规则的,可以用“推理”的方式把设备名称找出来。例如,/dev/hda1这个IDE设备,hd是Hard Disk(硬盘)的,sd是SCSI Device,fd是Floppy Device(或是FloppyDisk?)。a代表第一个设备,通常IDE接口可以接上4个IDE设备(比如4块硬盘)。所以要识别IDE硬盘的方法分别就是hda、hdb、hdc、hdd。hda1中的“1”代表hda的第一个硬盘分区(partition),hda2代表hda的第二主分区,第一个逻辑分区从hda5开始,依此类推。此外,可以直接检查/var/log/messages文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号。

c.查找挂接点

在决定将设备挂接之前,先要查看一下计算机是不是有个/mnt的空目录,该目录就是专门用来当作挂载点(Mount Point)的目录。建议在/mnt里建几个/mnt/cdrom、/mnt/floppy、/mnt/mo等目录,当作目录的专用挂载点。举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat):

软盘===>mount -t ext2 /dev/fd0 /mnt/floppy

cdrom===>mount -t iso9660 /dev/hdc /mnt/cdrom

SCSI cdrom===>mount -t iso9660 /dev/sdb /mnt/scdrom

SCSI cdr===>mount -t iso9660 /dev/sdc /mnt/scdr

不过目前大多数较新的Linux发行版本(包括红旗 Linux、中软Linux、Mandrake Linux等)都可以自动挂装文件系统,但Red Hat Linux除外。

umount

1.作用

umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者。

2.格式

unmount -a [-f Fnrsvw] [-t vfstype] [-n] [-rw] [-F] device dir

3.使用说明

umount命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD-ROM,这样就不能用CD-ROM面板上的Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接,请使用umount/cdrom来卸装它。仅当无用户正在使用光盘时,该命令才会成功。该命令包括了将带有当前工作目录当作该光盘中的目录的终端窗口。

chsh

1.作用

chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。

2.格式

chsh [-s] [-list] [--help] [-v] [username]

3.主要参数

-l:显示系统所有Shell类型。

-v:显示Shell版本号。

4.应用技巧

前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下:

Changing fihanging shell for cao

Password:

New shell [/bin/bash]: /bin/tcsh

上面代码中,[]内是目前使用的Shell。普通用户只能修改自己的Shell,超级用户可以修改全体用户的Shell。要想查询系统提供哪些Shell,可以使用chsh -l 命令。

exit

1.作用

exit命令的作用是退出系统,它的使用权限是所有用户。

2.格式

exit

3.参数

exit命令没有参数,运行后退出系统进入登录界面。

last

1.作用

last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户。通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统。

2.格式

1ast [-n] [-f file] [-t tty] [-h 节点] [-I -IP] [-1] [-y] [1D]

3.主要参数

-n:指定输出记录的条数。

-f file:指定用文件file作为查询用的log文件。

-t tty:只显示指定的虚拟控制台上登录情况。

-h 节点:只显示指定的节点上的登录情况。

-i IP:只显示指定的IP上登录的情况。

-l:用IP来显示远端地址。

-y:显示记录的年、月、日。

-ID:知道查询的用户名。

-x:显示系统关闭、用户登录和退出的历史。

二、文件处理命令

Linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。

Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。

file

1.作用

件内容判断文件类型,使用权限是所有用户。

2.格式

file通过探测文

file [options] 文件名

3.[options]主要参数

-v:在标准输出后显示版本信息,并且退出。

-z:探测压缩过的文件类型。

-L:允许符合连接。

-f name:从文件namefile中读取要分析的文件名列表。

4.简单说明

使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。

5.应用实例

如果我们看到一个没有后缀的文件grap,可以使用下面命令:

$file grap

grap:English text

此时系统显示这是一个英文文本文件。需要说明的是,file命令不能探测包括图形、音频、视频等多媒体文件类型。

mkdir

1.作用

mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户。

2.格式

mkdir [options] 目录名

3.[options]主要参数

-m, –mode=模式:设定权限,与chmod类似。

-p, –parents:需要时创建上层目录;如果目录早已存在,则不当作错误。

-v, –verbose:每次创建新目录都显示信息。

–version:显示版本信息后离开。

4.应用实例

在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”。假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限),那么可以使用以下命令:

$mkdir -m 777 tsk

grep

1.作用

grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式

grep [options]

3.主要参数:

(1)[options]主要参数:

-c:只输出匹配行的计数。

-I:不区分大小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

(2)pattern正则表达式主要参数:

\:忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\:到匹配正则表达式的行结束。

[]:单个字符,如[A]即A符合要求。

[-]:范围,如[A-Z],即A、B、C一直到Z都符合要求。

.:所有的单个字符。

*:有字符,长度可以为0。

正则表达式是Linux/Unix系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索——替换”操作和其它功能。

4.应用实例

查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9]\{3\}\.[0-0\{3\}\。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。例如:$grep '[0-9]\{3\}\.[0-0\{3\}\' ipfile。

补充说明,grep家族还包括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。

dd

1.作用

dd命令用来复制文件,并根据参数将数据转换和格式化。

2.格式

dd [options]

3.[opitions]主要参数

bs=字节:强迫 ibs=及obs=。

cbs=字节:每次转换指定的。

conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。

count=块数目:只复制指定的输入数据。

ibs=字节:每次读取指定的。

if=文件:读取内容,而非标准输入的数据。

obs=字节:每次写入指定的。

of=文件:将数据写入,而不在标准输出显示。

seek=块数目:先略过以obs为单位的指定的输出数据。

skip=块数目:先略过以ibs为单位的指定的输入数据。

4.应用实例

dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘:

$rdev vmlinuz /dev/hda

$dd if=vmlinuz of=/dev/fd0

上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。

find

1.作用

find命令的作用是在目录中搜索文件,它的使用权限是所有用户。

2.格式

find [path] [options] [expression]

path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。

3.主要参数

(1)[options]参数:

-depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。

-maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。

-mindepth levels:表示至少查找到开始目录的第level层子目录。

-mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。

-version:打印版本。

(2)[expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。

-name:支持统配符*和?。

-atime n:搜索在过去n天读取过的文件。

-ctime n:搜索在过去n天修改过的文件。

-group grpoupname:搜索所有组为grpoupname的文件。

-user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。

-size n:搜索文件大小是n个block的文件。

-print:输出搜索结果,并且打印。

4.应用技巧

find命令查找文件的几种方法:

(1)根据文件名查找

例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:

find / -name lilo.conf

find命令后的“/”表示搜索整个硬盘。

(2)快速查找文件

根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:

find /etc -name smb.conf

这样,使用“快速查找文件”方式可以缩短时间。

(3)根据部分文件名查找方法

有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:

find / -name ‘*abvd*’

输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。

(4) 使用混合查找方式查找文件

find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。命令如下:

find /etc -size +500000c -and -mtime +1

mv

1.作用

mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。

2.格式

mv[options] 源文件或目录 目标文件或目录

3.[options]主要参数

-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答“y”或“n”,这样可以避免误覆盖文件。

-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。

4.应用实例

(1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中:

$mv /usr/cbu/ * .

(2)将文件cjh.txt重命名为wjz.txt:

$mv cjh.txt wjz.txt 

ls

1.作用

ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户。

2.格式

ls [options] [filename]

3.options主要参数

-a, –all:不隐藏任何以“.” 字符开始的项目。

-A, –almost-all:列出除了“ . ”及 “.. ”以外的任何项目。

–author:印出每个文件著作者。

-b, –escape:以八进制溢出序列表示不可打印的字符。

–block-size=大小:块以指定的字节为单位。

-B, –ignore-backups:不列出任何以 ~ 字符结束的项目。

-f:不进行排序,-aU参数生效,-lst参数失效。

-F, –classify:加上文件类型的指示符号 (*/=@| 其中一个)。

-g:like -l, but do not list owner。

-G, –no-group:inhibit display of group information。

-i, –inode:列出每个文件的inode号。

-I, –ignore=样式:不印出任何符合Shell万用字符的项目。

-k:即–block-size=1K。

-l:使用较长格式列出信息。

-L, –dereference:当显示符号链接的文件信息时,显示符号链接所指示的对象,而并非符号链接本身的信息。

-m:所有项目以逗号分隔,并填满整行行宽。

-n, –numeric-uid-gid:类似-l,但列出UID及GID号。

-N, –literal:列出未经处理的项目名称,例如不特别处理控制字符。

-p, –file-type:加上文件类型的指示符号 (/=@| 其中一个)。

-Q, –quote-name:将项目名称括上双引号。

-r, –reverse:依相反次序排列。

-R, –recursive:同时列出所有子目录层。

-s, –size:以块大小为序。

4.应用举例

ls命令是Linux系统使用频率最多的命令,它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色,其中蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色表示是链接文件,加粗的黑色表示符号链接,灰色表示是其它格式文件。

diff

1.作用

diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。

2.格式

diff [options] 源文件 目标文件

3.[options]主要参数

-a:将所有文件当作文本文件来处理。

-b:忽略空格造成的不同。

-B:忽略空行造成的不同。

-c:使用纲要输出格式。

-H:利用试探法加速对大文件的搜索。

-I:忽略大小写的变化。

-n –rcs:输出RCS格式。

cmp

1.作用

cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。

2.格式

cmp[options] 文件名

3.[options]主要参数

-l: 将字节以十进制的方式输出,并方便将两个文件中不同的以八进制的方式输出。

cat

1.作用

cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。

2.格式

cat [options] 文件1 文件2……

3.[options]主要参数

-n:由第一行开始对所有输出的行数编号。

-b:和-n相似,只不过对于空白行不编号。

-s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。

4.应用举例

(1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令:

$cat README 

(2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1 中:

$cat README INSTALL File1

(3)cat还有一个重要的功能就是可以对行进行编号。这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。

ln

1.作用

ln命令用来在文件之间创建链接,它的使用权限是所有用户。

2.格式

ln [options] 源文件 [链接名]

3.参数

-f:链结时先将源文件删除。

-d:允许系统管理者硬链结自己的目录。

-s:进行软链结(Symbolic Link)。

-b:将在链结时会被覆盖或删除的文件进行备份。

链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。

与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

三、系统管理命令

对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令。

df

1.作用

df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。

2.格式

df [options]

3.主要参数

-s:对每个Names参数只给出占用的数据块总数。

-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。

-k:以1024字节为单位列出磁盘空间使用情况。

-x:跳过在不同文件系统上的目录不予统计。

-l:计算所有的文件大小,对硬链接文件则计算多次。

-i:显示inode信息而非块使用量。

-h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。

-P:使用POSIX输出格式。

-T:显示文件系统类型。

4.说明

df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。

5.应用实例

Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df-T命令查看磁盘空间时还可以得到文件系统的信息:#df-T

文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G

从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。

top

1.作用

top命令用来显示执行中的程序进程,使用权限是所有用户。

2.格式

top [-d delay] [-q] [-c] [-S] [-s] [-n]

3.主要参数

-d:指定更新的间隔,以秒计算。

-q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

-c:显示进程完整的路径与名称。

-S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

-s:安全模式。

-i:不显示任何闲置(Idle)或无用(Zombie)的行程。

-n:显示更新的次数,完成后将会退出top。

4.说明

top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。在top命令的显示中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。

PID(Process ID):进程标示号。

USER:进程所有者的用户名。

PR:进程的优先级别。

NI:进程的优先级别数值。

VIRT:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME+:该进程启动后占用的总的CPU时间。

Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

5.应用实例

使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面,使用top命令监视指定用户。

free

1.作用

free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式

free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

3.主要参数

-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。

-s delay:显示每隔多少秒数来显示一次内存使用情况。

-t:显示内存总和列。

-o:不显示缓冲区调节列。

4.应用实例

free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。

#free -b -s5

使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。

quota

1.作用

quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户。

2.格式

quota [-g] [-u] [-v] [-p] 用户名 组名

3.参数

-g:显示用户所在组的磁盘使用限制。

-u:显示用户的磁盘使用限制。

-v:显示没有分配空间的文件系统的分配情况。

-p:显示简化信息。

4.应用实例

在企业应用中磁盘配额非常重要,普通用户要学会看懂自己的磁盘使用情况。要查询自己的磁盘配额可以使用下面命令(下例中用户账号是caojh):

#quota caojh

Disk quotas for user caojh(uid 502):

Filesystem blocks quota limit grace files quota limit grace

/dev/hda3 58 200000 400000 41 500 1000

以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。

at

1.作用

at命令用来在指定时刻执行指定的命令序列。

2.格式

at [-V] [-q x] [-f file] [-m] time

3.主要参数

-V:显示标准错误输出。

-q:许多队列输出。

-f:从文件中读取作业。

-m:执行完作业后发送电子邮件到用户。

time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。偏移量的格式为时间+偏移量,单位是minutes、hours和days。

4.应用实例

#at -f data 15:30 +2 days

上面命令表示让系统在两天后的17:30执行文件data中指明的作业。

lp

1.作用

lp是打印文件的命令,使用权限是所有用户。

2.格式

lp [-c] [-d] [-m] [-number] [-title] [-p]

3.主要参数

-c:先拷贝文件再打印。

-d:打印队列文件。

-m:打印结束后发送电子邮件到用户。

-number:打印份数。

-title:打印标题。

-p:设定打印的优先级别,最高为100。

4.应用实例

(1)使用lp命令打印多个文件

#lp 2 3 4

request id is 11 (3 file(s))

其中2、3、4分别是文件名;“request id is 11 (3 file(s)) ”表示这是第11个打印命令,依次打印这三个文件。

(2)设定打印优先级别

#lp lp -d LaserJet -p 90 /etc/aliases

通过添加“-p 90”,规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业,缺省优先级是50

useradd

1.作用

useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。

2.格式

useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire] [-p passwd] [-r] name

3.主要参数

-c:加上备注文字,备注文字保存在passwd的备注栏中。 

-d:指定用户登入时的启始目录。

-D:变更预设值。

-e:指定账号的有效期限,缺省表示永久有效。

-f:指定在密码过期后多少天即关闭该账号。

-g:指定用户所属的群组。

-G:指定用户所属的附加群组。

-m:自动建立用户的登入目录。

-M:不要自动建立用户的登入目录。

-n:取消建立以用户名称为名的群组。

-r:建立系统账号。

-s:指定用户登入后所使用的shell。

-u:指定用户ID号。

4.说明

useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。

5.应用实例

建立一个新用户账户,并设置ID:

#useradd caojh -u 544

需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。

groupadd

1.作用

groupadd命令用于将新组加入系统。

2.格式

groupadd [-g gid] [-o]] [-r] [-f] groupname

3.主要参数

-g gid:指定组ID号。

-o:允许组ID号,不必惟一。

-r:加入组ID号,低于499系统账号。

-f:加入已经有的组时,发展程序退出。

4.应用实例

建立一个新组,并设置组ID加入系统:

#groupadd -g 344 cjh

此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

kill

1.作用

kill命令用来中止一个进程。

2.格式

kill [-s signal | -p] [-a] pid …

kill -l [signal]

3.参数

-s:指定发送的信号。

-p:模拟发送信号。

-l:指定信号的名称列表。

pid:要中止进程的ID号。

Signal:表示信号。

4.说明

进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。

Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如httpd是著名的Apache服务器的监控进程。

kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。

5.应用实例

(1)强行中止(经常使用杀掉)一个进程标识号为324的进程:

#kill -9 324

(2)解除Linux系统的死锁

在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。当kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID,然后使用kill命令停止这个程序:

#kill -SIGKILL XXX

其中,XXX是包含有Mozolla浏览器的程序的进程标识号。

(3)使用命令回收内存

我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令:

#kill -9 XXX

其中,XXX是无用的进程标识号。

然后使用下面命令:

#free

此时会发现可用内存容量增加了。

(4)killall命令

Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:

#killall -HUP inetd

crontab

1.作用

使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。

2.格式

crontab [-u user] 文件

crontab [-u user] { -l | -r | -e }

3.主要参数

-e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。

-r:删除目前的时程表。

-l:列出目前的时程表。

crontab文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。

4.说明

和at命令相比,crontab命令适合完成固定周期的任务。

5.应用实例

设置一个定时、定期的系统提示:

[cao @www cao]#crontab -e

此时系统会打开一个vi编辑器。

如果输入以下内容:35 17 * * 5 wall “Tomorrow is Saturday I will go CS”,然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下:

#DO NOT EDIT THIS FILE – edit the master and reinstall.

#(/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004)

#(Cron version — $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

35 17 * * 5 wall “Tomorrow is Saturday I will play CS”

这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!

四、网络操作命令

因为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件,尤其是TCP/IP网络协议的实现尤为成熟。

Linux的网络命令比较多,其中一些命令像ping、ftp、telnet、route、netstat等在其它操作系统上也能看到,但也有一些Unix/Linux系统独有的命令,如ifconfig、finger、mail等。Linux网络操作命令的一个特点是,命令参数选项和功能很多,一个命令往往还可以实现其它命令的功能。

ifconfig

1.作用

ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。

2.格式

ifconfig -interface [options] address

3.主要参数

-interface:指定的网络接口名,如eth0和eth1。

up:激活指定的网络接口卡。

down:关闭指定的网络接口。

broadcast address:设置接口的广播地址。

pointopoint:启用点对点方式。

address:设置指定接口设备的IP地址。

netmask address:设置接口的子网掩码。

4.应用说明

ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令:

#fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127

该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失。如果要暂停某个网络接口的工作,可以使用down参数:

#ifconfig eth0 down

ip

1.作用

ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。

2.格式

ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]

3.主要参数

OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。目前,ip支持如表1所示选项。

OBJECT是要管理者获取信息的对象。目前ip认识的对象见表2所示。

表1 ip支持的选项

-V,-Version 打印ip的版本并退出。

-s,-stats,-statistics 输出更为详尽的信息。如果这个选项出现两次或多次,则输出的信息将更为详尽。

-f,-family 这个选项后面接协议种类,包括inet、inet6或link,强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类,ip就会使用默认值inet或any。link比较特殊,它表示不涉及任何网络协议。

-4 是-family inet的简写。

-6 是-family inet6的简写。

-0 是-family link的简写。

-o,-oneline 对每行记录都使用单行输出,回行用字符代替。如果需要使用wc、grep等工具处理ip的输出,则会用到这个选项。

-r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址。

表2 ip认识的对象

COMMAND是设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些对象不支持这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。

ARGUMENTS是命令的一些参数,它们倚赖于对象和命令。ip支持两种类型的参数:flag和parameter。flag由一个关键词组成;parameter由一个关键词加一个数值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev是ip link命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。我们将在后面的详细介绍每个命令的使用,命令的默认参数将使用default标出。

4.应用实例

添加IP地址192.168.2.2/24到eth0网卡上:

#ip addr add 192.168.1.1/24 dev eth0

丢弃源地址属于192.168.2.0/24网络的所有数据报:

#ip rule add from 192.168.2.0/24 prio 32777 reject

ping

1.作用

ping检测主机网络接口状态,使用权限是所有用户。

2.格式

ping [-dfnqrRv] [-c] [-i] [-I] [-l] [-p] [-s] [-t] IP地址

3.主要参数

-d:使用Socket的SO_DEBUG功能。

-c:设置完成要求回应的次数。

-f:极限检测。

-i:指定收发信息的间隔秒数。

-I:网络界面使用指定的网络界面送出数据包。

-l:前置载入,设置在送出要求信息之前,先行发出的数据包。

-n:只输出数值。

-p:设置填满数据包的范本样式。

-q:不显示指令执行过程,开头和结尾的相关信息除外。

-r:忽略普通的Routing Table,直接将数据包送到远端主机上。

-R:记录路由过程。

-s:设置数据包的大小。

-t:设置存活数值TTL的大小。

-v:详细显示指令的执行过程。

ping命令是使用最多的网络指令,通常我们使用它检测网络是否连通,它使用ICMP协议。但是有时会有这样的情况,我们可以浏览器查看一个网页,但是却无法ping通,这是因为一些网站处于安全考虑安装了防火墙。另外,也可以在自己计算机上试一试,通过下面的方法使系统对ping没有反应:

#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

netstat

1.作用

检查整个Linux网络状态。

2.格式

netstat [-acCeFghilMnNoprstuvVwx] [-A] [--ip]

3.主要参数

-a–all:显示所有连线中的Socket。

-A:列出该网络类型连线中的IP相关地址和网络类型。

-c–continuous:持续列出网络状态。

-C–cache:显示路由器配置的快取信息。

-e–extend:显示网络其它相关信息。

-F–fib:显示FIB。

-g–groups:显示多重广播功能群组组员名单。

-h–help:在线帮助。

-i–interfaces:显示网络界面信息表单。

-l–listening:显示监控中的服务器的Socket。

-M–masquerade:显示伪装的网络连线。

-n–numeric:直接使用IP地址,而不通过域名服务器。

-N–netlink–symbolic:显示网络硬件外围设备的符号连接名称。

-o–timers:显示计时器。

-p–programs:显示正在使用Socket的程序识别码和程序名称。

-r–route:显示Routing Table。

-s–statistice:显示网络工作信息统计表。

-t–tcp:显示TCP传输协议的连线状况。

-u–udp:显示UDP传输协议的连线状况。

-v–verbose:显示指令执行过程。

-V–version:显示版本信息。

-w–raw:显示RAW传输协议的连线状况。

-x–unix:和指定“-A unix”参数相同。

–ip–inet:和指定“-A inet”参数相同。

4.应用实例

netstat主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可:

#netstat -a

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 *:32768 *:* LISTEN

tcp 0 0 *:32769 *:* LISTEN

tcp 0 0 *:nfs *:* LISTEN

tcp 0 0 *:32770 *:* LISTEN

tcp 0 0 *:868 *:* LISTEN

tcp 0 0 *:617 *:* LISTEN

tcp 0 0 *:mysql *:* LISTEN

tcp 0 0 *:netbios-ssn *:* LISTEN

tcp 0 0 *:sunrpc *:* LISTEN

tcp 0 0 *:10000 *:* LISTEN

tcp 0 0 *:http *:* LISTEN

……

上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。

telnet
1.作用

telnet表示开启终端机阶段作业,并登入远端主机。telnet是一个Linux命令,同时也是一个协议(远程登陆协议)。

2.格式

telnet [-8acdEfFKLrx] [-b] [-e] [-k] [-l] [-n] [-S] [-X] [主机名称IP地址]

3.主要参数

-8:允许使用8位字符资料,包括输入与输出。

-a:尝试自动登入远端系统。

-b:使用别名指定远端主机名称。

-c:不读取用户专属目录里的.telnetrc文件。

-d:启动排错模式。

-e:设置脱离字符。

-E:滤除脱离字符。

-f:此参数的效果和指定“-F”参数相同。

-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。

-k:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。

-K:不自动登入远端主机。

-l:指定要登入远端主机的用户名称。

-L:允许输出8位字符资料。

-n:指定文件记录相关信息。

-r:使用类似rlogin指令的用户界面。

-S:服务类型,设置telnet连线所需的IP TOS信息。

-x:假设主机有支持数据加密的功能,就使用它。

-X:关闭指定的认证形态。

4.应用说明

用户使用telnet命令可以进行远程登录,并在远程计算机之间进行通信。用户通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。为了通过telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。

telnet只为普通终端提供终端仿真,而不支持X-Window等图形环境。当允许远程用户登录时,系统通常把这些用户放在一个受限制的Shell中,以防系统被怀有恶意的或不小心的用户破坏。用户还可以使用telnet从远程站点登录到自己的计算机上,检查电子邮件、编辑文件和运行程序,就像在本地登录一样。

ftp
1.作用

ftp命令进行远程文件传输。FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身,所以ftp既是协议又是一个命令。

2.格式

ftp [-dignv] [主机名称IP地址]

3.主要参数

-d:详细显示指令执行过程,便于排错分析程序执行的情形。

-i:关闭互动模式,不询问任何问题。

-g:关闭本地主机文件名称支持特殊字符的扩充特性。

-n:不使用自动登陆。

-v:显示指令执行过程。

4.应用说明

ftp命令是标准的文件传输协议的用户接口,是在TCP/IP网络计算机之间传输文件简单有效的方法,它允许用户传输ASCⅡ文件和二进制文件。为了使用ftp来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp会话,并用来确定用户对要传输的文件进行什么样的访问。

另外,用户需要知道对其进行ftp会话的计算机名字的IP地址。用户可以通过使用ftp客户程序,连接到另一台计算机上;可以在目录中上下移动、列出目录内容;可以把文件从远程计算机机拷贝到本地机上;还可以把文件从本地机传输到远程系统中。ftp内部命令有72个,下面列出主要几个内部命令:

ls:列出远程机的当前目录。

cd:在远程机上改变工作目录。

lcd:在本地机上改变工作目录。

close:终止当前的ftp会话。

hash:每次传输完数据缓冲区中的数据后就显示一个#号。

get(mget):从远程机传送指定文件到本地机。

put(mput):从本地机传送指定文件到远程机。

quit:断开与远程机的连接,并退出ftp。

route
1.作用

route表示手工产生、修改和查看路由表。

2.格式

#route [-add] [-net|-host] targetaddress [-netmask Nm] [dev]If]

#route [-delete] [-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]

3.主要参数

-add:增加路由。

-delete:删除路由。

-net:路由到达的是一个网络,而不是一台主机。

-host:路由到达的是一台主机。

-netmask Nm:指定路由的子网掩码。

gw:指定路由的网关。

[dev]If:强迫路由链指定接口。

4.应用实例

route命令是用来查看和设置Linux系统的路由信息,以实现与其它网络的通信。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。使用下面命令可以增加一个默认路由:

route add 0.0.0.0 192.168.1.1

rlogin
1.作用

rlogin用来进行远程注册。

2.格式

rlogin [-8] [-E] [-K] [-L] [-d] [-x] [-e char] [-k realm] [-l username] host

3.主要参数

-8:此选项始终允许8位输入数据通道。该选项允许发送格式化的ANSI字符和其它的特殊代码。如果不用这个选项,除非远端的不是终止和启动字符,否则就去掉奇偶校验位。

-E:停止把任何字符当作转义字符。当和-8选项一起使用时,它提供一个完全的透明连接。

-K:关闭所有的Kerberos确认。只有与使用Kerberos 确认协议的主机连接时才使用这个选项。

-L:允许rlogin会话在litout模式中运行。要了解更多信息,请查阅tty联机帮助。

-d:打开与远程主机进行通信的TCP sockets的socket调试。要了解更多信息,请查阅setsockopt的联机帮助。

-e:为rlogin会话设置转义字符,默认的转义字符是“~”。

-k:请求rlogin获得在指定区域内远程主机的Kerberos许可,而不是获得由krb_realmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。

-x:为所有通过rlogin会话传送的数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。

4.使用说明

如果在网络中的不同系统上都有账号,或者可以访问别人在另一个系统上的账号,那么要访问别的系统中的账号,首先就要注册到系统中,接着通过网络远程注册到账号所在的系统中。rlogin可以远程注册到别的系统中,它的参数应是一个系统名。

rcp
1.作用

rcp代表远程文件拷贝,用于计算机之间文件拷贝,使用权限是所有用户。

2.格式

rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file

3.主要参数

-r:递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。

-p:试图保留源文件的修改时间和模式,忽略umask。

-k:请求rcp获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。

-x:为传送的所有数据打开DES加密。

finger
1.作用

finger用来查询一台主机上的登录账号的信息,通常会显示用户名、主目录、停滞时间、登录时间、登录Shell等信息,使用权限为所有用户。

2.格式

finger [选项] [使用者] [用户@主机]

3.主要参数

-s:显示用户注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。

-l:除了用-s选项显示的信息外,还显示用户主目录、登录Shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。

-p:除了不显示.plan文件和.project文件以外,与-l选项相同。

4.应用实例

在计算机上使用finger:

[root@localhost root]#Finger

Login Name Tty Idle Login Time Office Office Phone

root root tty1 2 Dec 15 11

root root pts/0 1 Dec 15 11

root root *pts/1 Dec 15 11

5.应用说明

如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程的支持。

mail
1.作用

mail作用是发送电子邮件,使用权限是所有用户。此外,mail还是一个电子邮件程序。

2.格式

mail [-s subject] [-c address] [-b address]

mail -f [mailbox]mail [-u user]

3.主要参数

-b address:表示输出信息的匿名收信人地址清单。

-c address:表示输出信息的抄送()收信人地址清单。

-f [mailbox]:从收件箱者指定邮箱读取邮件。

-s subject:指定输出信息的主体行。

[-u user]:端口指定优化的收件箱读取邮件。

nslookup
1.作用

nslookup命令的功能是查询一台机器的IP地址和其对应的域名。使用权限所有用户。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。

2.格式

nslookup [IP地址/域名]

3.应用实例

(1)在本地计算机上使用nslookup命令:

$nslookup

Default Server: name.cao.com.cn

Address: 192.168.1.9

在符号“>”后面输入要查询的IP地址域名,并回车即可。如果要退出该命令,输入“exit”,并回车即可。

(2)使用nslookup命令测试named:

输入下面命令:

nslookup

然后就进入交换式nslookup环境。如果named正常启动,则nslookup会显示当前DNS服务器的地址和域名,否则表示named没能正常启动。

下面简单介绍一些基本的DNS诊断。

◆检查正向DNS解析,在nslookup提示符下输入带域名的主机名,如hp712.my.com,nslookup应能显示该主机名对应的IP地址。如果只输入hp712,nslookup会根据/etc/resolv.conf的定义,自动添加my.com域名,并回答对应的IP地址。

◆检查反向DNS解析,在nslookup提示符下输入某个IP地址,如192.22.33.20,nslookup应能回答该IP地址所对应的主机名。

◆检查MX邮件地址记录在nslookup提示符下输入:

set q=mx

然后输入某个域名,输入my.com和mail.my.com,nslookup应能够回答对应的邮件服务器地址,即support.my.com和support2.my.com。

六、其它命令

在前面几讲中,我们把Linux命令按照在系统中的作用分成几个部分分别予以介绍。但是,还有一些命令不好划分,然而学习它们同样是比较重要的。

tar

1.作用

tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户。

2.格式

tar [主选项+辅选项] 文件或目录

3.主要参数

使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。

主选项:

-c:创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。

-r:把要存档的文件追加到档案文件的未尾。例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。

-t:列出档案文件的内容,查看已经备份了哪些文件。

-u:更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

-x:从档案文件中释放文件。

辅助选项:

-b:该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(20×512bytes)。

-f:使用档案文件或设备,这个选项通常是必选的。

-k:保存已经存在的文件。例如把某个文件还原,在还原的过程中遇到相同的文件,不会进行覆盖。

-m:在还原文件时,把所有文件的修改时间设定为现在。

-M:创建多卷的档案文件,以便在几个磁盘中存放。

-v:详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。

-w:每一步都要求确认。

-z:用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

4.应用说明

tar是Tape Archive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。如果下载过Linux的源代码,或许已经碰到过tar文件请注意,不要忘了Linux是区分大小写的。例如,tar命令应该总是以小写的形式执行。命令行开关可以是大写、小写或大小写的混合。例如,-t和-T执行不同的功能。文件或目录名称可以混合使用大小写,而且就像命令和命令行开关一样是区分大小写的。

5.应用实例

tar是一个命令行的工具,没有图形界面。使用Konsole打开一个终端窗口,接下来是一个简单的备份命令(在/temp目录中创建一个back.tar的文件,/usr目录中所有内容都包含在其中。):

$tar cvf – /usr > /temp/back.tar

另外,tar命令支持前面第三讲中讲过的crontab命令,可以用crontab工具设置成基于时间的有规律地运行。例如,每晚6点把/usr目录备份到hda1——第一个IDE接口的主驱动器(总是位于第一个硬盘)中,只要将下面语句添加到root的crontab中即可:

$00 06 * * * tar cvf /dev/hda1/usrfiles.tar – /usr

一般情况下,以下这些目录是需要备份的:

◆/etc包含所有核心配置文件,其中包括网络配置、系统名称、防火墙规则、用户、组,以及其它全局系统项。

◆/var包含系统守护进程(服务)所使用的信息,包括DNS配置、DHCP租期、邮件缓冲文件、HTTP服务器文件、dB2实例配置等。

◆/home包含所有默认用户的主目录,包括个人设置、已下载的文件和用户不希望失去的其它信息。

◆/root根(root)用户的主目录。

◆/opt是安装许多非系统文件的地方。IBM软件就安装在这里。OpenOffice、JDK和其它软件在默认情况下也安装在这里。

有些目录是可以不备份的:

◆/proc应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图,包括诸如/proc/kcore这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。

◆/dev包含硬件设备的文件表示。如果计划还原到一个空白的系统,就可以备份/dev。然而,如果计划还原到一个已安装的Linux系统,那么备份/dev是没有必要的。

unzip

1.作用

unzip命令位于/usr/bin目录中,它们和MS DOS下的pkzip、pkunzip及MS Windows中的Winzip软件功能一样,将文件压缩成.zip文件,以节省硬盘空间,当需要的时候再将压缩文件用unzip命令解开。该命令使用权限是所有用户。

2.格式 unzip [-cflptuvz] [-agCjLMnoqsVX] [-P] [.zip文件] [文件] [-d] [-x]

3.主要参数

-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换。

-f:更新现有的文件。

-l:显示压缩文件内所包含的文件。

-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。

-t:检查压缩文件是否正确。

-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中。

-v:执行是时显示详细的信息。

-z:仅显示压缩文件的备注文字。

-a:对文本文件进行必要的字符转换。

-b:不要对文本文件进行字符转换。

-C:压缩文件中的文件名称区分大小写。

-j:不处理压缩文件中原有的目录路径。

-L:将压缩文件中的全部文件名改为小写。

-M:将输出结果送到more程序处理。

-n:解压缩时不要覆盖原有的文件。

-o:不必先询问用户,unzip执行后覆盖原有文件。

-P:使用zip的密码选项。

-q:执行时不显示任何信息。

-s:将文件名中的空白字符转换为底线字符。

-V:保留VMS的文件版本信息。

-X:解压缩时同时回存文件原来的UID/GID。

[.zip文件]:指定.zip压缩文件。

[文件]:指定要处理.zip压缩文件中的哪些文件。

-d:指定文件解压缩后所要存储的目录。

-x:指定不要处理.zip压缩文件中的哪些文件。

-Z unzip:-Z等于执行zipinfo指令。在Linux中,还提供了一个叫zipinfo的工具,能够察看zip压缩文件的详细信息。unzip最新版本是5.50。

gunzip

1.作用

gunzip命令作用是解压文件,使用权限是所有用户。

2.格式

gunzip [-acfhlLnNqrtvV] [-s] [文件...] 或者

gunzip [-acfhlLnNqrtvV] [-s] [目录]

3.主要参数

-a或–ascii:使用ASCII文字模式。

-c或–stdout或–to-stdout:把解压后的文件输出到标准输出设备。

-f或–force:强行解开压缩文件,不理会文件名称或硬连接是否存在,以及该文件是否为符号连接。

-h或–help:在线帮助。

-l或–list:列出压缩文件的相关信息。

-L或–license:显示版本与版权信息。

-n或–no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。

-N或–name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。

-q或–quiet:不显示警告信息。

-r或–recursive:递归处理,将指定目录下的所有文件及子目录一并处理。

-S或–suffix:更改压缩字尾字符串。

-t或–test:测试压缩文件是否正确无误。

-v或–verbose:显示指令执行过程。

-V或–version:显示版本信息。

4.说明

gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为“ .gz”。事实上,gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

unarj

1.作用

unarj解压缩格式为.arj格式的文件,使用权限是所有用户。

2.格式

unarj [eltx] [.arj压缩文件]

3.主要参数

e:解压缩.arj文件。

l:显示压缩文件内所包含的文件。

t:检查压缩文件是否正确。

x:解压缩时保留原有的路径。

4.说明

带有.arj扩展名的文件是由用于MS DOS和Windows的ARJ实用程序创建的。因为ARJ是一种不能免费获得源代码的共享件程序.

mtools

1.作用

mtools实际上是一个命令集合,是DOS文件系统的工具程序,它可以模拟许多DOS命令,使用起来非常方便。使 用权限是所有用户。Linux系统提供了一组称为mtools的可移植工具,可以让用户轻松地从标准的DOS软盘上读、写文件和目录。它们对DOS和Linux环境之间交换文件非常有用。mtools的使用非常简单,如果想把软盘里所有的文件都拷贝到硬盘上,那么就可以执行以下命令:

mcopy a:*.*

也就是说,只需要在相应的DOS命令之前加上一个字母“m”,就可以完成对应的功能了。一般Linux发行版本中都有这个软件,可以使用下面命令检查一下。

rpm -qa|grep mtools

如果没有安装,也没有关系,可以从网上下载(http://mtools.linux.lu/)一个最新版本来安装。

2.包括的命令

mcd 目录名:改变MS DOS下的目录。

mcopy 源文件 目标文件:在MS DOS和Unix之间复制文件。

mdel 文件名:删除MS DOS下的文件。

mdir 目录名:显示MS DOS下的目录。

mformat 驱动器号:在低级格式化的软盘上创建MS DOS文件系统。

rnlabel 驱动器号:产生MS DOS下的卷标。

mmd 目录名:建立MS DOS下的目录。

mrd 目录名:删除MS DOS下的目录。

mren 源文件 目标文件:重新命名已存在的MS DOS文件。

mtype 文件名:显示MS DOS文件的内容。

请注意,这些命令和对应的MS DOS命令非常相似。在mtools命令中,“/”和“\”是可以混用的。因为文件列表的是DOS系统下的文档,对大小写并不敏感,所以“CDE”和“cde”在这里是一样的。

3.应用实例

(1)如果把软盘进行快速格式化,可以使用命令mformat:

mformat A:

mtools当初发展的目的是用来处理DOS文件系统的,所以只能用在FAT文件格式的分区上。需要注意的是,如果 用mount命令来挂载了FAT16/32分区,那么就不能使用mtools的指令来处理这些分区上的文件。这是因为一旦FAT16/32分区挂到了Linux文件目录下,Linux就会将其视为文件系统本身的一部分,这时如果要对其操作就必须使用Linux本身所附带的指令集。

(2)将DOS盘上的文件htca.c复制到当前目录下,并用ls命令进行验证。

$mcopy a:\htca.c

$ls -l htca.c

-rw-r- -r- – 1 xxq xxq 27136 Jan 1 01:80 htca.c

man

1.作用

man命令用来提供在线帮助,使用权限是所有用户。在Linux系统中存储着一部联机使用的手册,以供用户在终端上查找。使用man命令可以调阅其中的帮助信息,非常方便和实用。

2.格式

man 命令名称

man [-acdfhkKtwW] [-m system] [-p string] [-C config_file] [-M path] [-P pager] [-S section_list] [section] name …

3.参数

-C config_file:指定设定文件man.conf,缺省值是/etc/man.conf。

-M path:指定了联机手册的搜寻路径, 如果没有指定则使用环境变数MANPATH的设定;如果没有使用MANPATH ,则会使用/usr/lib/man.conf内的设定;如果MANPATH是空字串,则表示使用缺省值。

-P pager:指定使用何种pager.man会优先使用此选项设定,然后是依环境变数MANPAGER设定,然后是环境变数PAGER;man缺省使用/usr/bin/less -is。

-S section_list man:所搜寻的章节列表(以冒号分隔),此选项会覆盖环境变数MANSECT的设定。

-a man:缺省情况是在显示第一个找到的手册之后,就会停止搜寻,使用此选项会强迫man继续显示所有符合 name的联机手册。

-c:即使有最新的cat page,也继续对联机手册重新作排版,本选项在屏幕的行列数改变时或已排版的联机手册损坏时特别有意义。

-d:不要真的显示联机手册,只显示除错讯息。

-D:同时显示联机手册与除错讯息。

-h:显示求助讯息然后结束程式。

-K:对所有的联机手册搜寻所指定的字串。请注意,本功能回应速度可能很慢,如果指定section(区域)会对速度有帮助。

-m system:依所指定的system名称而指定另一组的联机手册。

man:是manual(手册)的缩写。在输入命令有困难时,可以立刻得到这个文档。例如, 如果使用ps命令时遇到困难,可以输入man ps得到帮助信息,此时会显示出ps的手册页(man page)。

由于手册页man page是用less程序来看的(可以方便地使屏幕上翻和下翻), 所以在man page里可以使用less的所有选项。

less中比较重要的功能键有:

[q] 退出;

[Enter] 一行行地下翻;

[Space] 一页页地下翻;

[/] 后跟一个字符串和[Enter]来查找字符串;

[n] 发现上一次查找的下一个匹配。

4.阅读手册页

手册页在很少的空间里提供了很多的信息,这里简单介绍一下大多数手册页中都有的部分内容。Linux手册页 主要有九个部分:用户指令、系统调用、程序库、设备说明、文件格式、游戏、杂项、系统指令、内核。

5.应用实例

Linux命令中有一些基础的、重要的命令,例如ps、find、cat和ls等。下面来举一个综合应用的例子,由此可以看出man的地位在Linux中可谓至关重要。但是,man所显示的信息却不是普通的文本,如果直接将这些文字重定向到一个文本文件,就会发现在man中高亮显示的文字就变成了两个,而且有不计其数的制表符,使打印、编辑都变得非常不便。不过,使用下面这样一条语句就能得到ps命令打印。

#man ps | col -b | lpr

这条命令同时运用了输出重定向和管道两种技巧,作用是将ps命令的帮助信息可以直接打印出来。更多的Man文件可以查看Linux Man。

unencode

1.作用

unencode命令可以把一个二进制文件表编码为一个文本文件,使用权限是所有用户。

2.格式

uuencode [-hv] [源文件] 目标文件

3.主要参数

-h:列出指令使用格式(help)。

-v:列出版本信息。

4.应用说明

uuencode指令可以将二进制文件转化成可使用电子邮件发送的ASCII编码形式。uuencode编码后的资料都以begin开始,以end作为结束,且通常其中的每一行的开始均为“M”,中间部分是编码过的文件,编码后的文件比源文件要大一些。

uudecode

1.作用

uudecode命令用来将uuencode编码后的档案还原,uudecode只会将begin与end标记之间的编码资料还原,程序会跳过标记以外的资料。它的使用权限为所有用户。

2.格式

uuencode [-hv] [file1 ...]

3.主要参数

-h:列出指令使用格式(help)。

-v:列出版本信息。

4.应用实例

使用下面命令一次还原几个文件:

uuencode file1.uud file2.uud file3.uud

2012 年 5 月 18 日 关于电子

丁亥年,癸卯月,乙丑日

银月高挂,华灯初上了。

独坐灯前,望嬉笑间烟香纷飞。

却几时,少了许多故事。

与他人,漫染绡绫。

三两个不能自己,而今已去。

四月一日。

夜间无人。

风过林间闲敲子。

对灯语。

往来多少无算计,虽不想从头来过。

但那风烟、那月下枯影。

不能一一识别。

给我数盏淡茶光阴。

细细品来,已然天明。

2012 年 4 月 18 日 谎言