Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104574305
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-03-27 11:23:03

作者:wgdzh   

第一卷:系统入门与实用技术 
第二卷:系统管理与应用 
第三卷:系统安全与防范 
第一卷:系统入门与实用技术 

第一部分:unixware 7.1安装 

1.插入UnixWare7的启动盘1,打开计算机电源; 

2.经过一段时间后,按系统提示插入第二张启动盘; 
(注:也可以用UNIXWARE 1#安装盘启动) 

3.依次选择zone为Americas,locale为C (English),Keyboard 类型为 United State,按<F10>继续; 

4.输入相应的 System License , 包括License Number、 License Code和 License Data,按<F10>继续;(没有则按F8挑过) 

5. 选择 install HBA diskette ,并插入HBA软盘后按回车。安装完HBA时,选择proceed with installation, 按<F10>继续;(没有也眺过) 

6.选择自动配置DCU(Device configuration Utility)按<F10>继续; 

7. 输入SysNode Name(系统名字,即hostname),按<F10>继续; 

8.选择Install Method 为 Install from CD-ROM,按<F10>继续; 

9.配置硬盘(Disk Configuration),按<F2>进入磁盘空间配置。按自己需要完成分区之后,按<F10>继续; 

10.选择:Use default filesystem size and types 按<F10>继续; 

11.决定要安装的软件包,选择:License-Baced Defaults 按<F10>继续; 

12.在“Select Network Adapter”窗口选择:Defer network configuration,按<F10>继续; 

13.在“Date and Time”窗口,按<F2>选择:Asia/Austrasia后回车,选择:China 回车,按<F10>继续; 

14.选择系统安全级别(Choose the desired security level),一般选择Traditional,按<F10>继续; 

15.在“System owner name”窗口,输入:System owner name、 System owner login name、System owner user ID、System owner password、 Repeat password,按<F10>继续; 

16.输入Root password 两次,按<F10>继续; 

17.在确认窗口按<F10> 开始安装。 

18. 安装完之后,按系统提示取出软盘和光盘,重新启动计算机,随后按要求配置鼠标。 

安装完成! 

总结注意事项: 
1、在遇到安装过程中,提示找不到CD-ROM时,检查一下光驱的眺线。一般将光驱设 为 
MASTER。 
2、在硬盘分区时,要注意UNIX分区只能分在前8G内。当要多系统时,应该先分主DOS区,再 
分UNIX区,注意 
UNIX区的起始磁道要与DOS主分区的终止磁道相差一些,否则UNIX可能会出错。 
3、UNIXWARE中有写网卡不支持,比如常见的realteck 8029。只能更换网卡了,网上找不到 
for unixware的驱动,只有for open server 5的。 
4、安装过程中,输入的system owner login name 与 system owner passwd要记牢,它与 
root不是一回事。当发现root密码丢失时,可以采用用owner name 与 owner passwd登 
陆,然后再将root 密码改回。 
5、在选择timezone时,要注意不要乱选,一般为GMT+0800,否则在涉及时间的程序时,有 
可能会时间出错。当然,安装后也可以手动修改。 
6、unixware 7.1.1安装盘共有7张CD,一般情况下只需用到其中前3张,后四张是为有关程 
序用的。 

第二部分:系统操作入门 
(第一讲) 
UNIX操作系统入门其实也不是很难的一件事,与我们以前所接触的常用网络操作系统差不多,都是针对文件、目录、权限的管理与控制。本书可以做为初学者的指南,也做为熟悉UNIX人员的一本使用手册。 
好了,我们还是照顾照顾那些初学者吧,毕竟这是入门骗,让我们先登陆到UNIX界面,看看UNIX 
到底是什么样子。(本书全部以unixware 7.1.1为例) 

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

退出步骤 
======== 
% exit 
% CTRL+d 

更改帐号密码 
============ 
% passwd => 执行后将会出现下列讯息 
UX:passwd: INFO: Changing password for XXX 
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 中。 
(注:一般都将rlogin关掉不用,应为它不安全,推荐telnet、ssh) 

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

(第二讲) 

怎么样,unix的界面是不是很像DOS,枯燥、无味。不过,它还有自己的另一面,还没有看到呢,它也有window界面,叫xwindow.我们这里暂不介绍。真正的UNIX高手是很少用图形界面的,都是字符方式,所以,你必须习惯它。 
好,这一讲,我们将真正用UNIX的命令来做我们想要做的事情,为了便于记忆,我们可以与DOS命令做比较。 

文件或目录处理 
============== 
列出文件或目录下之文件名称 
执行格式: 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) 
$HOME 同 ~作用一致。 
与DOS比较:DIR 
技巧: 
1、例出当前目录中的全部目录:ls -l|grep ‘^d’ 
2、ls -l == l 

改变工作目录位置 
================ 
执行格式: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 ) 之目录位置下。 
与DOS比较:CD 
技巧:返回到自己的主目录:cd ~/cd $HOME 


建立新目录 
========== 
执行格式: mkdir directory-name 

Exmaple : 
mkdir dir1 建立一新目录 dir1。 
与DOS比较:MD 
重点与难点:一次建多个目录:mkdir a b c ...(a,b,c均为目录) 

删除目录 
======== 
执行格式: rmdir directory-name 或 rm directory-name 

Example : 
rmdir dir1 删除目录 dir1,但 dir1 下必须没有文件存在,否则无法删除。 
rm -r/R dir1 删除目录 dir1,及其下所有文件及子目录。 

与DOS比较:RD 
难点与重点:rmdir -r a 与 rmdir -r a/*的区别。(前者连a本身也删除,后者a中 
的内容都被删光,但a本身存在。 

复制文件 
======== 
执行格式: 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/R dir1 dir2 (recursive copy) 复制整个目录。 
若目录 dir2 存在,则将目录 dir1,及其所有文件和子目录,复制到目录 dir2 下, 
新目录名称为 dir1,若目录 dir2 不存在,则将 dir1,及其所有文件和子目录,复制 
为目录 dir2。 
与DOS比较:COPY 
重点与难点:1、将a目录极其所有文件拷到b目录中(b目录存在): 
cp -r a b,结果是b中含有a. 
2、 将a目录极其所有文件拷到b目录中(b目录不存在): 
cp -r a b,结果是b中的内容与a中一样。 

移动或更改文件、目录名称 
======================== 
执行格式: 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。 
与DOS比较:MOVE 
重点与难点:目标文件的属性与源文件的属性一致。 

删除文件 
======== 
执行格式: rm filename (filename 可为文件名,或文件名缩写符号。) 

Example : 
rm file1 删除文件名为 file1 之文件。 
rm file? 删除文件名中有五个字元,前四个字元为file 之所有文件。 
rm f* 删除文件名中,以 f 为字首之所有文件。 
与DOS比较:del/deltree 
重点与难点:删除目录中的所有文件与该目录用rm -r/rm -R 

文件名的缩写符号 
================ 
? 代表文件名称中之单一字元。 
* 代表文件名称中之一字串。 

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

Example : 
pwd 

查看文件内容 
============ 
执行格式: cat filename 

Example : 
cat file1  以连续显示方式,查看文件名 file1 之内容。 


分页显示文件内容 
================ 
执行格式: more filename 或 cat filename | more 

Example : 
more file1  以分页方式,查看文件名 file1 之内容。 
cat file1 | more 同上。 

查看目录所占磁盘容量 
=================== 
执行格式:du [-sk] directory 

du dir1 显示目录 dir1 的总容量及其次目录的容量 

du -sk dir1 显示目录 dir1 的总容量,以k bytes为计量 

重点与难点:du 显示的目录大小是以BLOCK为单位,换算成字节,乘以512。 
du -sk显示的是以KB为单位的。 


文件查找 
=================== 
执行格式:find dir -name filename command 

find . -name hello -print 寻找目前目录及所有的子目录内叫hello的文档. 

find . -ctime +7 -print 找出七天内未被更动的文档 

find . -size +2000m -print 找出大小超过2000 bytes的文档 

find /tmp -user b1234567 -print 在/tmp下属於b1234567的文档 

find . -name '*.c' -exec rm {} 删除所有的.c档 

find . -name test/* -print 显示当前目录及其子目录文件名前4位为test的文件名 

重点与难点: 
1、寻找所有以core开头的文件并将其删除: 
find / -name "core.*" -exec rm {} \; 
2、统计当前目录中的文件个数: 
find . |wc -l 
3、查找123文件,并将错误信息写入error.out文件中: 
find / -name "123" 2>error.out 


第三部分 VI编辑器 
vi是很著名的UNIX文本编辑器,它的功能很强大,不过,对与初学者也很繁。没关系,我们虽然介绍很多,但不要求大家都掌握它的没一项,只要记住几项常用的就可以了。 
vi的操作分编辑状态与命令状态,我们要介绍的是其中的命令状态。所谓的编辑状态,就是指你可以编辑内容的状态,而命令状态是指可以对内容进行操作的状态。 
移动操作 
k,光标向上移动一个字符。 
j, 光标向下移动一个字符。 
h, 光标向左移动一个字符。 
l, 光标向右移动一个字符。 
或者是四个方向键。 
:0,文章第一行; 
:$, 文章最后一行; 
ctrl+f ,后翻页。 
ctrl+b,前翻页。 


插入操作 
i, 在光标当前位置插入。 

I,在行首插入。 

a,在当前光标后插入。 

A,在当前行尾插入。 

o,在光标当前行下插入。 

O,在光标当前行上插入。 

r, 替换当前光标处字符。 

R,从光标处开始替换。 

删除操作 
x, 删除光标处字符。 

dd, 删除当前行。 

d0, 删除光标前半行。 

d$, 删除光标后半行。 

查找操作 

/string 查找字符串(从前往后) 

?string 查找字符串(从后往前) 

n 继续查找 

N 反向继续查找 

% 查找对应括号 

u 取消上次操作 

ex命令状态 

:set number 显示行号 

:set smd 显示显示状态 

:0 文件首 

:1,5 copy 7 块拷贝 

:1,5 del 块删除 

:1,5 move 7 块移动 

:1,$s/string1/string2/g 全文件查找string1并替换为string2 

:wq! 存盘退出 

:q! 退出不保存。 

重点与难点: 
i, 在光标当前位置插入。 
I,在行首插入。 
a,在当前光标后插入。 
A,在当前行尾插入。 
o,在光标当前行下插入。 
O,在光标当前行上插入。 
x,删除光标处字符。 
dd,删除当前行。 
/string 查找字符串。 
?string 查找字符串(从后往前)。 
n 继续查找。 
N 反向继续查找。 
:wq! 存盘退出。 
:q! 退出不保存。 


第四部分:SHELL介绍 

第一讲:什么是Shell 

当我们登入unix之後, 第一个接触到的, 便是 Shell. 我们必须对它有点初步的认识才行. 

一. Shell 简介. 

unix系统分成三个重要的部份 

核心 
Shell 
工具程式 
核心的部份相当低阶, 操作者不易和它直接沟通, 因此, 必须要有一个友善的介面(interface), 使得操作时能更为方便, 这个介面便是 Shell. 

换言之, Shell 就是一个居於核心和操作者之间的一层使用者介面. 

那麽, 为何称它为 Shell 呢? Shell 的本意是 "" 的意思呢! 

没错, 在核心的外面, 包覆着一层外壳, 用来负责接收使用者输入的指令, 然後将指令解译成核心能够了解的方式, 传给核心去执行, 再将结果传回至预设的输出周边. 
例如: 键入 

ls -l 

shell 给你以下回应: 

拥 
档 有 
案 档 
种 案 档案大小 最近修改的 
类 档案权限 数 拥有人 组别 (byte单位)日期及时间 档案名称 
drwxr-xr-x 14 root root 1024 Jul 21 21:31 . 
drwxr-xr-x 17 root root 1024 Apr 11 12:01 .. 
drwxr-xr-x 8 82 82 1024 Feb 25 19:23 apache 
-rw-r--r-- 1 root root 1335460 Feb 25 17:45 apache_1_3_4.tar.gz 
drwxr-xr-x 6 root root 1024 Aug 31 1998 ftp 
drwxr-xr-x 5 root root 1024 Aug 31 1998 httpd 
drwx------ 2 james james 1024 Apr 23 06:47 james 
drwxr-xr-x 2 root root 12288 Aug 31 1998 lost+found 
drwxr-xr-x 2 msql nobody 1024 Dec 28 1998 msql 
drwxr-xr-x 28 ols3 ols3 2048 Jul 19 21:38 ols3 
drwxr-xr-x 3 1022 nobody 1024 Jan 25 23:40 ols3cgi 
drwxrwxr-x 3 perl ols3 1024 Feb 2 07:11 perl 
-rw------- 1 root root 2097152 Jul 21 18:39 quota.group 
-rw------- 1 root root 1278656 Jul 21 18:39 quota.user 
drwxrwxr-x 2 root nobody 1024 May 11 1998 samba 
drwxr-xr-x 3 apache nobody 1024 Feb 25 16:58 temp 
drwxrwxr-x 2 webadm nobody 1024 Mar 14 16:34 webadm 

Shell 按着表现的方式与读取使用者输入种类的不同, 可分为二大类: 
Text base : 文字导向 
Graph base: 图型导向 
所谓 "读取使用者输入种类不同" 是指: 读取自键盘, 或读取自滑鼠, 其它 serial input, 萤幕触控等. 

这样说来, Shell 好像只是命令直译器罢了?! 
嗯, 这倒要按不同的 OS 所附给的 Shell 其功能和选择性的自由度而定. 

以 DOS 的 COMMAND.COM 而言, 它就是一个十足的命令直译器, 除了一点点 batch 档的能力之外, 它的功能并不多. Win 平台的 GUI, 则是一个图型式的命令直译器, 介面十分友善. 不过, 这二种 OS, 不能让你自由而简单地选择 Shell.(以前 DOS 有 4dos 可选用) 

由於 Unix 家族, 对 Shell 的处理, 采独立自由开放的方式, 因此, Shell 的种类相当地多, 更可以让人自由地更换(chsh). 

目前流行的 shell 有: 

Bourne shell : sh 
C shell : csh 
Korn shell: ksh (商业软体) 
tcsh (free) 
Bourne Again shell: bash (GNU) 

二. Shell 的简史 

第一个重要的 shell 是 Bourne shell (如此命名是为了纪念此 shell 的发明者 Steven Bourne), 1979 年第一个流行的 Unix 版本 7 发行时, 开始使用 Bourne shell. 

Bourne shell 的主档名为 sh, 因此, 日後人们便以 sh 为 Bourne shell 的主要识别名称. 

虽然 Unix 上的 shell 有许多种, 但 Bourne shell 的地位至今仍然没有改变. 许多 Unix 系统中仍然使用 sh 做为重要的管理工具. (它的工作从开机到关机, 几乎无所不包) 

第一个广为流行使用的 shell 变种是 C shell. C shell 主要附在 BSD 版的 Unix 系统中. 它的作者是柏克莱大学的 Bill Joy. C shell 主要是因为其语法和 C 语言相类似, 因而得名. 这使得 Unix 系统的程式师, 在学习 C shell 时, 感到相当地方便容易. 

以上这二种形成 shell 的二大主流, 後来的变种 shell 大都攫取这二种 shell 的优点. 

比如 Korn, tcsh 及 bash. 

Bash shell 是 GNU 计划的重要工具软体之一, 也是 GNU 作业系统中标准的 shell. 
Bash 在 1988 年诞生, 最初的作者是 Brian Fox, Chet Ramey 於 1989 加入, 现在官方正式的维护者是 Chet Ramey, 他的工作便是持续不断地增强 bash 的功能. 
1995~1996 期间推出 bash 2.0 , 在这之前, 广为使用的版本是 1.14.x, 它增加了许多新的功能, 以及更好的相容性. 
当然, Bash 是完全免费的, 它是 Open Source 的一员, 原始码全部开放. 

二. Bash 的功能. 

Bash 具有以下功能: 

相容於 Bourne shell (sh) 
包含有 C shell 以及 Korn shell 中最好的功能. 
具命令列编修的能力(您记得以前 DOS 中的 doskey 吗?) 
工作控制(job control)的能力, 可控制前景及背景程式 
具 shell 程式设计的能力, 可让您自订shell及设计程式, 管理系统. 
三. 新版的 Bash 哪里抓取? 

若欲抓取新版的 bash, 可至 或其 mirror 站台. 

中研院 FTP 也是不错的选择. ftp://ftp.sinica.edu.tw 或 ftp://linux.sinica.edu.tw 

三. 开始使用 Bash 

当你 login 进 unix 主机时, 便开始和 bash 互动, 一直到你 exit 主机(或按^D) 为止. 

Bash 的提示符号为$(代表一般身份使用者), 当您具有 root 权限时, 提示符号则变为 #. 

一旦出现提示符号时, 您便可以开始键入操作命令列(command line)了. 

命令可分为二大类: 

bash 内建的指令 
程式 
如果是 bash 内建的指令, 则由 bash shell 负责回应; 若是程式, 则 shell 会找出该程式, 然後将控制权交给核心, 由核心执行该程式, 执行完之後, 再将控制权交回给 shell. 

怎麽知道那些指令是 bash 内建的, 那些是程式呢? 通常用 "which 指令", 若没有任何回应, 表示是内建的指令(除非该指令错误、不存在, 或该程式不在预设的搜寻路径之内), 例如下: 

$/usr/ucb/which echo    [没有回应, 表示是内建的指令] 
/usr/bin/echo 
$ /usr/ucb/which ls 

/bin/ls 

四. 命令列的格式. 

命令列通常由好几个字串组成, 中间用空白或 tab 键分开. 如下所示: 

command options arguments(或称为 parameters) 
命令 选项 参数 
rm -rf /home/ols3 

除了空白和 tab 键之外, 每一部份, 我们称之为 token, 比如上面的例子中, 便有三个 token: rm, -rf, /home/ols3. 

当键入此一命令列时, shell 首先将它分解成个别的 token, 然後判断是内建的指令, 或是程式, 再按之前提过的方式去执行. 

怎麽知道一个命令或程式, 它有那些选项和参数呢? 通常 man 一下该指令, 就可以得到了. 例如: 

man rm 

另外, 多行指令也可以一下全部写在同一命令列中, 只要中间用  分开, 如: 

ls  mkdir test  clear 

五. 现行目录和自家目录. 

所谓现行目录(current directory)是指: 你现在所处的位置, 又称为工作目录(working directory). 

欲知现行目录为何? 可下 pwd 指令便知. 

所谓自家目录(home directory)是指: 当初 root 为你建立帐号时, 所指定给你的一个私人专用的目录, 也是你登入系统之後, 第一个进入的地方. 

欲知自家目录, 可用下列方式: 

cd    (然後直接按 Enter) 
cd ~    (~ 代表自家目录) 
cat /etc/passwd | grep 您的帐号 
相关的技巧 

cd ./myway (进入目前目录下的 myway 目录中)  
cd .. (回到上一层目录) 

六. 万用字元. 

如果命令列的参数中, 含有档名, 那麽万用字元(wildcards)可以带来十分便利的操作. (不过若使用不当, 也是恶梦的开始) 

如果各位以前有过 DOS 的操作经验, 应该还记得 * 及 ? 所代表的意义吧?! 

以下是 bash 中使用的万用字元: 

? 代表任何单一字元(character) 
* 代表任何字串 (注意: 0 个以上的字元, 例: *yes 将包含 yes 或 yes-or-not) 
[字元组合] 在中括号中的字元皆符合, 如: [a-z]代表所有的小写字母 
[!字元组合] 不在中括号中的字元皆符合, 如: [!0-9]代表非数字的字元皆符合 



七. 输入和输出与重新导向. 

当 unix系统完成开机之後, 预设上, 便开有三个档案, 这三个档案是做为输入、输出以及显示错误之用的. 

我们称之为: 

标准输入: 通常是键盘, 档案代码为 0 
标准输出: 通常是萤幕, 档案代码为 1 
标准错误: 通常标准输出相同(也就是萤幕), 档案代码为 2 
虽然系统已帮你设好了这三个档案, 但我们仍然可以视需要, 适时地改变输入,输出,及错误这三者至不同的地方. 这种改变标准输出入的动作, 我们称之为 "I/O 重新导向" (I/O Redirection). 

例如: 

ls -la > myfile 就是将查询的结果重新导向至 myfile 中(本来是应该出现在萤幕上的) 

cat myfile 便可以看见 ls -la 的结果. 

cat < myfile > youfile 就是将 myfile 的内容拷贝给 youfile. 

> 代表将输出转向 

< 代表将输入转向 

另一个会将输出入转向的机制是 "管线" (Pipelines). 

所谓的管线就是将一个程式的输出当成另一个程式的输入. 

例如: cat /etc/passwd | grep ols3 

上面这段指令的意思是说: 把 /etc/passwd 档的内容显示结果(即输出) 丢给 grep 这个指令当作输入值, 然後由 grep 从中找出包含关键字 ols3 的资料列. 



八. 前台与后台工作. 

unix 是多用户多任务的作业系统, 这意谓UNIX 可以让多人同时使用, 更可以同时执行许多程式. 

一般而言, 你所执行的指令会一直握着控制权, 一直到程式结束为止, 我们称为这样的执行工作是在前台工作(foreground jobs), 如果, 执行指令时, 你仍然可以再做其它的事情, 那我们就称它是在后台工作. 

通常比较耗时间的工作, 我们会把它丢到后台去执行, 而这期间, 我们仍然可以和 shell 继续沟通, 下达其它命令给 shell 去执行. 

例如: 我们想从中研院的 FTP 伺服器下载某一个目录中所有的档案, 但又不想等它执行完毕(因为这样耗时间,也很无聊), 可以用以下的方式来达成: 

ncftp -R ftp://linux.sinica.edu.tw/pub1/redhat/powertools & 

其中 & 这个符号便是将命令列丢到后台去执行的指令. 

如果您想离线之後, 仍然令系统继续传档, 可以在前面再加一个 nohup 的指令, 如下: 

nohup ncftp -R ftp://linux.sinica.edu.tw/pub1/redhat/powertools & 

nohup 是 no hangup 即不挂断之意. 

八. 特殊字元及引号. 

有许多字元, 对 shell 来说, 是具有特殊意义的. 详列於下: 

符号 意义 
~ 自家目录 
` 命令取代 
# 解 
$ 变数取值 
& 后台工作 
* 万用字元 
( 子shell开始 
) 子shell结束 
\ 使特殊字元恢复本意 
| 管线 
[ 字元组合开始 
] 字元组合结束 
{ 命令区块开始 
} 命令区块结束 
; 命令分隔号 
' 单引号(不具变数置换的功能) 
" 双引号(具置换的功能) 
< 输入转向 
> 输出转向 
/ 路径分隔号 
? 万用字元 
! 管线逻辑意义上的 NOT 


第四部分第二讲待续。 

第二卷:系统管理与应用 

第一部分:常用系统管理与网络命令 
第二部分:系统结构介绍 
第三部分:系统启动过程 
第四部分:网络服务器的配置 


第一部分:常用系统管理与网络命令 
一、与用户有关的命令 
login用户登陆命令 
rlogin通过网络登陆到其他计算机的命令 
telnet远程登陆命令 
su切换用户命令 
passwd更改用户明码命令 
exit退出当前SHELL命令,等同ctrl+d. 
二、定位命令 
当用户要执行一条命令时,系统首先要根据搜寻路径定位该命令。搜寻路径是为了定位命令而列出的一组目录。 
在系统安装时默认的搜寻路径是一些标准的目录,如/bin,/usr/bin,sbin,/usrsbin等。用户可以根据自己的需要修改搜寻路径。方法如下: 
修改.profile文件中的PATH语句(K SHELL和B SHELL) 
修改.cshrc或.login文件中的path=(...)集合(C SHELL) 
which用来在搜寻路径中寻找一个特定的命令。若发现该命令, 
(usr/ucb) which命令就输出该命令的目录名。 

三、man 命令的使用 
-k keyword 在手册关键字数据库中总结出与keyword有关的信息项。 
-f command 找出与command有关的详细信息。在使用这一选项时必须要确保root 
用户已建立/usr/man/watis文件。 
-m path 指定man 命令所使用的搜寻路径。 
四、管理命令 
install该命令用来安装软件的新版本或新的软件。 
-cdirectory将文件装入指定的目录,如果该文件已经存在,次此操作 
无效。 
-fdirectory将文件装入指定的目录(即使该命令已经存在),如果装 
入的命令版本比原来新,那么文件使用默认的权限。 

shutdown关机命令(只有root权限才可以) 
-h完全停止操作系统的执行。 
-i 在shutdown过程中给用户提示信息。 
-m把系统变成维护模式(单用户)。 

ulimit在K SHELL和B SHELL中,ulimit命令用来限制进程对某类资源的使用。limit命 
令对资源的限制分为二类: 
硬限制在整个系统内对资源的限制,只能由root用户修改。 
软限制 对新创建进程的默认的限制,可增加到系统范围内的硬限制。 
-a显示软限制 
-Ha显示硬限制 
-c size设置core文件的大小(单位为块)。 
-f size设置CPU时间(单位为秒)。 
-d size设置数据块的最大值(单位为K字节)。 
-s size设置栈的最大值 (单位K字节)。 
-m size 设置使用内存的最大值(单位K字节)。 
如:ulimit -t 60(用户想把CPU时间限制为每个进程60秒) 

umask为每个用户设置默认的权限值。 
文件和目录包含三种权限:所有者、组成员和其他用户的权限。系统使用八进制对权限设置。用户在使用umask命令时要小心,用777减去umask值才是对文件和目录权限设置的默认权限。例如当umask设置的值为022,那么默认权限为777-022=755 

五、进程相关的命令 
进程可分为三大类: 
在终端上执行的交互式进程 
批处理进程 
守护进程 

ps 查询正在运行的进程。 
-A 列出系统中正在运行的进程的详细信息。 
-e列出除核心进程外的所有进程。 
-a列出与终端有关的所有进程。 
-f产生一个完全列表。 
-l产生一个长列表。 
-t list列出由list表指定的终端创建的所有进程的详细信息。 
查询当前正在运行的所有进程并列出完整表格:ps -ef/Af 
查询终端pts002正在运行的所有进程:ps -tf pts002 

nohup命令 
UNIX环境下进程可以在前台运行也可以在后台运行。进程在前台运行时,用户必须在终端旁等待该进程结束。若此时用户想使用终端而又不想终止运行的程序时,可以按如下方法把进程转移到后台运行: 
Ctrl+z 
bg 
当用户从当前SHELL或系统中退出时,该用户在前后台运行的程序都将被终止。为了使用户在退出时,系统保留其进程继续运行,UNIX提供nohup命令。 
nohup命令将标准输出重定向到文件nohup.out中,该文件存在于nohup命令执行时的当前目录中。若用户后台执行脚本a.sh,可使用如下命令: 
nohup ./a.sh & 
符号&表示用户在后台执行该命令。 

sleep命令 
该命令可以使两条命令执行之间停顿一段时间。如每隔15分钟可用sleep命令来检查一些特定文件是否存在。sleep命令参数的单位是秒。 
如在命令执行之间等待5分钟:sleep 300 

kill命令 
该命令可以向一个正在运行的后台进程(否则用户无法使用KILL命令)发一个信号。该命令的默认功能是终止一个进程的运行。 
-l列出系统支持的信号值及其名字。 
-signal number指定送给进程的信号值。用户可以用信号名代替信号值。 
如:终止进程号为1060的进程:kill 1060或kill -9 1060 

nice命令 
该命令用用于修改进程优先级,只有root用户才有权限。 
负数比正数具有更高的优先级,优先数一般范围是-20--20. 
例如:用户使用find命令搜索c文件,为了在寻找时执行其他工作,可降低find命令的优先级,可以执行: 
nice find / -name *.c -print & 
这样就将该进程设置为系统默认的优先级,一般为10.若还想降低,可以执行: 
nice 16 find / -name *.c -print & 

六、通讯命令 
1、ftp 远程传输命令(与DOS下的FTP参数差不多,在次不多说) 
2、talk 与所有在线用户会话命令。 
3、write 与指定用户会话命令。 
4、vacation 当用户休假时,可用该命令通知向其发邮件的用户。所发内容由用户home目录中的vacation.msg文件决定。若该文件不存在,那么系统将使用默认的消息。 

七、文件比较命令 
1、cmp比较两个文件内容的不同并在标准输出上产生比较结果。 
(用于非文本文件) 
2、diff 比较单个或存在于不同目录下的具有多个相同文件名的多个文件。 
(用于文本文件) 
3、comm将文件排序并比较其内容。 

4、dircmp用来比较两个目录的内容。 
-d 首先列出仅在一个目录中存在的文件,然后列出在两个目录中都存 
在的文件以及他们是否相同。最后列出使用diff命令比较两个不同文件的输出。 
-s 首先列出仅在一个目录中存在的文件,然后列出同时存在于两个目录,但不相 
同的文件。 

八、文件与目录操作命令(讲解略) 
1、touch 
2、chmod 
3、chown 
4、chgrp 
5、rm 
6、mv 
7、cp 
8、cat 
9、rcp 
10、ln 
11、mkdir 
12、rmdir 
九、文件信息命令 
1、ls 
2、find 
3、file 
十、与文件内容相关的命令 
1、more 
2、less 
3、tail 
4、head 
5、wc 
6、read 
7、od 
8、pg 
9、tee 
10、vi 

十一、文件内容查询命令 
1、egrp 
2、fgrep 
3、grep 
4、strings 
十二、打印命令 
1、cancel 
2、lp 
3、pr 
4、lpstat 
5、lpshut 
十三、调度命令 
1、at 
2、crontab 
十四、存储命令 
1、compress 
2、cpio 
3、dd 
4、pack 
5、tar 
6、uncompress 
7、unpack 
8、zcat 
十五、状态命令 
1、date 显示或更改系统日期与时间 
2、env 显示当前的环境或设置一个或多个环境变量。 
3、sar 报告系统信息,默认时sar命令产生CPU使用信息。 
-A 报告整个系统活动访问列程 
-a 报告文件系统访问列程的使用数据。 
-b 报告缓冲区的使用情况。 
-c 报告系统调用使用情况。 
-k 报告内核的情况。 
-m 报告信号量和消息的情况。 
4、uname 在标准输出上显示计算机系统和操作系统的信息。 
-m 显示机器的ID。 
-r 显示操作系统发行的版本号(release number). 
-s 显示系统名。 
-v 显示操作系统版本号。 
-S name改变系统名。 
-a 显示机器ID,操作系统的版本号及系统名。 
5、uptime 该命令显示如下信息: 
当前时间 
系统已经工作时间 
登陆的用户数。 
系统中执行的的作业数。 
6、vmstat 用来获的有关进程、虚存、物理卷及CPU活动的信息。 

第二讲 常用管理命令 

二、 常用系统管理命令介绍 

  1. share 和 mount 命令 

  这是系统管理员常用的两个命令,share命令用于把本机的目录共享出来,以便其它UNIX系统可以使用;mount命令则用于把其它UNIX系统共享出来的目录挂接到本机的挂接点上,从而可以使用其它UNIX系统的资源。 例如: 

  在机器A上输入 machineA# share -F nfs -o rw /share-dir 

  在机器B上输入 machineB# mount -F nfs machineA:/share-dir /mount-point 

  第一条命令把机器A的 share-dir 目录共享出来,并且共享的权限是可读写; 

  第二条命令把机器A的共享目录挂接到机器B的 mount-point 目录上。 

  完成这两个命令后,用户在机器B上通过对mount-point的访问就可以操作机器A上的share-dir目录了。 

  但是有时我们操作时,在机器B上执行了mount命令后,会返回"RPC: Program not registered"这样的错误,这是因为在机器A上缺少mountd和nfsd 这两个守护进程(daemon)。UNIX系统启动时,系统会自动检查/etc/dfs/dfstab文件,如果文件中有要共享的资源,则启动这两个守护进程,反之,则不启动。所以如果我们在/etc/dfs/dfstab中没有内容,则系统不能启动mountd和nfsd这两个守护进程,用share命令共享的目录也不能真正被别的系统共享。 

  解决这个问题的方法很简单,我们可以把要共享的目录放入/etc/dfs/dfstab中,则下一次系统启动时会自动共享这个目录;另外,我们也可以手动启动这两个守护进程,方法是首先用超级用户(root)登陆,在命令行输入如下命令: 

    machine_A# /etc/rc3.d/S15nfs.server start 

  或输入: 

    machine_A# /usr/lib/nfs/mountd 
    machine_A# /usr/lib/nfs/nfsd -a 16 

  就可以启动这两个守护进程了。 

  守护进程启动后,共享目录才真正被共享出去,这时再在机器B上用mount命令就可以把机器A的目录挂接到机器B上了。 

2. ifconfig命令 

  ifconfig命令用于查看和更改网络接口的地址和参数,如果要显示某台UNIX主机的IP地址,我们可以在命令行下输入: 

    $ifconfig -a 

  系统会显示网络接口的名称,接口的状态(up or down),接口的IP地址和掩码等信息。 
如果我们要更改网络接口的IP地址,可以在root权限下输入: 

    #ifconfig hme0 down 
    #ifconfig hme0 202.1.2.3 netmask 255.255.255.0 up 

  首先,使用down命令参数把网络接口hme0的服务暂时停止,然后再用ifconfig命令给接口分配新的IP地址和掩码,并启动网络接口服务。本例中把hme0接口的IP地址设为202.1.2.3,掩码为255.255.255.0。我们也可以通过改变文件/etc/hosts中的IP地址的值并重新启动系统来更改机器的IP地址。 

  在系统启动时,网络接口服务时自动被启动的,我们不需要手动地创建网口服务,但有时我们更改了网卡或增加了网卡后,系统不能自动启动该接口服务,这时我们需要手动创建网口服务,在root权限下输入: 

    #ifconfig hme0 plumb 

  即可以为接口le0创建网口服务。相应地,用ifconfig带unplumb参数可以停止服务并关闭网络接口,这时我们再用ifconfig -a 命令将看不到该网络接口。 

3. fsck命令 

  fsck命令也是一个经常使用的命令,它用于对文件系统进行检查,并对损害的文件系统进行修复。 
fsck的语法如下: 

  fsck (-F fstype) (-v) (-m) (-special…) 
  fsck (-F fstype) (-v) (-y|Y|n|N) 
  (-o fstype options) (special…) 

  其中: 

  -F fstype : 说明被检查的文件系统的类型 
  -v : 返回完成的命令行,但不运行 
  -y|Y: 对所有问题均回答Yes 
  -n|N: 对所有问题均回答No 
  -m: 对文件系统进行检查,不修复文件系统, 

  如果文件系统经检查后是可安装的,则显示 

  ufs fsck : sanity check : /dev/rdsk/c0t0d0s0 okay. 
  -o: 文件系统类型选项,选项由逗号分隔, 

  最常用的选项有两个: 

  P: 整理(preen)模式 
  F: 强制检查模式,此选项忽略文件系统状态标志。 

  运行fsck后,该命令会分6个阶段对文件系统进行检查,这六个阶段分别是: 

  阶段1: 检查块和块的大小 
  阶段2: 检查路径名 
  阶段3: 检查连接性 
  阶段4: 检查参考记数 
  阶段5: 检查自由块列表 
  阶段6: 补救自由块列表 

  fsck在对每个阶段进行检查时,如果发现错误,会提示用户进行修改,常见的一些错误有: 

  (1). 移去一个没有相关文件的目录入口:这时用户可以回答Yes或Y来删除该目录入口。 

  (2). 重连接一个已分配但不能访问的文件:fsck找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对fsck的"RECONNECT?"回答Yes,即把该I节点连接到lost+found目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。 

  (3). 连接数调整:在交互方式下,fsck若发现连接数不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。这时用户应该回答Yes或Y来改正连接数。 

  (4). 自由块表不一致:fsck查出未分配块数与超级块中所给出的自由块表不一致。这时用户应该回答Yes或Y来修正超级块。 

  从上面的出错信息和处理方法可以发现,对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用" -y"选项来执行该命令对硬盘进行检查和修复。 

4. route命令 
  route命令主要用于手动配置静态路由表。例如我们要增加一条通过网关到达令一子网的路由,命令如下: 
    #route add net remote_net_ip gateway_ip 1 
  其中add代表要增加路由,net表示路由到达的是一个网络而不是一台主机,1代表远端网络需通过网关才能到达,而不是直接与它相连(直接通过网络接口相连时,该参数用0)。 

 也可以使用如下命令: 

    #route add -net remote_net_ip 
    gateway_ip -netmask netmask 
    #route add -host host_ip 
    local_interface_ip -interface 

  其中第一条命令与上面介绍的命令完成相同的任务,而第二条命令则代表要建立一条通过网络接口到达另一台主机的路由。 

  当然,我们使用"delete""change"命令参数可以对路由表中的路由信息进行删除和修改。执行完route命令后,我们可以用"netstat -rn"命令查看当前的路由信息。 

  通过route配置路由表后,该路由信息会一直保存到下次系统重启。系统重启后,则要重新配置路由表。通过修改文件/etc/defaultrouter可以设置一些默认路由,这些路由在系统每次启动时都会被加到路由表中,而不必每次启动都用route命令来配置路由表。 

  /etc/defaultrouter文件的格式如下: 

    $cat /etc/defaultrouter 
    202.77.111.1 

  该文件中现在只有一条默认路由,IP地址是202.77.111.1,这代表系统将把所有不属于本地的数据包都通过网关202.77.111.1发送出去。 

  有时UNIX系统安装完成后,/etc目录下并不存在defaultrouter文件,这时我们可以手工创建该文件,并编辑好默认路由,然后重启。系统启动后,就会自动使用配置好的默认路由信息了。 


5、 UNIX系统管理常见问题及解决方法 

  1. 忘记root 密码 

  root用户又被称为超级用户,它是权限最高的用户,一旦它的密码被忘记,将给系统的维护和管理带来很多困难,下面是忘记root密码时的处理方法: 

  首先,我们需要从CD-ROM 启动系统,命令是: 

    #boot cdrom -s 

  系统启动后,我们要把硬盘根分区挂接到光盘文件系统的/mnt目录上,执行: 

  #mount /dev/dsk/c0t0d0s0 /mnt (该例假设根文件系统是/c0t0d0s0) 

  编辑硬盘根分区的shadow文件,将root的密码项位置设为空。 

    #cd /mnt/etc 
    #vi shadow 

  注意,有的系统要编辑/etc/passwd 文件而不是/etc/shadow文件。改完文件后,将挂接的根文件系统卸下。 

    #umount /mnt 

  重新启动系统,并设置新的root密码。 

7、系统无法启动 

  系统无法启动的原因大致如下: 

  1) 错误的引导设备 

  假如因为指定了错误的引导设备使系统不能引导,我们可以在PROM监控等级下利用"probe-scsi""probe-scsi-all""probe-ipi"命令来查看有什么设备被连到系统上,并得到启动设备的devalias名。进入PROM的方法是当系统启动时,同时按下"STOP"键和"a"键, 这时系统出现提示符ok >,即表明系统当前处于PROM监控等级。 

  用printenv显示当前配置情况,如果发现引导设备不正确,可用setenv来重新设置: 

    ok >setenv boot-device devalias 

  用reset命令重新启动系统,或set-defaults 恢复缺省值。 

  2) 缺少重要的系统文件,或文件无效 
  这时可以用"-a"选项来引导系统,系统将提供交互式的引导过程,如果有找不到文件时,系统会提示用户给出适当的文件名。 

  3) 缺少关键的系统文件,或文件无效 
  例如缺少/etc/passwd文件,这时系统可能会引导,但是没有任何用户可以注册。修复方法是用光盘启动,挂接根文件系统并编辑/etc/passwd文件。 

  4) 无法挂接远程文件系统 
  系统启动时,会自动执行/etc/vfstab文件,如果在文件中有无法挂接的远程文件系统,则系统会一直处于等待和重试状态,无法进入登录界面。解决办法是用单用户启动,编辑/etc/vfstab文件,删除错误的挂接内容。 

  3. 键盘失效 

  如果出现键盘失效的情况,即用户在键盘上输入信息而屏幕上没有响应,首先要检查硬件的连接,即查看键盘与主机的连接是否完好,连接导线是否有折断或损害情况。 

  如果硬件连接没有问题,则查看是否不小心使用了锁屏命令。方法是,按下"Ctrl+q"键,如果系统有响应,则说明是因为用户按下了"ctrl+s"键将屏幕暂时锁住的原因。锁住后的屏幕将不显示用户从键盘输入的信息,但输入的信息依然能够执行。 

  如果系统仍没有响应,我们则要重新启动系统,进入PROM状态,输入printenv命令,并查看input device项的值,如果它的值不是keyboard,用 

    ok >setenv inputdevice keyboard 

  来使键盘成为输入设备,然后再次重启系统,这时系统将会响应用户的输入了。 

8. cron 或 at 命令不能执行 

  UNIX系统并不允许任何用户都可使用cron进行作业调度,对用户的限制有两个文件,它们是/etc/cron.d/cron.allow和/etc/cron.d/cron.deny。 

  如果用户名被添加到/etc/cron.d/cron.allow文件中,则该用户被允许使用cron,而不在该文件中的用户则不允许使用,如果用户被添加到/etc/cron.d/cron.deny中,则该用户不能使用cron,其它用户则可以使用cron。通常我们根据需要配置其中一个文件就可以了。 

  如果用户被允许使用cron,则可以用命令 

    $crontab myCronFile 

  在系统的/var/spool/cron/crontabs目录中安装自己的作业调度控制文件。at 和 cron 相似,要使用at, 需要配置/etc/cron.d/at.allow或/etc/cron.d/at.deny文件。 

 9. 在Telnet时不能用root登录 

  在默认情况下,出于安全性考虑,UNIX系统不允许在系统操作台(console) 以外的终端用root登录,所以有时我们通过Telnet用root登录时,会返回: 

    "not on system console" 

  这样的错误,这时,我们可以通过修改/etc/default/login文件来允许root通过Telnet登录。具体方法是,编辑login文件,找到下面的一行: 

    CONSOLE=/dev/console 

  将这一行注释掉,即在行首加上"#"符,存盘退出,再次使用Telnet时,root就可以登录了。 

  10. 关于目录的访问权限 

  我们都知道UNIX系统中的每一个文件都有相应的访问权限,系统根据该权限来控制用户对文件的访问,UNIX系统中的目录也有相应的访问权限,但它的定义与文件有些不同。 

  读权限:对目录的读权限表示用户可以查看该目录的内容,即可以对该目录使用"ls"这样的命令。 

  写权限:对目录的写权限表示用户可以在该目录下建立新文件或将其中的文件删除,不论此时用户对该文件是否有写权限。 

  执行权限:执行权限指用户可以在该目录下搜索文件,也即可以使用该目录下具有相应访问权限的文件。 

总结:上述命令均为常用系统管理命令,部分参数均为常用参数。希望unix学习者能认真学 
习本节,参照其他UNIX资料。本节不足之处,在所难免,希望大家指正。 


第二部分:系统结构介绍 
UNIX并不使用驱动器名如 C: D: 等来标记一硬盘或分区,在整个系统上,不管有多少个硬盘,分区是怎样的,只有一个根目录,叫做root 标记为 / ,其下任何一个子目录,却可以是一个硬盘或一个分区,而且是可随时改变的,比如今天你可以设置 /tmp 为硬盘上一个分区,明天你可以设置他为一个你新装的硬盘,如果你需要对这方面深入了解,你必须去看看这方面的专业书籍。现在我要让你知道的是在通常情况下,一个UNIX系统的各个标准目录下面的文件是什么,以免你哪天万幸进入了人家的系统,但连人家的主页在那里都找不到,下面我们说说UNIX文件系统的路径组织结构。 

各种UNIX类操作系统的路径组织结构虽基本相同,但总存在一些小的差别。 
不过,总体上还是差不多的。 
/ 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载 
点。 
/bin 系统启动时需要的一些通用可执行程序。 
/cdrom 光盘驱动器的装载点。 
/compat 与系统兼容有关的内容,如系统模拟等。 
/dev 设备入口点。在UNIX系统上,每个设备都作为一个文件来看待,这 
里放着所有系统能够用到的各个设备 
/etc 各种配置文件。非常重要的一个目录,所有的配置文件(你可以 
看成是windows的注册表)包括用户密码文档等存放在这里 
/mnt 软盘等其他文件系统的装载点。 
/proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。 
/root root用户的工作目录。 
/sbin 系统可执行文件。 
/stand 独立执行的程序,sysinstall就在这个目录下。在安装配置系统时用到 
/usr 第二个文件系统。基本上是和系统核心无关但又属于操作系统的一部分的一个目录,大多数的应用程序,还有各用户的私有资料存放在这个子系统 
/usr/bin 与系统启动无关的标准应用程序。 
/usr/sbin 系统启动时不需要使用的一些系统管理程序。 
/usr/games 游戏。 
/usr/home 用户目录。存放各个用户自己的文件,如果你的用户名为 abcd 那么 /usr/home/abcd 就是属于你的目录,一般情况下其下面的任何文件可以任你主宰,你能够创建、删除文件和目录 
/usr/include 程序需要的头文件。 
/usr/lib 程序需要的库文件。 
/usr/libexec 一些不由用户直接运行的执行程序。如ftpd telnetd 等服务程序 
/usr/man 帮助文件 
/usr/X11R6 X-Windows系统 
/usr/X11R6/bin 可执行的X-Windows程序 
/usr/X11R6/include X-Windows程序的头文件。 
/usr/X11R6/lib X-Windows程序的库文件。 
/usr/X11R6/man X-Windows程序的帮助文件。 
/usr/share 各种共享的只读文件,大多数是一些系统信息,文档。 
/usr/local 第三个子文件系统,不属于FreeBSD一部分的其他程序。如果你再安装其他的程序如apache mysql等这些不是系统自带的程序的时候,将会放到这里,其下同样有bin sbin etc man lib include 这些目录 
/var 存储经常发生变化的文件,如邮件,日志等。 
/var/log 系统日志。 
/var/mail 发给用户的信件。 
/var/spool 缓冲数据,如打印数据等。 
/var/tmp 临时文件。 
了解这个路径结构将给用户使用unix系统提供很大方便。同时我们也看到,UNIX系统的文件组织结构是如此的清晰,什么东西就放在什么地方,查找非常容易。 

总结:下面我再重点说说几个重要的目录,无论在 / 还是 /usr 或者 /usr/local ,甚至 /usr/home/username 下面,都会有 bin sbin etc man 这几个目录,通常一个应用程序会把普通的可执行文件放到 bin,而跟系统维护相关的可执行文件放到 sbin,配置文件放到 etc,帮助文件放到 man ,需要用到的库文件到/usr/lib中找,编译时要用到头文件到/usr/include中找 
看到这里,相信你对一个UNIX系统上都有一些什么东西比较了解了,但是,这些东西虽然存在,可也不是你想看就看,想运行就运行的哦,UNIX有一套规则来规定谁能干什么,不能干什么,这个文件谁能看谁不能看,谁能用谁不能用,或是谁只能看不能用,这都是我们以前曾介绍的有关用户与文件权限的设置。 

第三部分:系统启动过程 
一、了解unixware 7.1.1系统引导文件 
SCO UNIXWARE 7.1.1的引导文件就类似与我们熟悉的DOS/WINDOWS的系统文件:IO.SYS,MSDOS.SYS与COMMAND.COM。 
位于/stand目录中,各个文件的名称及作用解释如下: 
1、boot,包含定义的引导参数。 
2、unix,当boot程序引导后,将搜索并装载该程序到内存, 然后就调用boottab,即inittab文件(/etc/inittab), 
init进程运行后,我们就称系统进入守护状态。 
3、unix.old,当新的内核邦定后,该文件将保存老的系统引导表boottab. 
4、bootmsgs,该文件包含系统启动的文字信息。 
5、logo.img,该文件为引导时的图形界面。 
6、help.txt,该文件包含的都是当在boot:后打入"?"后的帮助信息。 
7、resmgr,该文件为一份resouse manager数据库的备份。 
8、resmgr.sav,该文件为一份老系统的resouse manager数据库的备份。 
9、*.blm,所有blm文件均为引导、装载模块。 
二、了解unixware 7.1.1系统引导过程 
unixware 7.1.1与其他UNIX系统引导过程相似: 

整个系统的启动分为两个阶段,第一阶段是系统自举,第二阶段是启动Unix。 
由于Unix驻留介质不同,整个系统启动阶段也不完全相同。以从硬盘上引导系统为例。 

系统自举阶段主要分三个步骤: 
1.由ROMBIOS引导硬盘的0道0扇区的Master boot块; 
2.由Master boot块引导硬盘活动分区的第0扇区的boot块; 
3.该boot块将随后扇区的内容引导并运行。 

启动Unix阶段主要是由boot程序引导Unix核心程序开始,即引导/stand/unix。 
当Unix系统被引导运行后,将启动一个称为init的进程,该进程将启动/etc/inittab文件中所列的 
进程,并且引导系统进入某一特定的运行级别。 



第四部分:网络服务器的介绍 
一、FTP的安装与配置 
二、DHCP的安装与配置 
三、DNS的安装与配置 
四、SENDMAIL的安装与配置 
五、APACHE的安装与配置 
六、BBS的安装与配置 
七、SAMBA的安装与配置 
八、SSH的安装与配置 

一、FTP的安装与配置 

ProFTPD 详解 
当我的同事每次传送文件到 Solaris 8 的 FTP Server 时,那些修改日期在 2002 年 
之前的文件总是不能在窗口中看到,这些文件在 Solaris 系统中用 ls -l 看到的是 
带有年份的,而那些 2002 年的文件则没有 2002 的年份。因此,问题就出在这里,我 
们每次需要用 touch 命令更新文件日期,十分的不方便。所以,我认定是 FTP Server 
的问题。随即决定选用熟悉的 Wu-ftpd ,但是,令人吃惊的是,使用这个版本的 
FTP Server 后,居然不能显示目录,连整个目录都不能列出来了。想到以前曾经有文章 
介绍 ProFTPD ,因此,决定尝试这个软件。感觉起来十分的好用,特地撰写此文,愿 
意和大家共享。 

ProFTPD 也是开放源码的软件,以 GPL 许可发布。ProFTPD 可以说是 wu-ftpd 的替代, 
同时在安全,可伸缩性等方面有很大的提高。特别是对于熟悉 Apache 配置的人而言, 
它的配置和 Apache 十分相似,因此,用起来肯定能得心应手。 


主要特色: 
一个单一的和 Apache 的 httpd.conf 类似的配置文件 
每个目录下的 .ftpaccess 文件(和 Apache 的. htaccess 类似) 
很容易配置的,多个虚拟 FTP 服务器以及匿名 FTP 服务 
可以单独运行也可以从 inetd/xinetd 启动 
匿名 FTP 的根目录不需要特别的目录结构 
系统的二进制文件和其他系统文件没有 SITE EXEC 命令 
在单独运行方式下,以非特权用户运行,降低攻击风险 
日志以及 utmp/wtmp 支持 
Shadow 口令支持 

截止到本文成稿时, ProFTPD 的最新版本为 v1.2.4 ,为了保证系统安全,建议你总 
是把软件更新到最新的版本。 

wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.4.tar.gz 

./configure --prefix=/usr/local --enable-shadow 
make (如果是双 CPU 建议采用 make -j3) 
make install 

然后你可以发现 ProFTPD 安装在 /usr/local 下,"proftpd" 可以在/usr/local/sbin/ 
目录下找到,配置文件 proftpd.conf 位于:/usr/local/etc/ 。 

如果你熟悉 Apache 的 httpd.conf 的配置的话, proftpd.conf 的配置十分简单。 


DefaultRoot ~ users, !staff 
ServerIdent On "FreeLAMP FTP Server" 
ServerName "" 
ServerType standalone 
ServerAdmin webmaster@freelamp.com 
Bind 192.168.0.1 
ExtendedLog /var/log/proftpd read,write,auth 
ScoreboardPath /usr/local/var/proftpd 
RequireValidShell Off 
User proftpd 
Group proftpd 

下面我们就可以启动了: 

/usr/local/sbin/proftpd & 

以上的配置方法十分简单,不再赘述。下面我们看限制匿名用户登录的办法: 

#MaxClients 1 "Maximum users reached - try again later" 
#MaxClients 1 "Sorry, max %m users -- try again later" 
MaxClients None "对不起,本系统不支持匿名登录" 


带宽控制: 

RateReadBPS 81920 
RateReadFreeBytes 5120 
RateReadHardBPS on 

这样用户的带宽就用公式: "RateReadBPS x MaxClients = Total Bandwidth allocation." 
限制起来,但是针对每个虚拟域,每个用户以及全局的限制还没有实现。在 1.2.x 系 
列中只有一个全局变量影响整个服务器: 

Bandwidth 81920 

另外,你还可以采用 "mod_quota" 和 "mod_ratio" 模块来控制用户的磁盘限额。 


阅读(526) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~