项目二:管理与维护Linux系统 (任务一、二)

任务一:安装与配置初始CentOS系统
任务二:认识Linux的文件系统

[任务实施]

[子任务一] 熟悉Linux系统中的目录结构

第1步:理解Linux系统的目录结构树

Linux操作系统中的主要目录及目录内容由文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义。在FHS中,所有的文件和目录都出现在根目录"/"下,即使他们存储在不同的物理设备中。但是请注意,这些目录中的一些可能或可能不会在Linux系统上出现,这取决于系统是否含有某些子系统,例如 X Window系统 的安装与否。下面是FHS中所定义的一些目录,和目录的描述:

  • /bin 二进制可执行命令

  • /dev 设备特殊文件

  • /etc 系统管理和配置文件

  • /etc/rc.d 启动的配置文件和脚本

  • /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示

  • /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件

  • /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序

  • /tmp 公用的临时文件存储点

  • /root 系统管理员的主目录

  • /mnt 系统提供这个目录是让用户临时挂载其他的文件系统。

  • /lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里

  • /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。

  • /var 某些大文件的溢出区,比方说各种服务的日志文件

  • /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:

  • /usr/x11r6 存放x window的目录

  • /usr/bin 众多的应用程序

  • /usr/sbin 超级用户的一些管理程序

  • /usr/doc linux文档

  • /usr/include linux下开发和编译应用程序所需要的头文件

  • /usr/lib 常用的动态链接库和软件包的配置文件

  • /usr/man 帮助文档

  • /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里

  • /usr/local/bin 本地增加的命令

  • /usr/local/lib 本地增加的库


第2步:对比理解Linux系统的文档结构


第3步:列出Linux下一些常用目录的功能

1. /bin目录

/ b i n目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序( b i n是b i n a r y - -二进制的简称),多是系统中重要的系统文件。

2. /sbin目录

/ s b i n目录类似/bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。

3. /etc目录

/ e t c目录存放着各种系统配置文件,其中包括了用户信息文件/ e t c / p a s s w d,系统初始化文件/ e t c / r c等。l i n u x正是*这些文件才得以正常地运行。

4. /root目录

/root 目录是超级用户的目录。

5. /lib目录

/ l i b目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。

6. /lib/modules 目录

/lib/modules 目录包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)。

7. /dev目录

/ d e v目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问/ d e v / m o u s e来访问鼠标的输入,就像访问其他文件一样。

8. /tmp目录

/tmp 目录存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用/ v a r / t m p来代替/tmp ,因为前者可能拥有一个更大的磁盘空间。

9. /boot目录

/ b o o t目录存放引导加载器(bootstrap loader)使用的文件,如l i l o,核心映像也经常放在这里,而不是放在根目录中。但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的文件系统会更好一些。还有一点要注意的是,要确保核心映像必须在i d e硬盘的前1 0 2 4柱面内。

10. /mnt目录

/ m n t目录是系统管理员临时安装( m o u n t )文件系统的安装点。程序并不自动支持安装到/mnt 。/mnt 下面可以分为许多子目录,例如 /mnt/dosa 可能是使用m s d o s文件系统的软驱,而/mnt/exta 可能是使用e x t 2文件系统的软驱,/mnt/cdrom 光驱等等。

11. /proc, /usr,/var,/home目录

[子任务二]了解Linux系统中的路径规则

第1步:理解绝对路径

因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 这两种文件名/路径的写法依据是这样的:

绝对路径:

由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;

第2步:理解相对路径

相对路径:

相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 http://www.cnblogs.com/home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法

而你必须要了解,相对路径是以你当前所在路径的相对位置来表示的。


【子任务三】掌握Linux系统中的基本命令

第一步:使用【pwd】命令打印出当前所在目录

1.      命令名称:pwd

2.      命令英文原意:print working  directory

3.      命令执行权限: 所有用户

4.      语法:pwd

5.      功能描述: 显示当前目录

6.      范例:

$ pwd


第2步:使用【cd】命令进入文件的目录

cd是进入一层文件夹命令,比如c:\cd users 将会显示c:\users 

然后再用CD进下一目录,如果进错了,可以用cd..来退回上一层

下面给你一个图,我是从桌面先用cd..退到C盘根目录,再进入桌面。

第3步:使用【ls】命令显示文件信息

ls -l(这个参数是字母L的小写,不是数字1)  
这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令

在提示符下输入ls --help ,屏幕会显示该命令的使用格式及参数信息:

先介绍一下ls命令的主要参数:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

-A 显示除 “.”和“..”外的所有文件

第4步:使用【more】或【less】命令分屏显示文件与目录

more命令
more命令显示文件内容,每次显示一屏。

一般格式:more [选项] 文件
说明:该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答:
①按Space键,显示文本的下一屏内容。
②按Enier键,只显示文本的下一行内容。
③按斜线符(l),接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
④按H键,显示帮助屏,该屏上有相关的帮助信息。
⑤按B键,显示上一屏内容。
⑥按Q键,退出rnore命令。
常用选项:
-num,这个选项指定一个整数,表示一屏显示多少行。
-d,在每屏的底部显示以下更友好的提示信息:
--More--(XX%) [Press space to continue, ’q’ to quit.]
而且当用户按键时有错误,则显示[Press ’h’, for instructions.]信息,而不是简单的报警。
-c或-p,不滚屏,在显示下一屏之前先清屏。
-s,将文件中连续的空白行压缩成一个空白行显示。
+/,该选项后的模式(Pattem)指定显示每个文件之前进行搜索的字符串。
+num,从行号num开始。
more命令在执行过程中还用到一些基于vi编辑器的交互式命令,这里不做详述。
示例:
①显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
# more -dc file
②显示文件file的内容,每10行显示一次,而且在显示之前先清屏。
# more -c -10 file

less命令
与more命令一样,less命令也用来分屏显示文件的内容。但是二者存在差别:less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。less有几种格式和很多选项,这里不做详述。

第5步:使用【cat】命令查看文件内容

cat命令
cat命令连接文件并打印到标准输出设备上。cat经常用来显示文件的内容,类似于下的TYPE命令。

一般格式:cat [选项] 文件
说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如 cat fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。
常用选项:
-b,--number-noblank 从1开始对所有非空输出行进行编号。
-n,--number 从1开始对所有输出行编号。
-s,--squeeze-blank 将多个相邻的空行合并成一个空行。
-help 打印该命令用法,并退出,其返回码表示成功。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回shell提示符状态。
示例:(设ml和m2是当前目录下的两个文件)
# cat m1 (在屏幕上显示文件ml的内容)
# cat m1 m2 (同时显示文件ml和m2的内容)
# cat m1 m2 > file (将文件ml和m2合并后放入文件file中)

第6步:使用【mkdir】命令创建目录

mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 

注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。

在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。

语法

mkdir (选项)(参数)

选项

-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。

参数

目录:指定要创建的目录列表,多个目录之间用空格隔开。

实例

在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问

mkdir -m 700 /usr/meng/test

在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问

mkdir -p-m 750 bin/os_1

第7步:使用【touch】命令创建文件

touch命令
可以修改指定文件的时间标签或者创建一个空文件。

一般格式:touch [选项] 文件名…
说明:touch命令将会修改指定文件的时间标签,把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来。如果该文件尚未存在,则建立一个空的新文件。
选项:
-a 仅改变指定文件的存取时间。
-c 不创建任何文件。
-m 仅改变指定文件的修改时间。
-t STAMP 使用STAMP指定的时间标签,而不是系统当前的时间。STAMP的格式为[[CC]YY]MMDDhhmm[.ss],其中,CC表示年份的前两位,YY表示年份的后两位,MM表示月份,DD表示日期,hh表示小时,mm表示分钟,ss表示秒。
示例:
# touch ex2 在当前目录下建立一个空文件ex2。
然后,利用ls -l命令可以发现文件ex2的大小为0,表示它是空文件

第8步:使用【rmdir】命令删除目录

rmdir命令(删除一个目录)

功能:删除空目录。
语法:rmdir [选项] dirname 
说明:dirname表示目录名。该命令从一个目录中删除一个或多个子目录项。需要 特别注意的是,一个目录被删除之前必须是空的。(注意,rm - r dir命令可代替 rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。
参数:
- p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
例如:
$ rmdir - p /usr/xu/txt 将/usr/xu/txt目录删除。 
改变工作目录、显示目录内容命令

第9步:使用【rm】命令删除目录或文件

rm命令

    功能:在linux中创建文件很容易,系统中随时会有文件变得过时且毫无用处。用户可以用rm命令将其删除。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
语法: rm [选项] 文件… 
如果没有使用- r选项,则rm不会删除目录。 
参数:
- f 忽略不存在的文件,从不给出提示。 
- r 指示rm将参数中列出的全部目录和子目录均递归地删除。
- i 进行交互式删除。 
使用rm命令要格外小心。因为一旦一个文件被删除,它是不能被恢复的。例如,用户在输入cp,mv或其他命令时,不小心误输入了rm命令,当用户按了回车键并认识到自己的错误时,已经太晚了,文件已经没有了。为了防止此种情况的发生,可以使用rm命令中的 i选项来确认要删除的每个文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件将被保留。在下一个例子中,用户要删除文件test和example。然后会被要求对每个文件进行确认。用户最终决定删除example文件,保留test文件。

第10步:使用【cp】命令复制文件

cp命令
    将源文件或目录文件复制到目标文件或目录一般格式: cp  [选项]   源文件或目录
   目标文件或目录 **注意**如果源文件是普通文件,则该命令把它复制到指定的目标文
   件中;如果是目录,就需要使用“-r”选项,将整个目录下 的所有的文件和字目录都复制到目标位置

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

语法

cp(选项)(参数)

选项

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

参数

  • 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
  • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

实例

如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

cp ../mary/homework/assign .

所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。

将文件file复制到目录/usr/men/tmp下,并改名为file1

cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh

cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。

cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。

cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。

\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。

第11步:使用【mv】移动或重命名文件或目录

mv命令

      用来对文件或目录重新命名(当source 和target在同一个目录(文  件夹)是,相当于重命名),
      或者将文件从一个目录移到另一个目录中。一般格式:mv  [选项]  source  target **选项**  
 例::1.   $mv  ex3  new1   ---将文件ex3改名为new1 

       2.   $mv  /usr/mengqc/*   .   -----将目录/usr/mengqc/中的所有文件移动到当前目录中(用“.”
            表示当前目录)。

-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
    -t  : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

第12步:重启与关机

重启命令:
1、reboot
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

reboot(8)、halt(8)、poweroff(8):reboot or stop the system,这三个命令类似,查找man时,它们在同一个page8。当执行命令时使用了参数“-f”或者处于0~6的runlevel时,将会激活系统调用reboot(2) (REBOOTCOMMAND参数会传过去)并直接重启系统,否则调用的是shutdown(8),此时REBOOTCOMMAND参数不会传过去。在调用reboot(2)之前,shutdown时间记录会首先写入/var/log/wtmp中。

关机命令:
1、halt   立刻关机
2、poweroff  立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机
如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

halt命令的部分参数如下:

  [-f] 没有调用shutdown而强制关机或重启


  [-i] 关机或重新启动之前,关掉所有的网络接口


  [-p] 关机时调用poweroff,此选项为缺省选项

第13步:查看系统相关状态

iostat

iostat 命令详细地显示了存储子系统方面的情况。你通常用iostat来监控存储子系统总 体上运行状况如何,并且在用户注意到服务器运行缓慢之前提早发现输入/输出缓慢的问题 。相信我,你应该在用户发现这些问题之前先发现这些问题!

meminfo和free

meminfo为你详细显示了内存方面的情况。你通常可以使用另一个程序,比如cat和grep ,来访问meminfo的信息。比如说,cat /proc/meminfo为你详细显示了服务器的内存在任何 一个时间的使用情况。

如果想快速了解内存的概要信息,可以使用free命令。简而言之,free为你提供了概要 信息;meminfo为你提供了详细信息。

mpsta

mpstat命令可以报告多处理器服务器上每个可用处理器的活动情况。如今,由于多核处 理器,这个命令适用于几乎所有服务器。mpstat还可以报告所有服务器上的处理器的平均活 动情况。它让你能够按照系统或按照处理器来显示总的处理器统计信息。这个概要信息可以 在潜在的应用程序问题惹毛用户之前提醒你注意。

netstat

netstat与ps一样,也是Linux管理员每天都使用的Linux工具。它显示了与网络有关的大 量信息,比如套接口使用情况、路由、接口、协议、网络统计信息及更多信息。最常用的一 些选项如下:

-a 显示套接口的所有信息

-r 显示路由信息

-i 显示网络接口的统计信息

-s 显示网络协议的统计信息

nmon

nmon是Nigel's Monitor的简称,这款广受欢迎的开源工具用来监控Linux系统的性能。 nmon可以监控多个子系统的性能信息,比如处理器使用率、内存使用率、运行队列的信息、 磁盘输入/输出统计信息、网络输入/输出统计信息、内存分页活动和进程衡量指标。然后, 你可以通过curses"图形化"界面,查看 nmon的实时系统衡量结果。

想运行nmon,你可以从外壳来启动该工具。一旦启动,只要输入单键命令,就可以选择 要监控的子系统。比如说,想获得处理器、内存和磁盘等方面的统计信息,只要分别输入c 、m和d.也可以使用带-f标志的nmon,将性能统计信息保存到CSV文件中,以便日后分析。

就日常的服务器监控而言,我觉得nmon是我的Linux系统管理工具包中最有用的一个程序 。

pmap

pmap命令用来报告服务器的进程所使用的内存量。你可以用这个工具来确定服务器上哪 些进程被分配了内存、这些进程中有谁在大量使用内存。

ps和pstree

ps和pstree这两个命令是Linux系统管理员的两个得力助手。它们都能以列表的形式显示 所有目前在运行的进程。ps可以告诉你服务器的程序在使用多少的内存和处理器时间。 pstree显示的信息比较少,但着重表明了哪些进程是其他进程的子进程。掌握了这些信息, 你就能发现失控的进程,然后用 Linux"不留活口"的kill命令,来终止这些进程。

sar

sar程序好比是系统监控工具领域的瑞士军刀。sar命令实际上由三个程序组成:显示数 据的sar、收集数据的sa1以及保存数据的sa2.一旦安装完毕,sar就能生成详细的概要信息 ,显示处理器使用率、内存分页活动、网络输入/输出和传输方面的统计信息、进程创建活 动以及磁盘设备活动。sar和 nmon的一大区别在于,前者更适合长期监控系统,我觉得nmon 则比较适合帮助我快速查看服务器的运行状况。

strace

strace 经常被认为是程序员的调试工具,但它的功用不仅仅用来调试。它可以截获和记 录进程调用系统的情况。因而,它是一个实用的诊断、教学和调试工具。比如说,你可以使 用strace来查出某个程序在启动时实际上使用哪个配置文件。

不过strace的确有一个缺陷。它在检查某个进程时,该进程的性能会一落千丈。因而, 只有在我已经有极其充分的理由认为某个程序引起问题的情况下,才使用strace.

tcpdump

tcpdump是一个简单而可靠的网络监控实用工具。其基本的协议分析功能让你能够粗略查 看网络上的情况。不过想真正深入分析网络方面的情况,你应该使用Wireshark(下面有介 绍)。

top

top命令显示了活动进程方面的情况。默认情况下,它显示了服务器上运行的最消耗处理 器的任务,而且每5秒钟就刷新一次列表。你还可以按多个标准对进程进行分类,比如PID( 进程ID);年限,最新的列在最前面;时间,按累计时间;以及驻留内存使用情况和自启动 以来一直使用处理器的总时间。我觉得它提供了一种快速而简易的方法,便于查看有没有进 程开始即将失控、带来问题。

uptime

uptime可用来查看某台服务器运行了多久、有多少个用户登录上去。它还显示了服务器 平均负载的概要信息。负载的最佳值是1或更小,这意味着每个进程可以立即访问处理器、 不存在处理器周期丢失的情况。

vmstat

大体上来说,你可以使用vmstat来监控虚拟内存方面的情况。Linux不断使用虚拟内存, 以获得最佳的存储性能。

如果你的应用程序在占用过多的内存,你就会遇到频繁被换出内存(page-out)的情况 ——即程序从内存进入到系统硬驱上的交换空间。你的服务器可能会进入到这个 阶段:花在管理内存分页上的时间比花在运行应用程序上的时间还多——这种情 况被称为抖动(thrashing)。当你的电脑抖动时,性能就一落千丈。Vmstat可以显示平均 的数据或实际样本,可以帮助你发觉大量耗用内存的程序和进程,以免它们导致服务器运行 起来如同蜗牛缓行。

Wireshark

Wireshark之前名为Ethereal(而且现在仍经常这么叫),是tcpdump的同类工具,不过 它更为高级,拥有先进得多的协议分析和报告功能。Wireshark既有GUI界面,又有外壳界面 。如果你从事专业级的网络管理工作,只能使用ethereal.而如果你在使用 Wireshark/ethereal,我强烈建议阅读Chris Sander所着的《实用数据包分析》 (Practical Packet Analysis),该书深入浅出地介绍了如何最充分地利用这款实用程序 。

 

系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各 分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看 系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时 IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# w # 查看活动用户
# id # 查看指定 用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看 系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig -list # 列出所有系统服务
# chkconfig -list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包

第14步:熟悉以下常用命令以及功能

ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名

 ls -lh 显示权限
ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示

cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备

cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行
tail -f /var/log/messages 实时查看被添加到一个文件中的内容

grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"

cat -n file1 标示文件的行数
cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行

【子任务四】挂载外部文件到Linux系统中

第1步:理解挂载的概念

在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。 第三方软件,如磁盘分区管理软件、虚拟磁盘软件等,通常也附带挂载功能。 在linux操作系统中, 挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。

在windows操作系统中,

挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。

这个操作可以通过"计算机管理"中的"磁盘管理"来进行。

第三方软件,如磁盘分区管理软件、虚拟磁盘软件等,通常也附带挂载功能。

在linux操作系统中,

挂载是一个非常重要的功能,使用非常频繁。

它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。

(这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。)

需要理解的是,

linux操作系统将所有的设备都看作文件,

它将整个计算机的资源都整合成一个大的文件目录

我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,

然后通过访问这个目录来访问存储设备

第2步:使用挂载命令的参数

首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。

命令格式:mount [-t vfstype] [-o options] device dir

1、-t vfstype 指定文件系统的类型,通常不必指定,mount 会自动选择正确的类型。

光盘或光盘镜像:iso9660 
DOS fat16文件系统:msdos 
Windows 9x fat32文件系统:vfat 
Windows NT ntfs文件系统:ntfs 
Mount Windows文件网络共享:smbfs 
UNIX(LINUX) 文件网络共享:nfs

2、-o options 主要用来描述设备或档案的挂接方式。

loop:用来把一个文件当成硬盘分区挂接上系统 
ro:采用只读方式挂接设备 
rw:采用读写方式挂接设备 
iocharset:指定访问文件系统所用字符集

3、device 要挂接(mount)的设备。
4、dir设备在系统上的挂接点(mount point)。

挂载时使用mount命令:

格式:mount [-参数] [设备名称] [挂载点]

其中常用的参数有:

-t<文件系统类型> 指定设备的文件系统类型,

常见的有: minix linux最早使用的文件系统

ext2 linux目前常用的文件系统

msdos MS-DOS的fat,就是fat16

vfat windows98常用的fat32

nfs 网络文件系统

iso9660 CD-ROM光盘标准文件系统

ntfs windows NT 2000的文件系统

hpfs OS/2文件系统

auto 自动检测文件系统

-o<选项> 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。

常用的有 codepage=XXX 代码页 iocharset=XXX 字符集 ro 以只读方式挂载

rw 以读写方式挂载 nouser 使一般用户无法挂载 user 可以让一般用户挂载设备

第3步:使用挂载命令选项

1.挂载光盘 
   
  挂载光盘的命令如下: 
   
  # mount -t is09660 /dev/cdrom /mnt/cdrom 
   
  该命令将光盘挂载到/mnt/cdrom目录,使用“ls /mnt/cdrom”命令即可显示光盘中数据和文件。 
   
  卸载光盘的命令如下: 
   
  # umount /mnt/cdrom 
   
  2.挂载软盘 
   
  将软盘挂载到/mnt/floppy目录的命令如下: 
   
  # mount /dev/fd0 /mnt/floppy 
   
  卸载软盘的命令如下: 
   
  #umount /mnt/floppy 
   
  3.挂载U盘挂载U盘相对复杂一些。 
   
  首先使用“fdisk -l”命令查看外挂闪存的设备号,一般为/dev/sda1。然后用“mkdir /mnt/usb”命令建立一个挂载U盘用的目录。之后使用如下命令挂载FAT格式的U盘: 
   
  # mount -t msdos /dev/sda1 /mnt/usb 
   
  使用如下命令挂载FAT32格式的U盘: 
   
  # mount -t vfat /dev/sda1 /mnt/usb 
   
  4.挂载外挂硬盘分区 
   
  挂载外挂硬盘分区(FAT32格式)同样需要先用“fdisk -1”查看外挂的硬盘分区设备号,假设为/dev/hda1。建立/mnt/vfat挂载目录后,使用如下命令进行挂载: 
   
  # mount -t vfat /dev/hda1 /mnt/vfat 
   
  注意,默认情况下Linux只允许root用户执行mount命令。如果想让一般用户也能挂载,并且希望在系统启动时自动挂载光盘或软盘,需要修改/etc/fstab配置文件,加入以下内容: 
   
  LABEL=/ / ext3   defaults  11 
  /dev/cdrom/mnt/cdrom iSo9660 auto,owner,kudzu,ro,user 00 
  /dev/fdo /mnt/floppy auto auto,owner,kudzu,ro,user 00 
   
  其中,“user”表示将mount命令赋予一般用户使用。

【子任务五】掌握Linux系统中的自动挂载

开机自动挂载

如果我们想实现开机自动挂载某设备,只要修改/etc/fstab文件即可。

文件挂载的配置文件/etc/fstab

wKiom1e7vF_iNNTXAAAo2-XXpTo662.gif

查看此文件可知

每行定义一个要挂载的文件系统;

其每行的格式如下

要挂载的设备或伪文件系统  挂载点  文件系统类型  挂载选项 转储频率 自检次序

UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot  xfs    defaults    0 0

    要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)

    挂载点:指定的文件夹

   挂载选项:defaults

    转储频率

      0:不做备份

      1:每天转储

      2:每隔一天转储

    自检次序

      0:不自检

      1:首先自检;一般只有rootfs才用1;


/etc/fstab和/etc/mtab的区别

   /etc/fstab文件的作用

记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。 

  /etc/mtab文件的作用: 

   先看它的英文是: 

     This changes continuously as the file /proc/mount changes. In other words, when filesystems are mounted and unmounted, the change is immediately reflected in this file. 

     记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。 每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值