Archive for 八月, 2011


网站压力测试工具webbench

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。

1、适用系统:Linux

2、编译安装:

wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

3、使用:

webbench -c 500 -t 30 http://127.0.0.1/test.jpg

参数说明:-c表示并发数,-t表示时间(秒)

4、测试结果示例:

Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1/test.jpg
500 clients, running 30 sec.

Speed=3230 pages/min, 11614212 bytes/sec.
Requests: 1615 susceed, 0 failed.

注意:webbench 做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。

登录步骤
=========
login : _______ => 输入 username
password : _______ => 输入密码

..退出步骤
=========
% logout
或 % exit
或 %

更改帐号密码
============

% passwd => 执行后将会出现下列讯息
Changing NIS password for user on ice.
Old password: ______ => 输入旧密码
New password: ______ => 输入新密码(最好6-8字,英文字母与数字混合)
Retype new password: ______ => 再输入一次密码

在线指令说明
============
执行格式: man command-name
Example: % man ls

进入远端电脑系统
================
执行格式:rlogin hostname [-1 username]
Example:
%rlogin doc
remote login 进入工作站 doc 中。
%rlogin doc -l user
使用 user 帐号进入工作站 doc 中。

执行格式:telnet hostname 或 telnet IP address
Example:
%telnet doc or %telnet 140.109.20.251

文件或目录处理
==================
.列出文件或目录下之文件名称
执行格式: ls [-atFlgR] [name] ( name 可为文件名或目录名称。)

Example :
ls 列出目前目录下之文件名。
ls -a 列出包含以.起始的隐藏档所有文件名。
ls -t 依照文件最后修改时间之顺序,依序列出文件名。
ls -F 列出目前目录下之文件名及其类型。”/” 结尾表示为目录名称,

“*” 结尾表示为执行档,”@” 结尾表示为 symblic link。
ls -l 列出目录下所有文件之许可权、拥有者、文件大小、修改时间及名称。
ls -lg 同上,并显示出文件之拥有者群组名称。
ls -R 显示出目录下,以及其所有子目录之文件名。( recursive listing )

目录之缩写:
===========
~     使用者 login 时的 working directory ( 起始目录 )
~username 指定某位 user 的 working directory ( 起始目录 )
.. 目前的工作目录 ( current working directory )
.. 目前目录的上一层目录 ( parent of working directory)

改变工作目录位置
================
执行格式:cd [name] :name 可为目录名称、路径或目录缩写。
Example:
cd 改变目录位置,至使用者 login 时的 working directory (起始目录)。
cd dir1 改变目录位置,至 dir1 之目录位置下。
cd ~user 改变目录位置,至使用者的 working directory (起始目录)。
cd .. 改变目录位置,至目前目录的上层( 即 parent of working directory)
cd ../user 改变目录位置,至相对路径 user 之目录位置下。
cd /../.. 改变目录位置,至绝对路径( Full path ) 之目录位置下。

复制文件
========
执行格式: cp [-r] source destination

Example:
cp file1 file2 将文件 file1 复制成 file2
cp file1 dir1 将文件 file1 复制到目录 dir1 下,文件名仍为 file1。
cp /tmp/file1 . 将目录 /tmp 下的文件 file1 复制到现行目录下,文件名仍为 file1。
cp /tmp/file1 file2 将目录 /tmp 下的文件 file1 复制到现行目录下,文件名为 file2□
cp -r dir1 dir2 (recursive copy) 复制整个目录。
若目录 dir2 不存在,则将目录 dir1,及其所有文件和子目录,复制
到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将
dir1,及其所有文件和子目录,复制为目录 dir2。

移动或更改文件、目录名称
========================
执行格式: mv source destination
Example:
mv file1 file2 将文件 file1,更改文件名为 file2。
mv file1 dir1 将文件 file1,移到目录 dir1 下,文件名仍为 file1。
mv dir1 dir2 若目录 dir2 不存在,则将目录 dir1,及其所有文件和子目录,移
到目录 dir2 下,新目录名称为 dir1。若目录 dir2 不存在,则将
dir1,及其所有文件和子目录,更改为目录 dir2。

建立新目录
==========
执行格式: mkdir directory-name
Exmaple :
mkdir dir1 建立一新目录 dir1。

删除目录
========
执行格式: rmdir directory-name 或 rm directory-name
Example :
rmdir dir1 删除目录 dir1,但 dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录 dir1,及其下所有文件及子目录。

删除文件
========

执行格式: rm filename (filename 可为文件名,或文件名缩写符号。)
Example :
rm file1 删除文件名为 file1 之文件。
rm file? 删除文件名中有五个字元,前四个字元为file 之所有文件。
rm f* 删除文件名中,以 f 为字首之所有文件。

文件名的缩写符号
==============

? 代表文件名称中之单一字元。
* 代表文件名称中之一字串。

列出目前所在之目录位置
======================
执行格式: pwd

查看文件内容

============
执行格式: cat filename
Example :
cat file1  以连续显示方式,查看文件名 file1 之内容。
执行格式: more filename 或 cat filename   more
Example :
more file1  以分页方式,查看文件名 file1 之内容。
cat file1   more 同上。

查看目录所占磁盘容量
====================
执行格式: du [-s] directory
Example :
du dir1 显示目录 dir1 的总容量及其次目录的容量(以 k byte 为容量)。
du -s dir1 显示目录 dir1 的总容量。
查看自己的 disk quota 使用状况
==============================
disk quota : 工作站磁盘空间的使用限额。
执行格式: quota -v
Example :
quota -v 将会显示下列讯息
Filesystem usage quota limit timeleft files quota limit timelef.
/home/ice/u01
9344 8192 12288 1.9 days 160 0 0
栏位解说:
usage : 目前的磁盘用量。
quota : 你的磁盘使用额度。当你的 usage 超过 quota 时,虽然可以继续使用,但是必须七天之内降到 quota 以下,否则即使用量没有超 limit(最高限额),也无法再写入或复制任何文件。
limit : 最高使用额度。当你的 usage 达到 limit 时,无法再写入或复制任何文件。

文件传输
========

.拷贝文件或目录至远端工作站
============================
执行格式: rcp [-r] source hostnome:destination
( source 可为文件名、目录名或路径,hostnome 为工作站站名,destination 为路径名称.

Example :
rcp file1 doc:/home/user
将文件 file1,拷贝到工作站 doc 路径 /home/user 之目录下。
rcp -r dir1 doc:/home/user
将目录 dir1,拷贝到工作站 doc 路径/home/user 之目录下。
.自远端工作站,拷贝文件或目录
===============================

执行格式: rcp [-r] hostname:source destination
( hostname 为工作站名,source 为路径名,destination 可为文件名、目录名或路径 )。
Example :
rcp doc:/home/user/file1 file2
将工作站 doc 中,位於 /home/user 目录下之目录 dir1,拷贝到目前工作站之目录下,
目录名称仍为 dir1。
rcp -r doc:/home/user/dir1 .
将工作站 iis1 中,位於 /home/user 目录下之目录 dir1,拷贝到目前工作站之目录下目录名称仍为 dir1。

.本地工作站与远端工作站之间文件传输
====================================
( 必须拥有远端工作站之帐号及密码,才可进行传输工作 )
执行格式: ftp hostname or ftp ip_address
Example :
ftp doc 与远端工作站 doc ,进行文件传输
Name (doc:user-name) : 输入帐号
Password (doc:user-name): 输入密码

ftp> help 列出 ftp 文件传输,可使用之任何命令。
ftp> !ls 列出本地工作站,目前目录下之所有文件名。
ftp> !pwd 列出本地工作站,目前所在之工作目录位置。
ftp> ls 列出远端工作站目前目录下之所有文件名。
ftp> dir 列出远端工作站目前目录下之所有文件名(略同於 UNIX 的 ls -l 指令).
ftp> dir .  more 同上,但每页会暂停(可能不适用 Unix 以外的 ftp)。
ftp> pwd 列出远端工作站目前所在之目录位置。
ftp> cd dir1 更改远端工作站之工作目录位置至 dir1 之下。
ftp> get file1 将远端工作站之文件 file1 ,拷贝到本地工作站中。
ftp> put file2 将本地工作站之文件 file2 ,拷贝到远端工作站中。
ftp> mget *.c 将远端工作站中,副文件名为 c 之所有文件,拷贝到本地工作站中。
ftp> mput *.txt 将本地工作站中,副文件名为 txt 之所有文件,拷贝远端工作站中。
ftp> prompt 切换交谈式指令(使用 mput/mget 时不用每个文件皆询问yes/no)。
ftp> quit 结束 ftp 工作。
ftp> bye 结束 ftp 工作。
注: 从PC与工作站间的文件传输也可通过在 PC端的 FTP指令进行文件传输,指令用法与
上所述大致相同。

文件模式之设定
==============
.改变文件或目录之读、写、执行之允许权
======================================
执行格式:chmod [-R] mode name
( name 可为文件名或目录名;mode可为 3 个 8 位元之数字,或利用ls -l 命令,列出文件或目录之读、写、执行允许权之文字缩写。)
mode : rwx rwx rwx r:read w:write x:execute
user group other
缩写 : (u) (g) (o)

Example :
%chmod 755 dir1
将目录dir1,设定成任何使用者,皆有读取及执行之权利,但只有拥有者可做修改。
%chmod 700 file1
将文件file1,设定只有拥有者可以读、写和执行。
%chmod o+x file2
将文件file2,增加拥有者可以执行之权利。
%chmod g+x file3
将文件file3,增加群组使用者可执行之权利。
%chmod o-r file4
将文件file4,除去其它使用者可读取之权利。

.改变文件或目录之拥有权
========================
执行格式:chown [-R] username name ( name 可为文件名或目录名。)

Example :
%chown user file1
将文件 file1 之拥有权,改为使用者 user 所有。
%chown -R user dir1
将目录 dir1,及其下所有文件和子目录之拥有权,改为使用者 user 所有。

检查自己所属之群组名称
======================
执行格式:groups

.改变文件或目录之群组拥有权
============================

执行格式:chgrp [-R] groupname name ( name 可为文件名或目录名 )
Example :
%chgrp vlsi file1
将文件 file1 之群组拥有权,改为 vlsi 群组。
%chgrp -R image dir1
将目录dir1,及其下所有文件和子目录,改为 image 群组。

.改变文件或目录之最后修改时间
==============================
执行格式:touch name ( name 可为文件或目录名称。)

文件之连结
==========
同一文件,可拥有一个以上之名称,可将文件做数个连结。
执行格式:ln oldname newname ( Hard link )
Example :
ln file1 file2   将名称 file2,连结至文件 file1。

执行格式:ln -s oldname newname ( Symblick link )
Example :
ln -s file3 file4 将名称 file4,连结至文件file3。

文件之字串找寻
==============
执行格式:grep string file
Example :
grep abc file1
寻找文件file1中,列出字串 abc 所在之整行文字内容。

找寻文件或命令之路径
====================
执行格式:whereis command ( 显示命令之路径。)
执行格式:which command ( 显示命令之路径,及使用者所定义之别名。)
执行格式:whatis command ( 显示命令功能之摘要。)
执行格式:find search-path -name filename -print
( 搜寻指定路径下,某文件之路径 。)
Example :
%find / -name file1 -print ( 自根目录下,寻找文件名为 file1 之路径。

比较文件或目录之内容

====================

执行格式:diff [-r] name1 name2 ( name1 name2 可同时为文件名,或目录名称。)
Example :
%diff file1 file2
比较文件 file1 与 file2 内,各行之不同处。
%diff -r dir1 dir2
比较目录 dir1 与 dir2 内,各文件之不同处。

文件打印输出
============
使用者可用 .login 档中之 setenv PRINTER,来设定打印资料时的打印机名。
printername :sp1 或 sp2 (1005 教室)
Example :
%setenv PRINTER sp2 设定自 sp2 打印资料。

一般文件之打印
==============
执行格式:lpr [-Pprinter-name] filename
%lpr file1 或 lpr -Psp2 file1
自 sp2,打印文件 file1。

执行格式:enscript [-Pprinter-name] filename
%enscript file3 或 enscript -Psp1 file3
自 sp1 打印文件 file3。

.troff 文件之打印
==================
执行格式:ptroff [-Pprinter-name] [-man][-ms] filename
%ptroff -man /usr/local/man/man1/ptroff.1
以 troff 格式,自 Apple laser writer 打印 ptroff 命令之使用说明。

%ptroff -Psp2 -man /usr/man/man1/lpr1
以 troff 格式,自 sp2 打印 lpr 命令之使用说明。

打印机控制命令
==============

.检查打印机状态,及打印工作顺序编号和使用者名称
================================================
执行格式:lpq [-Pprinter -name]
%lpq 或 lpq -Psp1
检查 sp1 打印机之状态。
.删除打印机内之打印工作 ( 使用者仅可删除自己的打印工作 )
========================
执行格式:lprm [-Pprinter -name] username 或 job number
%lprm user 或 lprm -Psp1 user
删除 sp1 中,使用者 user 的打印工作,此时使用者名称必须为 user。
%lprm -Psp2 456
删除 sp2 编号为 456 之打印工作。

Job 之控制
===========
UNIX O.S.,可於 foregrourd 及 background 同时处理多个 process。
一般使用者执行命令时,皆是在 foreground 交谈式地执行 process,亦可将 process
置於 background 中,以非交谈式来执行 process。

.查看系统之 process
====================
执行格式:ps [-aux]
Example:
%ps 或 ps -x (查看系统中,属於自己的 process。)
%ps -au   (查看系统中,所有使用者的 process。)
%ps -aux   (查看系统中,包含系统内部,及所有使用者的 process。)

.结束或终止 process
====================
执行格式:kill [-9] PID ( PID 为利用 ps 命令所查出之 process ID。)
Example:
%kill 456 或 kill -9 456
终止 process ID 为 456 之 process。

.在 background 执行 process 的方式
===================================

执行格式:command amp; (於 command 后面加入一 “amp;” 符号即可。)
Example:
%cc file1.c amp;
将编译 file1.c 文件之工作,置於 background 执行。
执行格式:按下 “Control Z” 键,暂停正在执行的 process。键入 “bg” 命令命令,将所暂停的 process,置入 background 中继续执行。
Example:
%cc file2.c
^Z
Stopped
%bg

.查看正在 background 中执行的 process
======================================
执行格式:jobs

.结束或终止在 background 中的 process
======================================
执行格式:kill %n
(n 为利用 “jobs” 命令,所查看出的 background job 编号)
Example:
%kill % 终止在 background 中的第一个 job。
%kill %2 终止在 background 中的第二个 job。

shell varialbe
==============

.查看 shell variable 之设定值
==============================

执行格式:set    查看所有 shell variable 之设定值。
%set
执行格式:echo $variable-name 显示指定的 shell variable 之设定值。

%echo $PRINTER
sp1

.设定 shell variable
=====================

执行格式:set var = value
Example:
%set term=vt100
设定 shell variable “term” 为 VT100 终端机之型式。
.删除 shell variable
=====================
执行格式:unset var
Example:
%unset PRINTER
删除 shell variable “PRINTER” 之设定值。

environment variable
=====================

.查看 environment variable 之设定值
====================================

执行格式:setenv  查看所有 environment variable 之设定值。
Example: %setenv

执行格式:echo $NAME 显示指定的 environment variable “NAME” 之设定值。
Example:
%echo $PRINTER
显示 environment variable “PRINTER” 打印机名称之设定值。

.设定 environment variable
===========================
执行格式:setenv NAME word
Example:
%setenv PRINTER sp1
设定 environment variable “PRINTER” 打印机名称为 sp1。

.删除 environment variable
===========================

执行格式:unsetenv NAME
Example:
%unsetenv PRINTER
删除 environment variable “PRINTER” 打印机名称之设定值。

alias
=====
.查看所定义的命令之 alias
==========================

执行格式: alias 查看自己目前定义之所有命令,及所对应之 alias 名称。
执行格式: alias name 查看指定之 alias 名称所定义之命令。
Example:
%alias dir (查看别名 dir 所定义之命令)
ls -atl

.定义命令之 alias
==================
执行格式: alias name ‘command line’
Example:
% alias dir ‘ls -l’
将命令 “ls – l” 定义别名为 dir。

.删除所定义之 alias
====================
执行格式: unalias name
Example:
%unalias dir (删除别名为 dir 之定义。)
%unalias * (删除所有别名之设定。)

history
=======

.设定命令记录表之长度
======================

执行格式: set history = n
Example:
%set history = 40
设定命令记录表之长度为 40 (可记载执行过之前面 40 个命令)。

.查看命令记录表之内容
======================
执行格式: history

.使用命令记录表

================
执行格式: !!
Example: %!! (重覆执行前一个命令)
执行格式: !n ( n 为命令记录表之命令编号。)
Example: %!5 ( 执行命令记录表中第五个命令。)
执行格式: !string ( 重覆前面执行过以 string 为起始字元之命令。)
Example: %!cat ( 重覆前面执行过,以 cat 为起始字元之命令。)

.显示前一个命令之内容
======================
执行格式: !!:p
.更改前一命令之内容并执行之
============================

执行格式: ^oldstring ^newstring
将前一命令中 oldstring 的部份,改成 newstring,并执行之。

Example:
%find . -name file1.c -print
^file1.c^core
%find . -name core -print
注:文件 core 为执行程式或命令发生错误时,系统所产生的文件。作为侦错(debug)之□,因其所占空间极大,通常将之删除。  资料之压缩
==========
为了避免不常用的文件或资料,占用太大的磁盘空间,请使用者将之压缩。欲使用压缩过的文件或资料前,将之反压缩,即可还原成原来之资料型式。凡是经过压缩处理之文件,会在文件名后面附加 ” .Z ” 之字元,表示此为一压缩文件。

.压缩资料
==========
执行格式:compress filename 压缩文件
执行格式:compressdir directory-name 压缩目录

.解压缩还原资料
================
执行格式:uncompress filename     反压缩文件
执行格式:uncompressdir directory-name 反压缩目录

pipe-line 之使用
================
执行格式:command1   command2
将 command1 执行结果,送到 command2 做为 command2 的输入。
Example:
%ls -Rl   more
以分页方式,列出目前目录下所有文件,及子目录之名称。
%cat file1   more
以分页方式,列出文件 file1 之内容。

I/O control
===========
.标准输入之控制
================
执行格式:command-line < file
将 file 做为 command-line 之输入
Example:
%mail -s “mail test” user@iis.sinica.edu.tw filename
将 command 之执行结果,送至指定的 filename 中。
Example: %ls -l > list
将执行 “ls -l” 命令之结果,写入文件 list 中。
执行格式:command >! filename
同上,若 filename 之文件已经存在,则强迫 overwrite。
Example: %ls -lg >! list
将执行 “ls – lg” 命令之结果,强迫写入文件 list 中。
执行格式:command >amp; filename
将 command 执行时,萤幕上所产生的任何讯息,写入指定的 filename 中。
Example: %cc file1.c > error
将编译 file1.c 文件时,所产生之任何讯息,写入文件 error 中。
执行格式:command >> filename
将 command 执行结果,附加(append)到指定的 filename 中。
Example: %ls – lag >> list
将执行 “ls – lag” 命令之结果,附加(append)到文件 list 中。

执行格式:command >>amp; filename
将 command 执行时,萤幕上所产生的任何讯息,附加於指定的 filename中。
Example: %cc file2.c >> error
将编译 file2.c 文件时,萤幕所产生之任何讯息,附加於文件 error 中。

查看系统中的使用者:
===================
执行格式: who 或 finger
执行格式: w
执行格式: finger username or finger username@domainname
改变自己的 username 进入其他使用者的帐号,拥有其使用权利。

=========================================================

执行格式: su username
Example:
%su user 进入使用者 user 之帐号
passwrod: 输入使用者 user 之密码

查看 username:
==============

执行格式: who am i 查看 login 时,自己的 username。
执行格式: whoami 查看目前的 username。若已执行过 “su”命令(switch user),则显示出此 user 之 username。

查看目前系上所有工作站的使用者:
===============================
执行格式: rusers

=> 结束

与某工作站上的使用者交谈:
=========================
执行格式: talk username@hostname 或 talk username@ip_address
Example:
1. 可先利用 rusers 指令查看网路上的使用者
2. 假设自己的帐号是 u84987 ,在工作站 indian 上使用,现在想要与 doc 上的u84123 交谈。

%talk u84123@doc ==> 此时萤幕上将会出现等待画面
在对方(u84123)萤幕上将会出现下列讯息

Message from Talk_Daemon@Local_host_name at xx:xx
talk: connection requested by u84987@indian
talk: respond with: talk u84987@indian

此时对方(u84123) 必须执行 talk u84987@indian 即可互相交谈。
最后可按结束。

检查远端电脑系统是否正常
========================

执行格式:ping hostname 或 ping IP-Address
Example:
%ping doc
电子邮件(E-mail)的使用简介
==========================
本系之 E-mail address 为 ice.ntnu.edu.tw

..将文件当做 E-mail 的内容送出
=============================

执行格式:mail -s “Subject-string” username@address < filename%mail -s “program” user >test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。

删除、复制及搬移
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料搬移至第30行之后。

字串搜寻与取代
s(substitute)指令可搜寻某行列范围。
g(global)指令则可搜寻整个编辑缓冲区的资料。
s指令以第一个满足该条件的字串为其取代的对象,若该行有数个满足该条件的字串,也仅能取代第一个,若想取代所有的字串则需加上g参数。
:1,$s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。

..恢复编辑时被中断的文件
=======================

在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未被写回磁盘时,当再度回到系统,执行下列指令即可回复中断前的文件内容。
%vi -r filename

..编辑多个文件  =============

vi亦提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
当第一个文件编修完成后,可利用『:w』将该缓冲区存档,而后再利用 『:n』载入下一个文件。

关于分区

一个潜在的黑客如果要攻击你的Linux服务器,他首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!

为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区纪录数据,如 log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免 root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了部分针对Linux分区溢出的恶意攻击。

关于BIOS

记着要在BIOS设置中设定一个BIOS密码,不接收软盘启动。这样可以阻止不怀好意的人用专门的启动盘启动你的Linux系统,并避免别人更改BIOS设置,如更改软盘启动设置或不弹出密码框直接启动服务器等等。

关于口令

口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN(口令最小长度)。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS(口令使用时间)。

关于Ping

既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d /rc.local,以使每次启动后自动运行,这样就可以阻止你的系统响应任何从外部/内部来的ping请求。

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

关于Telnet

如果你希望用户用Telnet远程登录到你的服务器时不要显示操作系统和版本信息(可以避免有针对性的漏洞攻击),你应该改写/etc /inetd.conf中的一行象下面这样:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login。

关于特权账号

禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。

为删除你系统上的用户,用下面的命令:userdel username

为删除你系统上的组用户帐号,用下面的命令:groupdel username

在终端上打入下面的命令删掉下面的特权用账号:

userdel adm

userdel lp

userdel sync

userdel shutdown

userdel halt

userdel mail

如果你不用sendmail服务器,就删除这几个帐号:

userdel news

userdel uucp

userdel operator

userdel games

如果你不用X windows 服务器,就删掉这个帐号。

userdel gopher

如果你不允许匿名FTP,就删掉这个用户帐号:

userdel ftp

关于su命令

如果你不想任何人能够su为root的话,你应该编辑/etc/pam.d/su文件,加下面几行:

auth sufficient /lib-

/security/pam_rootok-

.so debug

auth required /lib-

/security/pam_wheel-

.so group=isd

这意味着仅仅isd组的用户可以su作为root。如果你希望用户admin能su作为root.就运行下面的命令:

usermod -G10 admin

suid程序也是非常危险的,这些程序被普通用户以euid=0(即root)的身份执行,只能有少量程序被设置为suid。用这个命令列出系统的suid二进制程序:

suneagle# find / -perm -4000 -print

你可以用chmod -s去掉一些不需要程序的suid位。

关于账户注销

如果系统管理员在离开系统时忘了从root注销,系统应该能够自动从shell中注销。那么,你就需要设置一个特殊的 Linux 变量“tmout”,用以设定时间。同样,如果用户离开机器时忘记了注销账户,则可能给系统安全带来隐患。你可以修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 编辑文件/etc/profile,在“histfilesize=”行的下一行增加如下一行:

tmout=600

则所有用户将在10分钟无操作后自动注销。注意:修改了该参数后,必须退出并重新登录root,更改才能生效。

关于系统文件

对于系统中的某些关键性文件如passwd、passwd.old、passwd._、shadow、shadown._、 inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 如将inetd文件属性改为600:

# chmod 600 /etc/inetd.conf

这样就保证文件的属主为root,然后还可以将其设置为不能改变:

# chattr +i /etc/inetd.conf

这样,对该文件的任何改变都将被禁止。 你可能要问:那我自己不是也不能修改了?当然,我们可以设置成只有root重新设置复位标志后才能进行修改:

# chattr -i /etc/inetd.conf

关于用户资源

对你的系统上所有的用户设置资源限制可以防止DoS类型攻击,如最大进程数,内存数量等。例如,对所有用户的限制, 编辑/etc/security/limits.con加入以下几行:

* hard core 0

* hard rss 5000

* hard nproc 20

你也必须编辑/etc/pam.d/login文件,检查这一行的存在:

session required /lib/security/pam_limits.so

上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用为5M“rss 5000”。

关于NFS服务器

由于NFS服务器漏洞比较多,你一定要小心。如果要使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,不意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。你可以编辑文件/etc/exports并且加:

/dir/to/export host1.mydomain.com(ro,root_squash)

/dir/to/export host2.mydomain.com(ro,root_squash)

其中/dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。最后为了让上面的改变生效,还要运行/usr/sbin/exportfs -a。

关于开启的服务

默认的linux就是一个强大的系统,运行了很多的服务。但有许多服务是不需要的,很容易引起安全风险。这个文件就是/etc /inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个: telnet和ftp,其它的类如shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth, etc. 除非你真的想用它。否则统统关闭之。

你先用下面的命令显示没有被注释掉的服务:

grep -v “#” /etc/inetd.conf

这个命令统计面前服务的总数:

ps -eaf|wc -l

需要提醒你的是以下三个服务漏洞很多,强烈建议你关闭它们:S34yppasswdd(NIS服务器)、S35ypserv(NIS服务器)和 S60nfs(NFS服务器)。

我们可以运行#killall -HUP inetd来关闭不需要的服务。当然,你也可以运行:

#chattr +i /etc/inetd.conf

如果你想使inetd.conf文件具有不可更改属性,而只有root 才能解开,敲以下命令:

#chattr -i /etc/inetd.conf

当你关闭一些服务以后,重新运行以上命令看看少了多少服务。运行的服务越少,系统自然越安全了。我们可以用下面命令察看哪些服务在运行:

netstat -na –ip

如果你用的是Redhat那就方便多了。^_^ Redhat提供一个工具来帮助你关闭服务,输入/usr/sbin/setup,然后选择”system services”,就可以定制系统启动时跑哪些服务。另外一个选择是chkconfig命令,很多linux版本的系统都自带这个工具。脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进程用的。

关于日志

所有的日志都在/var/log下(仅对linux系统而言),默认情况下 linux的日志就已经很强大了,但除ftp外。因此我们可以通过修改/etc/ftpaccess 或者/etc/inetd.conf,来保证每一个ftp连接日志都能够纪录下来。下面是一个修改inetd.conf的例子,假如有下一行:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -o

注释:

-l每一个ftp连接都写到syslog;

-L纪录用户的每一个命令;

-i文件received,纪录到xferlog;

-o文件transmitted,记录到xferlog。

不过你也不要太相信日志,因为绝大部分黑客都有“擦脚印”的“好”习惯啰!如果你不放心,最好安装一个Sniffer吧。

关于TCP_WRAPPERS

默认的,Redhat Linux允许所有的请求,这是很危险的。如果用TCP_WRAPPERS来增强我们站点的安全性简直是举手之劳,你可以将禁止所有的请求放入“ALL: ALL”到/etc/hosts.deny中,然后放那些明确允许的请求到/etc/hosts.allow中,如:

sshd: 192.168.1.10/255.255.255.0 gate.openarch.com

对IP地址192.168.1.10和主机名gate.openarch.com,允许通过 ssh连接。配置完了之后,用tcpdchk检查,你可以直接执行:tcpdchk 。在这里,tcpchk是TCP_Wrapper配置检查工具,它检查你的tcp wrapper配置并报告所有发现的潜在/存在的问题。

关于补丁

你应该经常到你所安装的Linux系统发行商的主页上去找最新的补丁。例如:对于 Redhat系统而言可以在:http://www.redhat.com/corp/support/errata/上找到补丁。幸运的是,在 Redhat系列的版本带有一个自动升级工具yum,它能自动够测定哪些rpm包需要升级,然后自动从Redhat的站点下载并完成安装。

笔试题

1、Linux操作系统内核创始人是( c )

A.Bill Gates B.Richard Stallman C.Linus Torvalds D.Dennis M.Ritchie

2、在linux中有关IDE设备命名编号正确的有( d )

A.sda 第一个IDE控制器,主设备 B.sdb 第二个IDE控制器,次设备

C.hdb 第二个IDE控制器,主设备 D.had 第一个IDE控制器,主设备

3、Linux网络安装时( ad )。(多选)

A.PXE网卡芯片一定要可得 B.必须要有光盘安装介质

C.必须是采用FTP方式 D.安装服务器上一定要有相应的映像文件

4、ls命令( abd )。(多选)

A.-a可显示当前目录内的所有文件

B.与dir命令类似

C.-A与-a功能相同,但显示的文件更多

D.-d当遇到目录时列出目录本身而非目录内的文件

5、使普通用户可执行超级用户文件的命令是( c )

A.chmod +v B.usermod +v C.chmod +s D.usermod +s

6、以下对于scp错误的是( bd )。(多选)

A.只能用于主机之间的数据拷贝 B.只能在开启ssh服务的基础上工作

C.拷贝时必须输入密码 D.数据传输是通过加密通道来完成

7、利用命令find查找当前目录下的名称尾为.c 的文件,并将结果输出到标准输出的命令是( d )

A.find . –name “?.c” –print B.find . –name “#.c” –print

C.find . –name “!*.c” –print D.find . –name “*.c” –print

8、为了将当前目录下的归档文件myftp.tgz解压缩到/tmp目录下,用户可以使用命令( a )

A.tar xvzf myftp.tgz –C /tmp B.tar xvzf myftp.tgz –R /tmp

C.tar vzf myftp.tgz –X /tmp D.tar xvzf myftp.tgz /tmp

9、以下哪种不是Linux的Shell类型(c )

A.bash B.ksh C.rsh D.csh

10、改变bash的提示符实际上就是改变变量( c )

A.$HOME B.$PWD C.$PS1 D.$PS2

11、以下哪几种是vi的工作模式( acd )。(多选)

A.命令模式 B.删除模式 C.编辑模式 D.末行模式

12、在vi中,5G表示( b )

A.将光标移到第n行的行尾 B.将光标移到第n行的行首

C.将光标移到本行的第五个字符前 D.将光标移到本行的第五个字符后

13、临时注销一个用户,可以直接修改/etc/shadow文件,即在该用户口令前加( ada )

A.! B.# C.% D.*

14、如果需要新建一个用户blue,但其密码由该客户第一次登录进系统后修改,可使用哪个命令( a )

A.useradd –p “” bule B.#useradd -R “” blue

C.#adduser -o “” blue D.#adduser -u “” blue

15、所有用户登录的缺省配置文件是( b )

A./etc/profile B./etc/login.defs C./etc/.login D./etc/.logout

16、以下哪项不属于linux二进制发布软件包的特点?( d )

A.在安装时不需要用户重新编译

B.不同的平台需要相应的包

C.缺乏灵活性

D.可以对软件的源代码保密

17、在rpm命令中,安装新的RPM包软件使用的参数是(a )

A. -i B. -v C. -h D.-e

18、在Linux操作系统中的/etc/passwd文件包括的基本选项有( acd )。(多选)

A.用户ID B.加密的密码值 C.用户登录Shell E.用户登录目录

19、在安装mysql_4.1.7_4.RHEL4.1.i386.rpm软件包时,需要忽略检查依赖关系,正确的rpm命令格式是( d )

A. rpm -ivh –ndp mysql_4.1.7_4.RHEL4.1.i386.rpm

B. rpm -ivh –ndps mysql_4.1.7_4.RHEL4.1.i386.rpm

C. rpm -ivh –nodep mysql_4.1.7_4.RHEL4.1.i386.rpm

D. rpm -ivh –nodeps mysql_4.1.7_4.RHEL4.1.i386.rpm

20、安装源代码发布软件包时,在使用./configure命令配置时,如果需要将软件安装到指定的目录,可以使用参数(a )

A.–prefix B.–directory C.–temporary D.–install

21、Linux系统中存放加密用户帐号信息的文件是( b )

A./etc/passwd B./etc/shadow C./etc/group D./etc/securetty

22、以下关于GRUB的描述错误的是(d )

A.GRUB可以代替LILO来完成对Linux的引导

B.只要硬盘工作在LBA模式下,GRUB就可以引导根分区在8G以外的操作系统

C.GRUB可支持如bash或doskey一样的历史功能

D.GRUB只能支持640*480分辨率的开机画面

23、在LILO:的提示符下,如果要查看操作系统列表,可按下键盘的( b )。

A.Insert键 B.TAB键 C.Shift键 D.Ctrl键

24、不能作为Linux根分区的分区类型有( d )

A.ext3 B.reiserfs C.ext2 D.ntfs

25、下面关于passwd命令说法不正确的是( d )

A.普通用户可以利用passwd命令修改自己的密码

B.超级用户可以利用passwd命令修改自己和其他用户的密码

C.普通用户不可以利用passwd命令修改其他用户的密码

D.普通用户可以利用passwd命令修改自己和其他用户的密码

26、普通用户的ID一般是( b )

A.>100 B.>500 C.>1000 D.>0

27、以下关于parted分区工具描述正确的是(d)

A.parted可以在DOS下运行

B.parted不能移动分区

C.parted不能复制分区

D.parted对分区的任何改变回立即写到硬盘中

28、在du命令中,使用友好的方式显示信息的参数是(a)

A.-h B.-f C.-a D.-t

29、磁盘配额是(c )

A.限制系统用户使用磁盘 B.限制超级用户使用磁盘

C.限制普通用户使用磁盘 D.限制虚拟用户使用磁盘

30、启用配额的命令是( ab )(多选)

A.usrquota B.grpquota C.rootquota D.userquota

31、X-Windows System的特点是( bcd )。(多选)

A.与生产者有关 B.具可携性

C.对彩色掌握的多样性 D.对网络之间的操作透通性

32、quotacheck是( ab )

A.检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

B.创建启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

C.修改启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

D.删除启用了配额的文件系统,并为每个文件系统建立一个当前磁盘使用的表

33、启动x_windows的命令是( a )

A、start B、startx C、begin D、beginx

机考题

1、建立以下用户、组属性及口令文件

(1)、建立用户smith

(2)、建立组名sysadm

(3)、john把mail作为其第二组名

(4)、smith具有口令654321

2、磁盘配额配置

A.在/home配置磁盘配额

B.为用户tom分配1000KB的软配额限制、2000KB的硬配额限制

C.重新引导系统时配额文件可以一直生效

3、文件拷贝及相关问题

A、建立目录/option1

B、在目录/option1下生成一空文件empty,该文件拥有者为jack

C、复制该文件给/tmp目录下的empty1文件,保留该文件的所有属性

D、软链接该文件到/tmp目录下的soft文件

4.磁盘分区(实验)

A。建立一个200M的新分区

B。格式化分区文件类型为EXT3

C。系统引导时自动挂接到/newfs

5、X-windows问题

A、将桌面从GNOME改成KDE

B、系统的启动运行级别调整为3

C、将桌面分辨率调整为1024*768

答案

一、笔试题

1.C 2.D 3.AD 4.ABD 5.C

6.BD 7.D 8.A 9.C 10.C

11.ACD 12.B 13.AD 14.A 15.B

16.D 17.A 18.ACD 19.D 20.A

21.B 22.D 23.B 24.D 25.D

26.B 27.D 28.A 29.C 30.AB

31.BCD 32.AB 33.A

二、机考题

1、 A. useradd smith

B. groupadd sysadm

C.useradd -G mail john

D.passwd smith

(连续两次按提示输入密码)

2、 A. quotacheck -augv /home

B. edquota -u tom

(把soft,hard改成1000和2000)

C. vi /etc/fstab

在/home列添加,结果如下:

LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2

3、 A. mkdir /option1

B. cd /option1

touch empty

chown jack empty (如无jack用户,需useradd jack)

C. cp -p empty /tmp/empty1

D. ls -sf empty /tmp/soft

4、 A. fdisk /dev/hda (假设本地磁盘设备文件名为hda)

(使用n命令添加200M的新分区,使用w命令保存设备分区表)

B. mkfs -t ext2 /dev/hda5 (假设/dev/hda5为新建分区)

C. vi /etc/fstab

(若无/newfs目录,则先创建:mkdir /newfs)

/dev/hda5 /newfs ex2 defaults 1 2

5、 A. 编辑/etc/sysconfig/desktop (由GNOME改成KDE)

DESKTOP=”KDE”

B. 编辑/etc/inittab (由id的5改成3)

id: 3: initdefault:

C. 编辑/etc/X11/xorg.conf (在screen选项Modes中加1024×768)

一.填空题:

1. 在Linux系统中,以 文件 方式访问设备 。

2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。

3. Linux文件系统中每个文件用 i节点 来标识。

4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。

5. 链接分为: 硬链接 和 符号链接 。

6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。

7. 某文件的权限为:drw-r–r–,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。

8. 前台起动的进程使用 Ctrl+c 终止。

9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。

10. 网络管理的重要任务是: 控制 和 监控 。

11. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。

13. 编写的Shell程序运行前必须赋予该脚本文件 执行 权限。

14. 系统管理的任务之一是能够在 分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新。

15. 系统交换分区是作为系统 虚拟存储器 的一块区域。

16. 内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统。

17. 内核配置是系统管理员在改变系统配置 硬件 时要进行的重要操作。

18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址 和 子网掩码 等必要信息。

19. 唯一标识每一个用户的是用户 ID 和用户名。

20 . RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。

21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为 文件系统 。

22. DHCP可以实现动态 IP 地址分配。

23. 系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源。

24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。

25. 当想删除本系统用不上的 设备驱动程序 时必须编译内核,当内核不支持系统上的 设备驱动程序 时,必须对内核 升级 。

26 Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。

27. vi编辑器具有两种工作模式: 命令模式 和 输入模式 。

28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示 文件类型 ,第二段占3位,表示 文件所有者 对该文件的权限。

29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) 。

30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换。

31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端 为用户提供浏览 web服务 的就是apache应用程序。

32. 在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 。其中前者是指对 操作系统 的备份,后者是指对 应用程序和用户文件的备份。

33. CD-ROM标准的文件系统类型是 iso9660 。

34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo 。

35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b 。

36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是 vfat 。

37. 设定限制用户使用磁盘空间的命令是 quota 。

38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc 。

39. 硬连接只能建立对 文件 链接。符号链接可以跨不同文件系统创建。

40. 套接字文件的属性位是 s 。

41. 结束后台进程的命令是 kill 。

42. 进程的运行有两种方式,即 独立运行和使用父进程运行 。

43. Links分为 硬链接和符号链接 。

44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。

45. 管道文件的属性位是 p 。

46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。

47. 为脚本程序指定执行权的命令及参数是 chmod a+x filename 。

48. 进行远程登录的命令是 telnet 。

49. 欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数是: ping abc.tuu.edu.cn –c 10 。

50. DNS服务器的进程命名为named,当其启动时,自动装载 /etc目录下的 named.conf 文件中定义的DNS分区数据库文件。

51. Apache服务器进程配置文件是 httpd.conf 。

52.在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。

53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt 。

54 可以在标准输出上显示整年日历的命令及参数是 cal -y 。

55. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 。

56. 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是 fsck –a /dev/had5 。

57. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 。

58. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 。

59 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。

60. 在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb 。

61. 当系统管理员需升级内核版本和改变系统硬件配置时,应 重新编译内核 。

62. 如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件。

63. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件。

64. 在vi编辑环境下,使用 Esc键 进行模式转换。

65. Slackware Linux 9.0通常使用 ext3 文件系统,系统的全部磁盘块由 四 部分组成。

66. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 tar zcvf /home/wang.tar.gz /home/stud1/wang 。

67. 管道就是将前一个命令的 标准输出 作为后一个命令的 标准输入 。

68. 在使用手工的方法配置网络时,可通过修改 /etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置 /etc/resolv.conf 文件。

69. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab 。

70. test.bns.com.cn的域名是 bns.com.cn ,如果要配置一域名服务器,应在 named.conf 文件中定义DNS数据库的工作目录。

71. Sendmail邮件系统使用的两个主要协议是: SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件。

72. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 。

73. 目前代理服务器使用的软件包有很多种,教材中使用的是 squid 。

74. rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R 。

75. mv 命令可以移动文件和目录,还可以为文件和目录重新命名。

linux模拟试题及答案(四)

* http://www.hozoo.com.cn
* 网络资源
* 2010-5-10
* 点击次数:83
* [大 中 小]
* [进入论坛]

76. 路由选择协议(RIP)的跳数表示到达目的地之前必须通过的 网关 数,RIP接受的最长距离是 15跳 。

77. ping命令用于测试网络的连通性,ping命令通过 ICMP 协议来实现。

78. nfs 协议用于实现Unix(/linux)主机之间的文件系统共享。

79. 在Linux操作系统中,设备都是通过特殊的 文件 来访问。

80. shell不仅是 用户命令的解释器 ,它同时也是一种功能强大的编程语言。 bash是Linux的缺省shell。

81. 用 >;>; 符号将输出重定向内容附加在原文的后面。

82. 增加一个用户的命令是:adduser 或useradd 。

83 进行字符串查找,使用grep命令。

84. 使用 * 每次匹配若干个字符。

85. /sbin 目录用来存放系统管理员使用的管理程序。

二.单项选择题:

1. 下面的网络协议中,面向连接的的协议是: A 。

A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议

2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD-ROM等移动设备。

A defaults B sw C rw和ro D noauto

3. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C 。

A 文件类型 B 文件所有者的权限

C 文件所有者所在组的权限 D 其他用户的权限

4. 终止一个前台进程可能用到的命令和操作 B 。

A kill B ;+C C shut down D halt

5.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 D 。

A -m B -d C -f D -p

6. 下面关于i节点描述错误的是 A 。

A i节点和文件是一一对应的

B i节点能描述文件占用的块数

C i节点描述了文件大小和指向数据块的指针

D 通过i节点实现文件的逻辑结构和物理结构的转换

7. 一个文件名字为rr.Z,可以用来解压缩的命令是: D 。

A tar B gzip C compress D uncompress

8. 具有很多C语言的功能,又称过滤器的是 C 。

A csh

B tcsh

C awk

D sed

9. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 C 。

A 配置域名服务器

B 定义一条本机指向所在网络的路由

C 定义一条本机指向所在网络网关的路由

D 定义一条本机指向目标网络网关的路由

10. 建立动态路由需要用到的文件有 D 。
A /etc/hosts B /etc/HOSTNAME C /etc/resolv.conf D /etc/gateways

11. 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问 172.16.1.0/24网络时,其路由设置正确的是 B 。

A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1

B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1

C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1

D route add default 192.168.1.0 netmask 172.168.1.1 metric 1

12. 下列提法中,不属于ifconfig命令作用范围的是 D 。

A 配置本地回环地址 B 配置网卡的IP地址

C 激活网络适配器 D 加载网卡到内核中

13. 下列关于链接描述,错误的是 B 。

A 硬链接就是让链接文件的i节点号指向被链接文件的i节点

B 硬链接和符号连接都是产生一个新的i节点

C 链接分为硬链接和符号链接 D 硬连接不能链接目录文件

14. 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是 C。

A 主机IP设置有误

B 没有设置连接局域网的网关

C 局域网的网关或主机的网关设置有误

D 局域网DNS服务器设置有误

15. 下列文件中,包含了主机名到IP地址的映射关系的文件是: B 。

A /etc/HOSTNAME B /etc/hosts C /etc/resolv.conf D /etc/networks

16. 不需要编译内核的情况是 D 。

A 删除系统不用的设备驱动程序时 B 升级内核时

C 添加新硬件时 D 将网卡激活

17. 在shell中变量的赋值有四种方法,其中,采用name=12的方法称 A 。

A 直接赋值 B使用read命令

C 使用命令行参数 D使用命令的输出

18. D 命令可以从文本文件的每一行中截取指定内容的数据。

A cp B dd C fmt D cut

19. 下列不是Linux系统进程类型的是 D 。

A 交互进程 B 批处理进程 C 守护进程 D 就绪进程

20.配置Apache 1.3.19服务器需要修改的配置文件为___A______

A httpd.conf B access.conf C srm.conf D named.conf

21. 内核不包括的子系统是 D 。

A 进程管理系统 B 内存管理系统 C I/O管理系统 D硬件管理系统

22. 在日常管理中,通常CPU会影响系统性能的情况是: A 。

A CPU已满负荷地运转 B CPU的运行效率为30%

C CPU的运行效率为50% D CPU的运行效率为80%

23. 若一台计算机的内存为128MB,则交换分区的大小通常是 C 。

A 64MB B 128MB C 256MB D 512MB

24. 在安装Linux的过程中的第五步是让用户选择安装方式,如果用户希望安装部分组件(软件程序),并在选择好后让系统自动安装,应该选择的选项是 D 。

A full B expert C newbie D menu

25. Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用 C 命令。

A cat B more C less D menu

26. 下列信息是某系统用ps –ef命令列出的正在运行的进程, D 进程是运行Internet超级服务器,它负责监听Internet sockets上的连接,并调用合适的服务器来处理接收的信息。

A root 1 4.0 0.0 344 204? S 17:09 0:00 init

B root 2 0.0 0.1 2916 1520? S 17:09 0:00 /sbin/getty

C root 3 0.0 0.2 1364 632? S 17:09 0:00 /usr/sbin/syslogd

D root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd

27.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, B 是能够实现本地与远程主机之间的文件传输工作。

A telnet B FTP C SNMP D NFS

28.当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是 C 。

A ping B ifconfig C traceroute D netstat

29.对名为fido的文件用chmod 551 fido 进行了修改,则它的许可权是 D 。

A -rwxr-xr-x B -rwxr–r– C -r–r–r– D -r-xr-x—x

30. 在i节点表中的磁盘地址表中,若一个文件的长度是从磁盘地址表的第1块到第11块,则该文件共占有 B 块号。

A 256 B 266 C 11 D 256×10

31. 用ls –al 命令列出下面的文件列表, D 文件是符号连接文件。

A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello

B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey

C drwxr–r– 1 hel users 1024 Sep 10 08:10 zhang

D lrwxr–r– 1 hel users 2024 Sep 12 08:12 cheng

32. DNS域名系统主要负责主机名和 A 之间的解析。

A IP地址 B MAC地址 C 网络地址 D 主机别名

33. WWW服务器是在Internet上使用最为广泛,它采用的是 B 结构。

A 服务器/工作站 B B/S C 集中式 D 分布式

34.Linux系统通过 C 命令给其他用户发消息。

A less B mesg y C write D echo to

35.NFS是 C 系统。

A 文件 B 磁盘 C 网络文件 D 操作

36. B 命令可以在Linux的安全系统中完成文件向磁带备份的工作。

A cp B tr C dir D cpio

37.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在 C 目录中。

A /bin B /etc C /dev D /lib

38.在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用 D 命令实现。

A # reboot B # halt C # reboot D # shutdown –r now

39.网络管理具备以下几大功能:配置管理、 A 、性能管理、安全管理和计费管理等。

A 故障管理 B 日常备份管理 C 升级管理 D 发送邮件

40.关于代理服务器的论述,正确的是 A 。

A 使用internet上已有的公开代理服务器,只需配置客户端。

B 代理服务器只能代理客户端http的请求。

C 设置好的代理服务器可以被网络上任何主机使用。

D 使用代理服务器的客户端没有自己的ip地址。

41.关闭linux系统(不重新启动)可使用命令 B 。

A Ctrl+Alt+Del B halt C shutdown -r now D reboot

42.实现从IP地址到以太网MAC地址转换的命令为: C 。

A ping B ifconfig C arp D traceroute

43.在vi编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行。

A ; B ; C ; D A

44.在vi编辑器中的命令模式下,删除当前光标处的字符使用 A 命令。

A ; B ;; C ; D ;;

45.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用 C 命令。

A 上箭头 B 下箭头 C ; D ;

46.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为 A 。

-rwxr-xr– 1 root root 599 Cec 10 17:12 ff

A 普通文件 B 硬链接 C 目录 D 符号链接

47.删除文件命令为: D 。

A mkdir B rmdir C mv D rm

48.在下列的名称中,不属于DNS服务器类型的是:C

A Primary Master Server B Secondary Master Server

C samba D Cache_only Server

49.网络管理员对WWW服务器进行访问、控制存取和运行等控制,这些控制可在 A 文件中体现。

A httpd.conf B lilo.conf C inetd.conf D resolv.conf

50.邮件转发代理也称邮件转发服务器,它可以使用SMTP协议,也可以使用 C 协议。

A FTP B TCP C UUCP D POP

51.启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中前者是在 C 文件中以独立进程方式启动。

A /usr/sbin/smbd B /usr/sbin/nmbd C rc.samba D /etc/inetd.conf

52.DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配 ___D______地址。

A 网络 B MAC C TCP D IP

53.为了保证在启动服务器时自动启动DHCP进程,应将 A文件中的dhcpd=no改为dhcpd=yes。

A rc.inet1 B lilo.conf C inetd.conf D httpd.conf

54.对文件进行归档的命令为 D 。

A dd B cpio C gzip D tar

55.改变文件所有者的命令为 C 。

A chmod B touch C chown D cat

56.在给定文件中查找与设定条件相符字符串的命令为: A 。

A grep B gzip C find D sort

57.建立一个新文件可以使用的命令为 D 。

A chmod B more C cp D touch

58.在下列命令中,不能显示文本文件内容的命令是: D 。

A more B less C tail D join

59.在使用匿名登录ftp时,用户名为 B 。

A users B anonymous C root D guest

60.在实际操作中,想了解命令logname 的用法,可以键入 D 得到帮助。

A logname –man B logname/? C help logname D logname –help

61.如果LILO被安装在MBR,使用 A 命令即可卸载LILO。

A lilo –u B lilo –c C lilo –v D lilo -V

62.当用命令ls –al查看文件和目录时,欲观看卷过屏幕的内容,应使用组合键 D 。

A Shift+Home B Ctrl+ PgUp C Alt+ PgDn D Shift+ PgUp

63.mc是UNIX风格操作系统的 C 。

A 文件编辑器/程序编译器 B 配置网络的窗口工具

C 目录浏览器/文件管理器 D Samba服务器管理工具

64.i节点是一个 D 长的表,表中包含了文件的相关信息。

A 8字节 B 16字节 C 32字节 D 64字节

65.文件权限读、写、执行的三种标志符号依次是 A 。

A rwx B xrw C rdx D srw

66.Linux 文件名的长度不得超过 C 个字符。

A 64 B 128 C 256 D 512

67.进程有三种状态: C 。

A 准备态、执行态和退出态 B 精确态、模糊态和随机态

C 运行态、就绪态和等待态 D 手工态、自动态和自由态

68. 从后台启动进程,应在命令的结尾加上符号 A 。

A & B @ C # D $

69. B 不是邮件系统的组成部分。

A 用户代理 B 代理服务器 C 传输代理 D 投递代理

70.在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是 D 。

A fold B join C tr D read

71.crontab文件由六个域组成,每个域之间用空格分割,其排列如下: B 。

A MIN HOUR DAY MONTH YEAR COMMAND

B MIN HOUR DAY MONTH DAYOFWEEK COMMAND

C COMMAND HOUR DAY MONTH DAYOFWEEK

D COMMAND YEAR MONTH DAY HOUR MIN

72.用ftp进行文件传输时,有两种模式: C 。

A Word和binary B .txt和Word Document

C ASCII和binary D ASCII和Rich Text Format

73.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为 D 。

A 467 B 674 C 476 D 764

74.在DNS系统测试时,设named进程号是53,命令 D 通知进程重读配置文件。

A kill –USR2 53 B kill –USR1 53 C kill -INT 63 D kill –HUP 53

75.Apache服务器默认的接听连接端口号是 C 。

A 1024 B 800 C 80 D 8

76.PHP和MySQL的联合使用解决了 C 。

A 在Proxy上处理数据库的访问问题 B 在WWW服务器上处理黑客的非法访问问题

C 在WWW服务器上处理数据库的访问问题

D 在Sendmail邮件系统上处理数据库的访问问题

77.OpenSSL是一个 A 。

A 加密软件 B 邮件系统 C 数据库管理系统 D 嵌入式脚本编程语言

78.Samba服务器的配置文件是 D 。

A httpd.conf B inetd.conf C rc.samba D smb.conf

79.关于DNS服务器,叙述正确的是 D 。

A DNS服务器配置不需要配置客户端

B 建立某个分区的DNS服务器时只需要建立一个主DNS服务器

C 主DNS服务器需要启动named进程,而辅DNS服务器不需要

D DNS服务器的root.cache文件包含了根名字服务器的有关信息

80.退出交互模式的shell,应键入 C 。

A ; B ^q C exit D quit

81.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是 B 。

A root@l04.edu.cn:~#mount dev/had1 /winsys

B root@l04.edu.cn:~#mount /dev/had1 /winsys

C root@l04.edu.cn:~#mount /dev/had1 winsys

D root@l04.edu.cn:~#mount dev/had1 winsys

82.设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为 B 。

A /home B /root C /home/root D /usr/local

83.字符设备文件类型的标志是 B 。

A p B c C s D l

84.将光盘CD-ROM(hdc)安装到文件系统的/mnt/cdrom目录下的命令是 C 。

A mount /mnt/cdrom B mount /mnt/cdrom /dev/hdc

C mount /dev/hdc /mnt/cdrom D mount /dev/hdc

85.将光盘/dev/hdc卸载的命令是 A 。

A umount /dev/hdc B unmount /dev/hdc

C umount /mnt/cdrom /dev/hdc D unmount /mnt/cdrom /dev/hdc

86.在/home/stud1/wang目录下有一文件file,使用 D 可实现在后台执行命令,此命令将file文件中的内容输出到file.copy文件中。

A cat file >;file.copy B cat >;file.copy C cat file file.copy & D cat file >;file.copy &

87.在DNS配置文件中,用于表示某主机别名的是: B 。

A NS B CNAME C NAME D CN

88.可以完成主机名与IP地址的正向解析和反向解析任务的命令是: A 。

A nslookup B arp C ifconfig D dnslook

89.下列变量名中有效的shell变量名是: C 。

A -2-time B _2$3 C trust_no_1 D 2004file

90.qmail是 B 。

A 收取邮件的协议 B 邮件服务器的一种 C 发送邮件的协议 D 邮件队列

91.已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是 C 。

A cd test B cd /stud1/test C cd stud1/test D cd home

92.已知某用户stud1,其用户目录为/home/stud1。分页显示当前目录下的所有文件的文件或目录名、用户组、用户、文件大小、文件或目录权限、文件创建时间等信息的命令是 D 。

A more ls –al B more –al ls C more ;>; /backup/bak01.txt

50 17 * * * tar zcvf backup.tar.gz /data

55 17 * * * umount /dev/hdc

(3)由超级用户登录,用crontab执行 prgx文件中的内容:

root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。

6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式 yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。

参考答案:

(1)编写shell程序fileback:

#!/bin/sh

DIRNAME=`ls /root | grep bak`

if [ -z “$DIRNAME" ] ; then

mkdir /root/bak

cd /root/bak

fi

YY=`date +%y`

MM=`date +%m`

DD=`date +%d`

BACKETC=$YY$MM$DD_etc.tar.gz

tar zcvf $BACKETC /etc

echo “fileback finished!”

[NextPage]

(2)编写任务定时器:

echo “0 0 1 * * /bin/sh /usr/bin/fileback” >; /root/etcbakcron

crontab /root/etcbakcron

或使用crontab -e 命令添加定时任务:

0 1 * * * /bin/sh /usr/bin/fileback

7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

参考答案:(1)第一种方法:

用户应使用crontab –e 命令创建crontab文件。格式如下:

0 0 * * sun cp –r /user/backup /tmp

(2)第二种方法:

用户先在自己目录下新建文件file,文件内容如下:

0 * * sun cp –r /user/backup /tmp

然后执行 crontab file 使生效。

8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

参考答案: 建立程序 Pro16如下:

#!/bin/sh

i=1

while [ i -le 50 ]

do

if [ -d /userdata ];then

mkdir -p /userdata/user$i

chmod 754 /userdata/user$i

echo “user$i”

let “i = i + 1″ (或i=$(($i+1))

else

mkdir /userdata

mkdir -p /userdata/user$i

chmod 754 /userdata/user$i

echo “user$i”

let “i = i + 1″ (或i=$(($i+1))

fi

done

五、多选题

1.关于硬链接的描述正确的(BE)。

A 跨文件系统 B不可以跨文件系统 D可以做目录的连接

C 为链接文件创建新的i节点 E链接文件的i节点同被链接文件的i节点

2.在网站发布用户wang的个人网页时,需要创建用户网页目录,假定用户网页目录设定为web

(用户目录在/home目录下),如下描述正确的是(BCE)

A 存放用户网页的绝对路径/wang/web B存放用户网页的目录~wang/

C 存放用户网页的绝对路径/home/wang/web D存放用户网页的绝对路径/home/web

E 在本机访问用户wang的个人网页的URL地址http://localhost/~wang/

3.在一台WWW服务器上将端口号设定为8000,默认的网页文件index.html,服务器网页的根目录/www。在本机访问服务器时,正确的用法是(BDE)

A 浏览器访问该服务器的URL地址http://localhost/

B 浏览器访问该服务器的URL地址http://localhost:8000/

C 浏览器访问该服务器的用户li网页URL地址http://localhost/~li

D 浏览器访问该服务器的用户li网页URL地址http://localhost:8000/~li

E 浏览器访问该服务器的URL地址localhost:8000/

4.在shell编程中关于$2的描述正确的是(CE)

A 程序后携带了两个位置参数 B 宏替换 C 程序后面携带的第二个位置参数

D 携带位置参数的个数 E 用$2引用第二个位置参数

5.某文件的权限是 – r w x r – – r- -,下面描述正确的是(CD)

A 文件的权限值是755 B 文件的所有者对文件只有读权 限

C 文件的权限值是 744 D 其他用户对文件只有读权限 E同组用户对文件只有写权限

6.关于OpenSSH的作用的描述正确的是(ACE)

A 开放源代码的安全加密程序 B OpenSSH常用于为http协议加密

C OpenSSH用于提高远程登录访问的安全性 D 它和telnet实用同样的端口号

E OpenSSH是免费下载的应程序

7.关于NFS服务器描述正确的是(BC)

A 网络中实现Windows系统之间文件系统共享的应用软件

B 网络中实现Linux系统之间文件系统共享的应用软件

C 网络中实现Unix系统之间文件系统共享的应用软件

D 网络中实现Windows系统和Unix之间文件系统共享的应用软件

E 网络中实现Windows系统和Linux之间文件系统共享的应用软件

8.关于sed描述正确的是(ABD)

A sed 是Linux系统中的流编辑器 B sed 是UNIX系统中的流编辑器

C sed 网络文件系统的类型

D 利用管道对标准输入/标准输入的数据进行编辑和组合

E sed是NFS的应用程序

9.关于限制磁盘限额,描述正确的是(ABD)

A 使用edquota可以监控系统所有用户使用的磁盘空间,并在接近极限时提示用户

B 用户组的磁盘限额是用户组内所有用户予设磁盘空间总和

C 单个用户的磁盘限额就是该用户所在用户组内所有磁盘限额的总合

D 在Linux系统下限制用户使用的磁盘空间可以使用edquota

E 用户组的磁盘限额就是该用户组内拥有最大磁盘限额值的用户的磁盘限额

10.关于建立系统用户的正确描述是()

A 在Linux系统下建立用户使用adduser命令

B 每个系统用户分别在/etc/passwd和/etc/shadow文件中有一条记录

C 访问每个用户的工作目录使用命令“cd /用户名”

D 每个系统用户在默认状态下的工作目录在/home/用户名

E 每个系统用户在/etc/fstab文件中有一条记录

1. sudo !!以 root 帐户执行上一条命令。
2. python -m SimpleHTTPServer利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。
3. :w !sudo tee %在 Vim 中无需权限保存编辑的文件。
4. cd -更改到上一次访问的目录。
5. ^foo^bar将上一条命令中的 foo 替换为 bar,并执行。
6. cp filename{,.bak}快速备份或复制文件。
7. mtr google.comtraceroute + ping。
8. !whatever:p搜索命令历史,但不执行。
9. $ssh-copy-id user@host将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。
10. ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg把 Linux 桌面录制为视频。

1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:
答:

#iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp –dport 80 -j DNAT –to 192.168.16.1:8080

或 者:

#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080

2.什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?

SNAT,DNAT,MASQUERADE都是NAT。
MASQUERADE是SNAT的一个特例。

SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。

MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。

DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B

因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的。

3.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?

4.iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。

5.说出你知道的几种linux/unix发行版本。

Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP…

6.列出linux常见打包工具并写相应解压缩参数(至少三种)

7.计划每星期天早8点服务器定时重启,如何实现?

8.列出作为完整邮件系统的软件,至少二类。

9,当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。

答:
a.用户输入网址到浏览器;
b.浏览器发出DNS请求信息;
c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;
d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;
e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
f.返回IP结果给浏览器;
g.浏览器根据IP信息,获取页面;

10,我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?

答:这个题需要理解的东西比较的多,分一下几个方面
a,从数据包大小上分:UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字 解释器通常使用TCP从发原来的请求。
b,从协议本身来分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更 大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP。

11,一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。

答:两种情况,一种是磁盘配额问题,另外一种就是EXT3文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode 耗尽了。

12,我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?

FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。
服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通 知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。
因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

13.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下
Q:主要是考察awk 这些的用法

#/bin/sh
#Programm :
# Using for move currently directory to /tmp
for FileName in `ls -l |awk ‘$5>10240 {print $9}’`
do
mv $FileName /tmp
done
ls -la /tmp
echo “Done! ”

14.apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?

apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候加参数–with-mpm- worker选择工作模式)
prefork的特点是:(预派生)
1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销
2.可以防止意外的内存泄漏
3.在服务器负载下降的时候会自动减少子进程数
worker的特点是:支持混合的多线程多进程的多路处理模块
如果对于一个高流量的HTTP服务 器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。

15.名词解释 HDLC,VTP,OSPF,RIP,DDOS,system V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等。

16.编写shell脚本获取本机的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是

192.168.100.1/255.255.255.0

方法一:

#!/bin/bash
#This script print ip and network
file=”/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] ;then
IP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }’`
MASK=`grep “NETMASK” $file|awk -F”=” ‘{ print $2 }’`
echo “$IP/$MASK”
exit 1
fi

方法二:

#!/bin/bash
#This programm will printf ip/network
#
IP=`ifconfig eth0 |grep ‘inet ‘ |sed ’s/^.*addr://g’|sed ’s/ Bcast.*$//g’`
NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ’s/^.*Mask://g’`
echo “$IP/$NETMASK”
exit

17.在命令行下发一邮件,发件人:123@abc.com, 收信人:abc@xyz.com

二、简述题:

1.linux下如何改IP,主机名,DNS
2.linux下如何添加路由
3.简述linux下编译内核的意义与步骤
4.简述Linux启动过程
5.简述DDOS攻击的原理
6.简述Tcp三次握手的过程
7.简述VPN,常见有哪几种?

三、设计题:

1.系统设计
请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。
您有的资源:
8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机
Apache 2.2.x
Tomcat 5.5.X
数据库系统
最多8个Internet IP地址,请您设计一个系统:

1、使用双apache web server前端;
2、采用AJP连接后段的3台Tomcat应用服务器,这些tomcat被配置成cluster, 因此需要考虑apache对后端的分配,分配采用完全平衡的方法;配置使用cookie来实现session stickness;
3、1台数据库服务器只有tomcat才需要连接,也不需要对Internet提供服务。
4、考虑系统的安全性和维护方便性;
5、通过rewrite规则配置把下属URL规则改写成友好的URL
http://server/webapp/getinfo?id=XXXX&name=YYYY –> http://server/getinfo/YYYY/XXXX

您需要提交

1、服务器规划,包括:
* 网络结构图
* 每台机器的IP地址分配
* 每台机器上运行的关键软件
* 您从安全性和维护性方面的考虑
2、Apache的以下配置文件给我们:
* extra/http-proxy-ajp.conf
* extra/http-rewrite.conf

2.你可以采取任何设备和不同操 作系统服务器设计对两台WWW服务器和两台FTP服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)

第一种方法: DNS轮巡

www1 IN A 192.168.1.1
www2 IN A 192.168.1.2
www3 IN A 192.168.1.3
ftp1 IN A 192.1.1.4
ftp2 IN A 192.1.1.5
ftp3 IN A 192.1.1.6
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
ftp IN CNAME ftp1
ftp IN CNAME ftp2
ftp IN CNAME ftp3

安装crontab:
yum install crontabs

说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:
chkconfig –level 35 crond on

1,crontab命令

功能说明:设置计时器。

语  法:crontab [-u ][配置文件] 或 crontab [-u ][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command

参  数:
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u  指定要设定计时器的用户名称。

2,crontab 格式

基本格式 :
* *  *  *  *  command
分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

crontab文件的一些例子:

30 21 * * * /etc/init.d/nginx restart
每晚的21:30重启 nginx。

45 4 1,10,22 * * /etc/init.d/nginx restart
每月1、 10、22日的4 : 45重启nginx。

10 1 * * 6,0 /etc/init.d/nginx restart
每周六、周日的1 : 10重启nginx。

0,30 18-23 * * * /etc/init.d/nginx restart
每天18 : 00至23 : 00之间每隔30分钟重启nginx。

0 23 * * 6 /etc/init.d/nginx restart
每星期六的11 : 00 pm重启nginx。

* */1 * * * /etc/init.d/nginx restart
每一小时重启nginx

* 23-7/1 * * * /etc/init.d/nginx restart
晚上11点到早上7点之间,每 隔一小时重启nginx

0 11 4 * mon-wed /etc/init.d/nginx restart
每月的4号与每周一到周三 的11点重启nginx

0 4 1 jan * /etc/init.d/nginx restart
一月一号的4点重启nginx

*/30 * * * * /usr/sbin/ntpdate 210.72.145.20
每半小时同步一下时间

一、需求:
1、添加一个20G硬盘,并初始分区为如下:
/mysql 6G
/appstore 6G
/infoware 8G

2、全部使用LVM分区,并测试调整分区,比如将/mysql 扩大成8G,
(1)测试从相邻的/appstore中分割,(2)从/infoware中分割
注意:从后面的操作中可以看得到,最好不要缩小空间,否则可能会导致数据损坏,宁愿增加硬盘,本文作为测试,有详细的步骤可以说明为何不要采用减少某个分区的空间来增加给其他分区

3. 基本原理 (这些网络上有很多介绍了)

物理介质 The physical media
你应该感受“物理”这个单词有极大的延伸,虽然我们刚开始假设它仅仅是一个硬盘,或者一个分区。例如,/dev/hda,/dev/hda6,/dev/sda。你可以转换一个块设备上任何连续块到一个。。。

物理卷 Physical Volume (PV)
一个PV只不过是有许多管理数据添加在它里面的物理介质–一旦你添加了它,LVM就认为它是。。。的一个持有者。

物理分区 Physical Extents (PE)
物理分区真的象一些大的数据块,通常有几MB。PE可以分配给一个。。。

卷组 Volume Group (VG)
一个VG是由许多物理分区组成的(可能来自多个物理卷或硬盘)。虽然这可能容易让你认为一个VG就是由几个硬盘组成的(例如/dev/hda和/dev/sda),但是更确切的说,它包含由这些硬盘提供的许多PE。

从这个卷组,PE可以分配给一个。。。

逻辑卷 Logical Volume (LV)
Yes,我们最终到达某处。一个逻辑卷是我们工作的最终结果,这里是我们存储信息的地方。这等同于传统分区的想法。
象用通常的分区一样,在逻辑卷上你能代表性的创建一个。。。

文件系统 Filesystem

文件系统是你想它成为的形态:标准的 ext2,ReiserFS,NWFS,XFS,JFX,NTFS,等等。。。对Linux内核来说,在通常的分区和逻辑卷之间没有差别。

我试着画了一个ASCII图来使这些形象化。

一个物理卷,包含了许多物理分区:

+—–[ Physical Volume ]—–+
| PE | PE | PE | PE | PE | PE |
+—————————–+

一个卷组,包含了2个物理卷(PV)有6个物理分区:

+——[ Volume Group ]————-+
| +–[PV]——–+ +–[PV]——–+ |
| | PE | PE | PE | | PE | PE | PE | |
| +————–+ +————–+ |
+———————————–+

我们现在做更进一步扩展:

+——[ Volume Group ]————-+
| +–[PV]——–+ +–[PV]——–+ |
| | PE | PE | PE | | PE | PE | PE | |
| +–+—+—+—+ +-+—-+—-+–+ |
| | | | +—–/ | | |
| | | | | | | |
| +–+—+—+-+ +——+—-+–+ |
| | Logical | | Logical | |
| | Volume | | Volume | |
| | | | | |
| | /home | | /var | |
| +————+ +————–+ |
+———————————–+

这个向我们展示了两个文件系统,它跨越两个磁盘。/home文件系统包含4个物理分区,/var文件系统包含2个。

二、操作步骤:

1、分区(其实这一步可以省略,原因后面会分析到)

[root@test ~]# fdisk /dev/hdb

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-39560, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-39560, default 39560): +6000M

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 11627 5859976+ 83 Linux

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (11628-39560, default 11628):
Using default value 11628
Last cylinder or +size or +sizeM or +sizeK (11628-39560, default 39560): +6000M

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 11627 5859976+ 83 Linux
/dev/hdb2 11628 23254 5860008 83 Linux

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (23255-39560, default 23255):
Using default value 23255
Last cylinder or +size or +sizeM or +sizeK (23255-39560, default 39560): ###直接回车,使用所有剩余的空间
Using default value 39560

Command (m for help): w ##保存操作
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

##查看

[root@test ~]# fdisk -l

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 11627 5859976+ 83 Linux
/dev/hdb2 11628 23254 5860008 83 Linux
/dev/hdb3 23255 39560 8218224 83 Linux

2、将/dev/hdb 上面的三个分区设置成LVM

1)首先设置/dev/hdb1和/dev/hdb2和/dev/hdb3的分区类型为0×8e,它表示”Linux LVM”。请注意你的fdisk的版本可能仍不认识这种类型,因此它显示为“Unknown”:

[root@test ~]# fdisk /dev/hdb
Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 11627 5859976+ 83 Linux
/dev/hdb2 11628 23254 5860008 83 Linux
/dev/hdb3 23255 39560 8218224 83 Linux

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): L ## 列出所有的格式,可以看到LVM是8e

0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 11627 5859976+ 8e Linux LVM
/dev/hdb2 11628 23254 5860008 83 Linux
/dev/hdb3 23255 39560 8218224 83 Linux

## /dev/hdb2和/dev/hdb3做同样的操作

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

###通常,不需要重启,但有些计算机却要求。因此如果下面的例子不工作,试试重启。

2)接着我们创建物理卷(PV),如下:

[root@test ~]# pvcreate /dev/hdb1
Physical volume “/dev/hdb1″ successfully created
[root@test ~]# pvcreate /dev/hdb2
Physical volume “/dev/hdb2″ successfully created
[root@test ~]# pvcreate /dev/hdb3
Physical volume “/dev/hdb3″ successfully created

3)我们再将这3个物理卷(PV)加到一个叫做“test”的卷组(VG)中:

[root@test ~]# vgcreate test /dev/hdb1 /dev/hdb2 /dev/hdb3
Volume group “test” successfully created

4)现在我们有一个空的卷组(VG),让我们来检查一下:

[root@test ~]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group “test”
— Volume group —
VG Name test
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 19.01 GB
PE Size 4.00 MB
Total PE 4866
Alloc PE / Size 0 / 0
Free PE / Size 4866 / 19.01 GB
VG UUID cQ4Rmz-SIQJ-jVsU-IxpP-pKCk-ns3U-0oUo4C

— Physical volumes —
PV Name /dev/hdb1
PV UUID JYiZkd-DhU1-NsGe-tbE9-bc2k-yUnn-IxS544
PV Status allocatable
Total PE / Free PE 1430 / 1430

PV Name /dev/hdb2
PV UUID 454aEC-e0kI-6smG-kxVc-VS5J-KhdF-ecXBcj
PV Status allocatable
Total PE / Free PE 1430 / 1430

PV Name /dev/hdb3
PV UUID iUDVOR-mVnx-91MW-a82Y-UeNV-tXWJ-qjRfWe
PV Status allocatable
Total PE / Free PE 2006 / 2006

5) 这里的许多数据–大多数现在都容易理解了。我们看到没有逻辑卷(LV)定义,因此我们要补上它。我们将在“test”卷组(PV)中创建一个6000MB的逻辑卷,叫做“mysql”:

[root@test ~]# lvcreate -L 6000M -n mysql test
Logical volume “mysql” created

6)Ok,到这里,我们创建一个文件系统:

[root@test ~]# mkfs -t ext3 /dev/test/mysql
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
768544 inodes, 1536000 blocks
76800 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1572864000
47 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

7)建立新分区卷标:

[root@test ~]# tune2fs –L/mysql /dev/test/mysql (卷标自己根据需要定)

8)加载新分区

[root@test ~]# mkdir /mysql
[root@test ~]# mount –t ext3 /dev/test/mysql /mysql

9)我们做完了!让我们回顾我们的卷组(VG),它现在充满了一些东西:

[root@test ~]# vgdisplay test -v
Using volume group(s) on command line
Finding volume group “test”
— Volume group —
VG Name test
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 19.01 GB
PE Size 4.00 MB
Total PE 4866
Alloc PE / Size 1500 / 5.86 GB
Free PE / Size 3366 / 13.15 GB
VG UUID cQ4Rmz-SIQJ-jVsU-IxpP-pKCk-ns3U-0oUo4C

— Logical volume —
LV Name /dev/test/mysql
VG Name test
LV UUID 7ew2xI-kIA4-RLma-Icn8-5Zqv-fvrU-pF4bfF
LV Write Access read/write
LV Status available
# open 1
LV Size 5.86 GB
Current LE 1500
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:3

— Physical volumes —
PV Name /dev/hdb1
PV UUID JYiZkd-DhU1-NsGe-tbE9-bc2k-yUnn-IxS544
PV Status allocatable
Total PE / Free PE 1430 / 1430

PV Name /dev/hdb2
PV UUID 454aEC-e0kI-6smG-kxVc-VS5J-KhdF-ecXBcj
PV Status allocatable
Total PE / Free PE 1430 / 1430

PV Name /dev/hdb3
PV UUID iUDVOR-mVnx-91MW-a82Y-UeNV-tXWJ-qjRfWe
PV Status allocatable
Total PE / Free PE 2006 / 506

10)进行到这里,觉得先前的分区成3个部分完全没有必要,因为后来是建立在整个LVM上的,这样说来前面的可以不用分3个,只需要分一个分区即可,我们来测试一下

11)先卸载掉已经加载的/mysql分区

[root@test ~]# umount /mysql

[root@test ~]# fdisk /dev/hdb
Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 11627 5859976+ 8e Linux LVM
/dev/hdb2 11628 23254 5860008 8e Linux LVM
/dev/hdb3 23255 39560 8218224 8e Linux LVM

Command (m for help): d ## 删除分区
Partition number (1-4): 1

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Selected partition 3

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-39560, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-39560, default 39560): ## 直接回车使用全部分区
Using default value 39560

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 39560 19938208+ 83 Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/hdb: 20.4 GB, 20416757760 bytes
16 heads, 63 sectors/track, 39560 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 39560 19938208+ 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

12)接着我们创建物理卷(PV),如下:

[root@test ~]# pvcreate /dev/hdb1
Can’t initialize physical volume “/dev/hdb1″ of volume group “test” without -ff

### 这个时候之所以出现这个提示,是因为,我们先前创建的LVM没有卸载掉
卸载卷的方法:
卸载物理卷:pvremove PVDEVICE
卸载卷组:vgremove VGNAME
卸载逻辑卷:lvremove LVDEVICE
卸载的顺序:先逻辑然后卷组最后物理卷
卸载前别忘了备份

[root@test ~]# vgremove test
Do you really want to remove volume group “test” containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume mysql? [y/n]: y
Logical volume “mysql” successfully removed
Volume group “test” successfully removed

[root@test ~]# pvremove /dev/hdb1
Labels on physical volume “/dev/hdb1″ successfully wiped

继续
创建物理卷(PV):

[root@test ~]# pvcreate /dev/hdb1
Physical volume “/dev/hdb1″ successfully created

创建做“test”的卷组(VG):

[root@test ~]# vgcreate test /dev/hdb1
Volume group “test” successfully created

这里出现了一个很奇怪的问题,发现使用vgdisplay查看的时候,VG size才5.59G,也就是好像上次所分的/dev/hdb1 6000M的大小

[root@test ~]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group “test”
— Volume group —
VG Name test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 5.59 GB
PE Size 4.00 MB
Total PE 1430
Alloc PE / Size 0 / 0
Free PE / Size 1430 / 5.59 GB
VG UUID xfGIKf-BDjE-jWUd-9alx-wXmL-K00x-7tOw2W

— Physical volumes —
PV Name /dev/hdb1
PV UUID n1KYH6-K5Wc-dk18-1M3K-UB11-09Bw-bQ3X3I
PV Status allocatable
Total PE / Free PE 1430 / 1430

使用
fdisk /dev/hdb1
fdisk /dev/hdb2
fdisk /dev/hdb3

均能看到上次所分的大小,很奇怪
重启后使用fdisk查看正常了
卸载掉后重新创建

[root@test ~]# vgremove /dev/test
Volume group “test” successfully removed
[root@test ~]# pvremove /dev/hdb1
Labels on physical volume “/dev/hdb1″ successfully wiped

创建物理卷(PV):

[root@test ~]# pvcreate /dev/hdb1
Physical volume “/dev/hdb1″ successfully created

创建做“test”的卷组(VG):

[root@test ~]# vgcreate test /dev/hdb1
Volume group “test” successfully created

这次使用vgdisplay 查看的结果正常了

创建逻辑卷

[root@test ~]# lvcreate -L 6000M -n mysql test
Logical volume “mysql” created

Ok,到这里,我们创建一个文件系统:

[root@test ~]# mkfs -t ext3 /dev/test/mysql
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
768544 inodes, 1536000 blocks
76800 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1572864000
47 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

建立新分区卷标:

[root@test ~]# tune2fs –L/mysql /dev/test/mysql (卷标自己根据需要定)

加载新分区

[root@test ~]# mkdir /mysql
[root@test ~]# mount –t ext3 /dev/test/mysql /mysql

同样创建/appstore,/infoware

在创建/infoware分区的时候,由于是最后一个分区,为了避免空间的浪费,需要将所有的空间全部进行分配
再使用lvcreate -L 6000M -n mysql test 这样的命令显然是不可以的
查看lvcreate的帮助的时候得知有个-l的参数
-l|–extents LogicalExtentsNumber

使用vgdisplay可以看到
Total PE / Free PE 4867 / 1867
还有1867个PE(物理分区)没有使用

[root@test ~]# lvcreate -l+1867 -n infoware test
Logical volume “infoware” created

然后使用vgdisplay可以看到全部PE都用完了

然后就是建立卷标,建立分区,mount了

[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol002
7.6G 1.9G 5.3G 27% /
/dev/mapper/VolGroup00-LogVol003
5.4G 236M 4.9G 5% /var
/dev/hda1 190M 18M 163M 10% /boot
tmpfs 189M 0 189M 0% /dev/shm
/dev/mapper/test-mysql
5.8G 140M 5.4G 3% /mysql
/dev/mapper/test-appstore
5.8G 140M 5.4G 3% /appstore
/dev/mapper/test-infoware
7.2G 145M 6.7G 3% /infoware

最后就是修改fstab文件,将上述的分区写入即可

三、测试分割和移动

##说明:最好不要缩小空间,否则可能会导致数据损坏,宁愿增加硬盘。本文作为测试,有详细的步骤可以说明为何不要采用减少某个分区的空间来增加给其他分区

1、相邻的分割
目标:从appstore中分割1.5G到mysql之中
步骤:
1)、首先取消挂载

[root@test ~]# umount /appstore
[root@test ~]# umount /mysql

2)、执行lvresize -L-1.5G /dev/test/appstore

即可给刚才的appstore分区减少1.5GB空间

执行lvresize -L+1.5G /dev/test/mysql

即可给刚才的mysql分区增加1.5GB空间

修改之后重新挂载

mount /dev/test/appstore /appstore
mount /dev/test/mysql /mysql

[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol002
7.6G 1.9G 5.3G 27% /
/dev/mapper/VolGroup00-LogVol003
5.4G 217M 4.9G 5% /var
/dev/hda1 190M 18M 163M 10% /boot
tmpfs 189M 0 189M 0% /dev/shm
/dev/mapper/test-infoware
7.2G 145M 6.7G 3% /infoware
/dev/mapper/test-appstore
5.8G 140M 5.4G 3% /appstore
/dev/mapper/test-mysql
5.8G 140M 5.4G 3% /mysql

好奇怪,怎么分区大小都没改变呢?使用vgdisplay查看得到/mysql和/appstore 的lv size已经更改掉了

[root@test ~]# vgdisplay -v test
Using volume group(s) on command line
Finding volume group “test”
— Volume group —
VG Name test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.01 GB
PE Size 4.00 MB
Total PE 4867
Alloc PE / Size 4867 / 19.01 GB
Free PE / Size 0 / 0
VG UUID YRS7CW-saYm-yid2-QVD2-FfrF-j9n0-Zirelb

— Logical volume —
LV Name /dev/test/mysql
VG Name test
LV UUID PM4OAk-212K-iRBZ-k9xK-RIzu-0f1N-A1yVln
LV Write Access read/write
LV Status available
# open 1
LV Size 7.36 GB
Current LE 1884
Segments 2
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:3

— Logical volume —
LV Name /dev/test/appstore
VG Name test
LV UUID gCN8PK-7cfm-8ATM-EcE2-KR5P-hs5b-jPNlkp
LV Write Access read/write
LV Status available
# open 1
LV Size 4.36 GB
Current LE 1116
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:4

— Logical volume —
LV Name /dev/test/infoware
VG Name test
LV UUID Z9wcWf-bkAS-5brz-pmyQ-Hdp6-bCqn-xwPUkB
LV Write Access read/write
LV Status available
# open 1
LV Size 7.29 GB
Current LE 1867
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:5

— Physical volumes —
PV Name /dev/hdb1
PV UUID E8kn73-nmZE-J3Os-e99x-L13J-1OIV-qQOJpT
PV Status allocatable
Total PE / Free PE 4867 / 0

重启后还是没变???

注意:这里有个很严重的问题,就是lvresize貌似只能增加,而不能减少,如果减少的话可能会导致数据损坏,所以这里一定要慎重 *****

现在需要resize相应的ext3文件系统来利用LV中的可用空间。

[root@test ~]# resize2fs -p /dev/test/mysql
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/test/mysql is mounted on /mysql; on-line resizing required
Performing an on-line resize of /dev/test/mysql to 1929216 (4k) blocks.
The filesystem on /dev/test/mysql is now 1929216 blocks long.

[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol002
7.6G 1.9G 5.3G 27% /
/dev/mapper/VolGroup00-LogVol003
5.4G 216M 5.0G 5% /var
/dev/hda1 190M 18M 163M 10% /boot
tmpfs 189M 0 189M 0% /dev/shm
/dev/mapper/test-mysql
7.3G 142M 6.8G 3% /mysql
/dev/mapper/test-appstore
5.8G 140M 5.4G 3% /appstore
/dev/mapper/test-infoware
7.2G 145M 6.7G 3% /infoware

[root@test ~]# resize2fs -p /dev/test/appstore
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/test/appstore is mounted on /appstore; on-line resizing required
On-line shrinking from 1536000 to 1142784 not supported.

## 这里不支持刚才lvresize减少的appstore分区

那么该如何减少文件系统呢?
下面让我们来一步一步的看下

减小LVM中的文件系统必须离线操作(处于umount装态),要减小文件系统和LV:

Unmount相应的文件系统
运行磁盘检查确保卷的完整
减小文件系统
减小LV

1)、首先查看空间

[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol002
7.6G 1.9G 5.3G 27% /
/dev/mapper/VolGroup00-LogVol003
5.4G 216M 5.0G 5% /var
/dev/hda1 190M 18M 163M 10% /boot
tmpfs 189M 0 189M 0% /dev/shm
/dev/mapper/test-mysql
7.3G 142M 6.8G 3% /mysql
/dev/mapper/test-appstore
5.8G 140M 5.4G 3% /appstore
/dev/mapper/test-infoware
7.2G 145M 6.7G 3% /infoware

2)、卸载文件系统

[root@test ~]# cd /
[root@test /]# umount /appstore

2.1) 检查文件系统是否有错误

[root@test /]# e2fsck -f /dev/test/appstore
e2fsck 1.39 (29-May-2006)
The filesystem size (according to the superblock) is 1536000 blocks
The physical size of the device is 1142784 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort?

## 看,到这里就会发现刚才使用lvresize减少的appstore的文件系统出错了

## 郁闷的是无法使用e2fsck和fsck修复 -_-!!

## 尝试着恢复到以前的状态,即/mysql还是5.4G时候的情况

2.2)、卸载文件系统

[root@test /]# umount /dev/test/mysql

2.3)、减小文件系统到5.4GB

[root@test /]# resize2fs /dev/test/mysql 5.4G
resize2fs 1.39 (29-May-2006)
resize2fs: bad filesystem size – 5.4G
[root@test /]# resize2fs /dev/test/mysql 6000M
resize2fs 1.39 (29-May-2006)
Please run ‘e2fsck -f /dev/test/mysql’ first.

## 提示需要先进行检查,实际操作中应先用e2fsck进行检查,再做resize2fs操作
2.4)、检查文件系统是否有错误

[root@test /]# e2fsck -f /dev/test/mysql
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/mysql: 11/964768 files (9.1% non-contiguous), 66459/1929216 blocks

[root@test /]# resize2fs /dev/test/mysql 6000M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/test/mysql to 1536000 (4k) blocks.
The filesystem on /dev/test/mysql is now 1536000 blocks long.

2.5)、减小LV到5.4GB

[root@test /]# lvresize -L 5.4G /dev/test/mysql
Rounding up size to full physical extent 5.40 GB
WARNING: Reducing active logical volume to 5.40 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mysql? [y/n]: y
Reducing logical volume mysql to 5.40 GB
Logical volume mysql successfully resized

2.6)、校验LV的新大小.

[root@test /]# lvdisplay /dev/test/mysql
— Logical volume —
LV Name /dev/test/mysql
VG Name test
LV UUID PM4OAk-212K-iRBZ-k9xK-RIzu-0f1N-A1yVln
LV Write Access read/write
LV Status available
# open 0
LV Size 5.40 GB
Current LE 1383
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:3

2.7)、重新挂载文件系统,并校验新大小

[root@test /]# mount /dev/test/mysql /mysql
[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol002
7.6G 1.9G 5.3G 27% /
/dev/mapper/VolGroup00-LogVol003
5.4G 217M 4.9G 5% /var
/dev/hda1 190M 18M 163M 10% /boot
tmpfs 189M 0 189M 0% /dev/shm
/dev/mapper/test-infoware
7.2G 145M 6.7G 3% /infoware
/dev/mapper/test-mysql
5.8G 140M 5.4G 3% /mysql

3、修复/appstore分区,将刚才从mysql上分下来的多余空间调整到appstore中(同上面的那次增加mysql空间一样的步骤)
3.1)、使用vgdisplay查看多余的空间为 PE 501

[root@test ~]# lvresize -l+501 /dev/test/appstore

3.2)、resize2fs -p /dev/test/appstore
提示需要使用e2fsck
3.3)、使用e2fsck -f /dev/test/appstore
发现了很多错误,修复
3.4)、resize2fs -p /dev/test/appstore
3.5)、使用vgdisplay -v test 查看lv size是否正确
3.6)、挂载
[root@test ~]# mount /dev/test/appstore /appstore
3.7)、查看

[root@test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol002
7.6G 1.9G 5.3G 27% /
/dev/mapper/VolGroup00-LogVol003
5.4G 217M 4.9G 5% /var
/dev/hda1 190M 18M 163M 10% /boot
tmpfs 189M 0 189M 0% /dev/shm
/dev/mapper/test-infoware
7.2G 145M 6.7G 3% /infoware
/dev/mapper/test-mysql
5.8G 140M 5.4G 3% /mysql
/dev/mapper/test-appstore
6.3G 142M 5.8G 3% /appstore

## 需要再次说明的是,最好不要缩小空间,否则可能会导致数据损坏,宁愿增加硬盘

系统

# 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 # 查看所有安装的软件包
# rpm -qa|grep vim # 查看安装的某个软件包