电脑技术学习

SCO UNIX 讲座

dn001


第一讲Unix简介
文:Santa Cruz Operation, Inc.

UNIX向来是强劲的作业系统,屹立多年不倒,但是,对一般使用个人电脑的用户来说,确是比较陌生,有见及此,编辑部选择了在个人电上也可运行自如,毋须庞大的Mainframe或甚麽大机器的SCO UNIX,介绍给大家,让各位对另一广阔无限的作业领域探首一下,也许玩起Internet时,会有另一番天地,别错过这一连十二期的「UNIX自学篇」了。

可能有些人会误以为UNIX只是那些功能强劲的庞然大机方会使用的作业系统,谁不知道在个人电脑上,一样可以使用,只不过所使用的是特别为个人电脑设计的PC UNIX,SCO UNIX就是其中的表表者。

对於惯用Dos或视窗环境的朋友来说,UNIX的第一重关卡就是那些「敏感标号」(Sensitive Case),字母的大小写俱有不同的意思,Ls、IS、LS或Is这些指令全不相同,所谓「差之毫□,谬之千里」,它对大小写可是绝对敏感的。

文件名称

在SCO UNIX下,建立的文件档案名称,可以是包含最多十四个字母数字字符的任意组合,既可使用下横「□」,也可使用句号「.」。不过,文件名称却不能使用某些特定字符,因为它们对Shell来说有特定意义。这些不能用作文件名的字符,分别是「;」「|」、「〈」、「〉」、「'」「$」、「!」 、「%」、「(」和「)」,而文件名称中也不能含有空白空格等。

文件存取权

每个文件都可以拥有不同的存取权限,界定其它用户能否存取文件和目录。

每个文件分为三类所有权:文件的属性、属主所在小组的成员(即组员),可存取系统的其它用户。用「|」的指令,就可以查看文件的权限。
drwxrwx…
好像上列的文件存取权限,第一个符号指示文件类型,减号为普通文件,d则表示目录文件。接著的九个字符分成三组,分别表示属主、组员和其它用户的存取权;每组有三种存取权:「代表读(Read)、w代表写(Write)和x代表执行(Execute)。而没有存取权的相应位置则会出现减号(-)代替。

目录存取权

基本上,文件与目录之间的存取权的设置大致一样,但仍有些微分别。

首先,要查看目录的存取权限,就要在「|」之後,加一个空白处,再加上「-d」。如果要改变当前目录,则用「cd」。

改变存取权限

要加文件或目录的存取权限,可用「chmod」的指令,例子如下:
$chmod g+rw filename
g代表更改组员可以享有的存取权限,+rw就是让组员可以读与写该文件。而u则代表文件的属性,o代表其它用户;减号(-)则代表取消某类人的某些存取权限。另一种更改权限的方法,就是使用八进制的数值指定存取权。每个符号赋与一个数值,r是4,w是2和x是1。例如组合读与写,其存取权的数值就是6。又譬如欲使文件对文件属主、组员和其它用户均具读写权,指令如下:
$chmod 666 filename

更改用户属主

每当创建新档案与目录时,标记你是属主,你的同组人员为组员,如果要把文件的使用权交给别人,只有属主方可更改,指令如下:
$chown owner file
chown改变了文件的身分ID(UID)
改变属组要改变文件所属的组别--文件组ID(GID),指令变为:
$chgrp group file

浏览文件内容

需要求助,可按?键。至於,浏览文件内容有几种方法,可使用more,显示大文件,指令如下:
$more filename
按〈space bar〉,显示正文的下一全萤幕;按〈return〉,转往下一行;按q进出文件;键入模式前缀(/),就可键入需要查找的匹配模式,若模式找不到,则会显示「pattern not found」的信息。按pg则逐次翻一个萤幕,而每个全萤幕後,都随提示符(:),按〈return〉,看下一萤幕,键入+n,向前移动n个萤幕;-n,向後移动n个萤幕;打入$,则移到文件尾。

如果使用Cat看文件内容,就可以在全荧幕上滚动文件内容。在任何位置,按<ctrl>s,文件就会停止滚动;按<ctrl>q,则会继续滚动;按〈del〉则中断不看。

处理文件

cp指令为复制文件,可以有多种用法:

$cp old.file new. file 备份一个文件

$cp file 1 file 2 Test 将file 1和file 2复制到Test目录下

至於,mv则为改名指令,譬如:
$mv fruit apples
就是fruit改名为apples

rm则是删除文件的指令。文件一经删除,就不能恢复它,故此,要加倍小心。
$rm- i filename
加上「-i」,删除前,系统需要确认。

第二讲shell环境
文:Santa Cruz Operation,Inc.

何谓shell shell是用户与作业系统之间的交互层,用户修改其环境,设置或取消shell的环境变量,迎合用户的需要和爱好。

shell本身就是一个电脑程序,用C语言编写,为协助用户与作业系统之间通讯而设计,管理用户与核心(Dernel)之间对话,并把作业系统指令换成机器代码,其实PC用户常用的DOS,本身就是一个shell。

sshell的用途

shell的主要任务是:提示用户打入指令,读指令,转换指令为核心所能理解的语言。其实,shell可以看作为指令解释程序,提供一些工具,亦可以利用shell的编写工具,构造电脑程序。

System V shell类

SCO System V的shell可分为四大类:Bourne shell;C shell;Korn Shell;和菜单驱动shell。而菜单驱动shell可再细分为三类,分别是Open Desktop,Sysadmsh或scoadmin和客户应用程序。每个shell都有自己特定的环境文件,可以自行修改至合用,这些环境文件就仿如DOS的批次档案(Batch File)。

Bourne shell

对普遍用户来说,Bourne shell可以说是第一个UNIX shell ,它是由AT&T贝尔实验室Stephen Bourne所编写。默认提示(Prompt)是美元符($),其环境文件为profile文件,由於文件档案不大,可以马上启动执行。

profile是存放在主目录下的普通正文文件(Text File),通过设置环境变量(Variable)和终端模式,可以使环境个人化,每次注册进入系统时,shell会读入profile文件,并执行所列出的指令。每当系统管理员创建新用户的户口时,系统都会自动构造一个相应的.profile文件;而整个系统的环境文件就放置在/etc/.profile中。用户可以使用vi或其他正文编器修改。若要使用env命令显示,由於注册时已设置了这些变量,也不一定需要另行设置。

C shell

C shell是由Berkeley的Bill Joy编写,是标准BSD(Berkeley System Distributou)命令解释,其默认提示是份符(%),环境文件则是cshrc和.login。

C shell采用C语言,是UNIX和XENIX系统上公共软件的开发语言,提供了方便工具,快速打入,校正和再打入命令行。

.login是C shell的注册环境文件,负责启动shell,注册时执行一次,而.cshrc则存放常用指令如alias等指令。譬如我们要创建一个永久别名,把命令who|sort|more别名化为wh,在提示(%)後,只需要键入wh即可。用户可在.cshrc□键入下面一行:
alias wh 'who/sort/more'

Korn shell

Korn shell是AT&T贝尔实验室David Korn所开发,是Bourne shell的增强版本,综合了Bourne shell和C shell的特点和约定,而Korn shell则比Bourne和C shell执行得更快。

Korn shell的默认提示与环境文件,跟其前身--Bourne shell一样,同为美元符号($)和.profile文件。

进程控制

虽然同一时间,系统中运行许多进程,但是某一特定时刻,CPU只会让一个进程使用,而CPU则在行使中的进程之间快速轮换,每个进程所占用的时间,称为时间片。SCO System V为了保持、跟踪或调度每个进程,会给每个进程一个进程标识号ID或PID。

要确定哪些进程正在运行,用户可以使用ps显示阁下的进程;或加上-e选项,显示所有进程;加-f选项,则显示的进程还包括已启动指令的执行中进程;-u login显示某注册用户的进程。在SCO UNIX System V中,如果阁下拥有root指令的作用权,就更可以看到所有进程。

当一个指令需要较长时间完成,可以在指令行後尾加入&元字符,该指令就会在後台执行,但对交互工作方式的指令就不适用了。

菜单驱动shell

菜单驱动(Menu-Driven)shell可再细分为三项:

一、Open Desktop

Open Desktop采用XWindow图形用户介面,用户可用图符(Icon)窗口和菜单操作,如Open Desktop的作业系统就是SCO UNIX System V/386。

二、系统管理员Shell:Sysadmsh或scoadmin

Sysadmsh或scoadmin则是字符介面,用户可不用学习指令行语法和选项,就可以执行大批指令。大多数系统管理任务仅由系统管理处理,系统管理员则有特定的根口令(root passWord)。

三、客户应用程序

某些用户为了存取内部邮件、字处理或报表等应用程序时,方会使用SCO System V,系统管理员可以装上这些程序,令它们在注册时呈现。许多程序提供一个菜单选项,用简单打键选取一个选项,

第三讲vi editor
文:Santa Cruz Operation,Inc

任何用户最常做的事要数创建和编辑文件,包括文档、报告和文字,vi(Visual Editor)是一个有效而相对简单的全荧幕编辑,使用vi,只要记著少量基本指令,就可以开始起步,再学习其他更复杂的指令,而系统管理员则使用vi管理和维护系统。

vi是包含在SCO System V作业系统中的全荧幕编辑,其实,vi不独存在於SCO UNIX内,而是UNIX内相当普及的文件编辑。开启文件无论是开启新档或修改旧文件,都可以使用vi,所需指令为:
$ vi filemane
如果文件是新的,就会在荧幕底部看到一个信息,告诉用户正在创建新文件。如果文件早已存在,vi则会显示文件的首廿四行,用户可再用游标(cursor)移动文件。
This is what vi looks like.

上面是一个经vi开启的模拟文件,一行开始处的波折号(~)表示文件的结尾。指令态与插入态

vi使用了两种状态,一是指令态(Command Mode),另一是插入态(Insert Mode)。当vi处於指令态时,打入的内容会视作指令来解释;另一方面,当vi处於插入态时,就可以打入正文(text)给文件。

大多数vi指令是单字符,由插入态改变为指令态,指〈Esc〉键;而由命令态转为插入态,则可以使用下面的插入令,直接打入,无需再按〈Return〉键。
—指令i在游标处插入正文
—指令I在一行开始处插入正文
—指令a在游标後追加正文
—指令A在行尾追加正文
—指令o在游标下面新开一行
—指令O在游标上面新开一行
要记著一点,在插入态处,不能打入指令,必需先按〈Esc〉键,返回指令态。假若户不知身处何态,也可以按〈Esc〉键,不管处於何态,都会返回指令态。

存档及退出

在修改文件时,如何存档及退出指定文件都非常重要。在vi内,行使存档或退出的指令时,要先按冒号(:),改变为指令态,用户就可以看见在荧幕左下方,出现冒号(:),显示vi已经改为指令态,可以进行存档或退出等工作。下面就是一些这方面常用的指令。
:q!放弃任何改动而退出vi,也就是强行退出
:w存档
:wq存档并退出vi
:x与wq的工作一样
:zz与wq的工作一样删除正文
删除或修改正文都是利用插入态,故此,下面所提及的指令只需在插入态内,直接选入指令即行。
—x删除游标处字符(Character)
—nx删除游标处後n个字符
—nX删除游标处前n个字符
—ndw删除游标处下n个单词(word)
—dd删除整行
—d$或D删除由游标至该行最末
—u恢复前一次所做的删除

修改正文

当使用vi修改正文,加减字符时,就会采用另一组在插入态操作
的指令。
— r char由char代替游标处的字符
—Rtext〈Esc〉由text代替游标处的字符
—cwtext〈Esc〉由text取代游标处的单词
—Ctext〈Esc〉由text取代游标处至该行结尾处
—cc使整行空白,但保留游标位置,让你开始打入
—如删除指令一样,在指令前打入的数,表示执行该指令多少次。

正文模式检索

要检索文件,必需在指令态下进行。所谓「模式」,就是一个特定字符串,其中可含空格符。
—/str〈Return〉向前搜寻str直至文件结尾处
—?str〈Return〉往後搜寻str直至文件开首处
—n同一方向上重复检索
—N相反方向上重复检索
—vi缠绕整个文件,不断检索,直至找到与模式相匹配的下一个
出现。

其他

如果要在 vi执行期间,转到shell执行,使用惊叹号(!)执行系统指令,例如在vi期间,列出当前目录内容,可以打入
:!If
另一方面,用户可以在主目录中创建.exrc环境文件,用set打入选项,每次调用vi时,就会读入.exrc中的指令与设置。下面是.exrc环境文件的实例:
set wrapmarging=8
set showmode
set autoindent
set number

SCO第四讲:系统管理
文:Santa Cruz Operation, Inc.

今次要谈的系统管理员负责管理SCO UNIX的系统,拥有独特的注册名--root,能够读取任何文件,写入和删除任何文件,执行任何实用程序和指令,亦可以执行和终止任何用户程序。系统管理员的工作包括系统控制的任务,例如後援加锁和解锁终端和记帐号、增加、隐退和撤消用户。亦可以给用户一些特权,让他们实现特权系统任务。

基本指令

shell指令的基本数据结构是文件,因此,基本指令和操作包含以下功能:
-显示及管理文件中的指令
-管理目录的指令
-输入输出重新定向和管道,重定向标准I/O,并执行组合指令
$W|grep 'john'〉john,file
-输出重定向符(>)把标准输出重新定向输出到文件
--输入重定向符(<)把标准输入重定向从文件输入
-管道符(|)把标准输出重定向输出到别一指令

寻找文件
find(c)指令可以在层次目录中查找文件,例如:
$find/-name filename -exec rm {};
-name filename指定filename
-exec rm表示在所找的文件中执行rm移动这个指令
另外,用户亦可以加入,-print表达式,显示找到文件的全路径名。除此之外,find(c)也可以用来找出特定用户或用户组所持有的文件,譬如:
$find/-user bin -print
$find/-group mmdf -print
又或者,用find(c)重新定向过滤程序,输出错误信息,例如:
$find/-name motd -print 2〉/dev/null

SCO shell

使用SCO shell,可以让用户从单个菜单中选出应用程序,管理文件和目录,运行系统实用程序,要调用SCO shell,可键入:
$scosh
可以利用空格条键〈Space Bar〉或箭头键〈Pointer〉移动光标,加亮所选的菜单项
-按〈Esc〉 回到上一级,或放弃当前操作
-按〈F3〉 显示所在字段中可用选项表
-按〈Ctrl〉v 在字段选项表中选出每一项
-按〈F1〉 显示求助信息
-按Quit或打入q 退出SCO shell

系统管理shell

需要调用系统管理员shell,应该打入:$sysadmsh或$scoadmin。虽然每个用户都可以调用sysadmsh,但是,只有实权的用户才可执行有关特权管理任务。基本上,使用方法与SCO shell差不了多少,只是多了几个功能键(Function Key),例如〈F5〉搜索,〈F6〉改变目绿和〈F7〉执行格式。而且,scoadmin更可以在XWindow的图形环境下执行,用户在图符(lcon)上找到不同的管理任务。

多重注册萤幕

控制台上,可以允许用户最多具有十二个不同注册期的萤幕。多重萤幕令系统管理员可以同时执行几个任务。系统启动时,控制台上的多重萤幕就会自动活动起来。同时按〈Alt〉键与〈F1〉至〈F12〉功能键,实现萤幕之间转换。至於,在终端上,启动多重注册萤幕,则可用mscreen实用程序,为正确工作,mscreen要求为tty。例如启动两个萤,应该打入
$mscreen-n2
然後按〈Shift〉键与〈F1〉或〈F2〉键,在两个萤幕之间转换,当注销时,确保所有萤幕注销。

SCO第五讲:电子邮件
文:Santa Cruz Operation,Inc.

在SCO System V下,每个用户都有一个系统维护的私人邮箱,用户能够与系统任何用户或用户组之间收发电子邮件,所收发的信息可以保留在邮箱内或作独立文件处理。

发送邮件

打入mail指令,後跟收件人注册名,就可发送邮件。假如发送邮件给多个收件人,名字用空格符〈space〉分隔,而不是逗号。收件人可以是一个单独注册名或一个别名,别名代表用户组,例如:
$mail peter amy
接著,萤幕上会出现subject:的提示符,用户即可打入简短的信息说明,完成後,按〈Return〉键,然後,就可以编写邮件内容。

需要校正错误,就该使用空格符或左箭头键,用不当的空格符或不合适的箭头键,即使在萤幕上看起来对,但是收件人可能只收到不可读和篡改了的信息。请记著,mail内的内容编写,不是「所见即所得」(What You See is What You Get)。假若需要取消整个信息,按〈del〉键两次。写完邮件内容,按〈Return〉键,取得新行後,按〈Ctrl〉d,发送邮件。d就是done(完成)的缩写。

阅读邮件

每次注册进入系统时,系统都会通知阁下,在阁下的邮箱中可有邮件,需要翻阅邮件,打入
$mail
若有邮件,每每邮件都会显示出相应的信息标题,包括信息数,送件人及发送日期。下面是邮件范例:
$mail
SCO System V mail(Versin 3.2)Type? for Help
"/usr/spool/mail/joesco":2 messages/new/unread
u2 mary Sun Aug 05 23:48 47/2109 level 2500
n1 paul Fri Aug 03 08:01 23/6332 Tardy reports!

要阅读来件,可以使用箭头键移动选取,按〈Return〉键阅读,或在提示处,直接按入来件编号。若已读到邮箱中最後一批信息,mail在萤幕上会显示"Can't go beyond last message" 。

处理mail

当打入一个无效指令时,mail会回答一个问号,或"What" 的信息,显示指令不清。假若用户想显示mail指令表,可以打入?;或打入h,显示邮牛标题表;打入l,则会发送信息至打印机。另有一些常用的指令,协助处理mail:

一、保留邮件
"s filename"按普通正文文件保存整个信息至filename内,连同
邮件的标题信息,一并送入文件内。
"w filename"撇除邮件标题後,保存信息到filename内。

二、删除邮件
"d x" 删除信息x这个信息号数
"u x"恢复被删除的x信息

三、覆件
"r"发信回答给送件人
"R"发送回答给To:和Cc:表上的所有用户

四、转发邮件
"f login"转发信息,予其它用户,并分送来件正文(Original Message);login乃用作的注名
"F login"只转发信息,不分送来件正文

五、退出邮件
"q"退出mail程序,并更新所有改变
"x"退出mail程序,但不作任何改动

其它处理邮件的方法
除了以上所提到的基本指令处理邮件外,SCO UNIX尚有其他较复杂的指令可整理邮件。在mail内,所有指令前都要加上波折号~v,调用vi编辑,一旦完成编辑信息,通过vi的指令,例如保存和退出指令:wq,就可返回mail程序;按〈Ctrl〉d,就可以直接发送邮件信息。

其它mail的增强指令如下
-~m messate-no.把邮箱中指定信息(message-no.)放到所编写的信息中
-~r filename读入指定文件(filename),送到当前信息中
-~p察看信息中的当前内容
-~?求助
为了方便mail通讯,系统管理员能够定义不同的特定单用户或组别名,通过这些单个组、别名或名字,就可以把邮件信息发送给全组用户。发送给别名成员,可键入如下指令:
$mail aliasname
如果要限制组员和其它用户的私人邮件的存取权限,可以使用chmod指令,例子如下:
$chmod 600mbox
在普通电子邮件提示处打入set,可以控制选项,改变读和发送邮件,这些选项可以由系统管理员为用户自动建立,也可以自己修改这些设置,例如:
set page=10

mailrc环境文件

mail的环境文件叫做mailrc,负责保存所要文件的永久记录。与其它环境文件一样,mailrc必需放在主目录中,它是正文文件,包涵有效的mail指令,mailrc通常包括set指令和alias 定义。不过,运行mail程序,倒不一定要有.mailrc文件。如要查看.mailrc,可以打入more .mailrc,下面是.mailrc的一个实例:
cd
-在mail内,改变主目录nset autombox删除自动把所读件转送到私人邮箱
set page=20
-若信息大於二十行,用more显示
alias crew john wanda frank
-发送给crew的邮件转发给表中列出的用户
set EDITOR=/us/lib/word
-把word作为mail默认编辑
unset chron
-显示当前最新邮件
上述的.mailrc例的□面,当打入$mail crew,就能够把邮件发送给john,wanda和frank。监视mbox是默认设置,如果不想设置的话,应该使用unset autombox,而当mbox的内容很快增长时,通常会删去旧信息。如果要读mbox中的邮件,可以使用如下指令:$mail -f mbox

第六讲:後援复制 Santa Cruz Operation,Inc.

电脑系统内,数据可是相当重要的一环。贮存数据的方法,可以经软盘、硬盘或盒式带(Cartridge),盒式带通常为大量数据提供後援(Backup)。

复制目录

在安装的文件系统中,把一个目录内容复制到另一个目录中,用copy 指令:
$copy source> destination>
#copy -mor source> destination>

转换并复制文件

使用 dd(c)指令,可以把一个文件转换成另一个文件,也可以选择文件的一部份传输,在传输的数据中,也可以交换字节顺序。
$dd if=/dev/fd0 of=/temp/save skip=5 count=86 bs=5k
上面的指令″/dev/fd0″ 是指电脑上的软盘,″skip=n″代表在复制到输出文件之前,跳过输入文件上的几个记录。″bs=n″则表示设置输入输出字节块长度,用 k 表示 1024 字节。″count=n″只复制输入记录的指定数。同时,也可以利用 dd 指令检查归档(archive)情况,指令如下:
$dd if=dev/fd0 of=/dev/null bs=1k
1200+0 record read in
1200+0 record read out

归档文件:tar(c)

tar 是对非特权用户最易用和最可靠的实用程序(utility),从归档介质上保留和恢复文件,亦能从多文件归档中抽取单个文件。tar 归档使用文件和目录的相对或绝对路径名。打入 tar,即会显示所有变量选项;”cv”是创建归档;”cv#”用於来自 /etc/default/tar 的设备号 #;”rv”追加已有归档;”uv”更新在已有归档上的文件;”tv”显示归档内容表;”xv”从归档中抽取文件;”f”从指定文件中读入或写出;”L”使 tar跟随符号连接继续追查下去,默认情况下则会忽略符号连接。譬如要归档指定文件,而复盖盘上的已有数据,指令如下:
$cd pub
$tar cv6 ascii greek
volume end at 1199k, block factor=5k
seek=0k a ascii 3k
seek=3k a greek 1k

要列出 tar 归纳的内容:
$tar tv6
rw-r--r-- 2/22114 Jan 2 13:41 1996 ascii
rw-r--r-- 2/2475 Jan 2 13:41 1996 greek

创建 tar 归档,使用相对路径名,否则,恢复另一系统就会盖写其他系统的文件。
#tar cv6 /etc/motd
#cd /tmp
#tar xv6
x /etc/motd, 943 bytes,2k

归纳文件

当需要後援指定设备、後援空设备与使用匹配符的时候,就不能使用操作容易的 tar,而需要转用比较复杂的 cpio,用以归纳文件。譬如,需要选取文件建立归档,指令如下:
$find /u/bill -print| cpio -oB -O /dev/fd0
20 blocks

又例如,需要抽取 cpio 归档文件名时:
$cpio -idmuBv -I /dev/fd0
.profile
ascii
eqnchar
greek
20 blocks

cpio 主要选项为:
-v 显示工作
-i 读归档
-o 写入归档
-t 内容表
-d 创建目录
-m 保留原修改日期
-U 无条复制
-B 分割因子置为 5k
-Cn 分割因子置为 n
-Kn 介质长度置为 n

後援复制

後援就是要平衡运行一般後援的代价与损失数据的代价,确定要归档的数据类,并确定要用何级实现,以及确定所要求磁带的盘数和带的容量,多久存储一次後援等等问题。一般来说,後援复制可在 sysadminsh 或 scoadmin 执行。

所谓增量後援(Incremental Backup Levels),就是只需要以上次归档後发生改变的那部分数据後援。当实现调度後援时,在/usr/lib/sysadmin/last/中,将文件记录下来,可以透过使用後援级来实现。後援级的 0 级就是後援文件系统上全部文件;1 级则後援以上次0 级後援以来改变的文件:2 级,後援以上次 0 级或 1 级後援以来改变的文件;3 级,後援以上级 0级、1 级或 2 级後援以後改变文件。

经定义後援工具後,後援调度(Backup Schedule)就可以更方便地执行,配置档案则会被安置在 /usr/lib/sysadmin/schedule 中。假若在紧急关头或特殊情况下,用户亦可以使用非调度放援,进行紧急後援。

第七讲:用户管理

系统管理员的用户理工作包括:为系统中所有用户建立帐号;以及当改变用户环境、口令与组别时,进行维护。

分析用户需求

每当需要增加用户时,系统管理员都会先分析用户需求,对每个帐号成分,通过使用默认选项来满足用户需求。要从sysadmsh中查看默认记帐选项时,可以使用以下选择。
Accounts□□〉Defaults
或scoadmin□□〉Account Manager
当建立帐号时,评估用户需求,查看是否需要修改记帐成分。若用户仅用一个应用程序,编辑用户的.profile文件,在用户注册时,每次均执行此文件。

默认值建立用户帐号(Default Parameter)

首先,打入用户注册名,小写与三至八个字符;填写注解栏时,应包含标识信息,如用户全名、单位、电话号码等。另外,指出是否愿意用系统默认方式建立帐号,抑或对帐号修改默认值,若使用默认方法,则选No。确定你要增加的用户後,给出创建後的文件和目录,再执行/tcb/lib/useshell指令,建立用户帐号,不过,在UNIX系统指令中,要通过sysadmsh或scoadmin才能运行此指令。

若决定改变用户记帐默认方式,则在建立帐号时选Yes,那麽就需要填写每栏,在合适位置上,按〈F3〉或〈Esc〉,下面是关於非默认的设定。

指定用户组

每个用户必须至少属於一个组。默认情况下,用户注册组是group。在一个组内还包括读、写和执行文件的权限,附加用户权限给那个组,作为指定组员的存取权限集。如要改变成组别,可用newgrp(c)指令。

增加用户时,可以创建一个新组,或附加到一个已存在的组内。有关组别的信息则存放在/etc/group中。凡增加用户创建新组时,组名会自动递加到/etc/group文件内。组ID能够由系统产生或人工指定,但必须在100到60,000范围内,100号以下的ID留给子系统和其他默认组用。当管理一个网络系统时,常需要指定GID(Group ID,组ID),避免混同各网络结点,所以,最好先选用默认组ID。

指定逻辑shell

要知道用户打算选用哪个shell工作,SCO系统可选用以下几种不同的shell工作:
csh: C shell。
ksh:Korn shell,组合了Bourne shell和C shell的特点以及指令行编辑。
rksh:加限制的Korn shell。
rsh:加限制的Bourne shell。
scosh:SCO shell(图型化桌面)。
sh:Bourne shell。
uucp:UNIX到UNIX拷贝功能,它本身不是shell,而是成功注册後运行的程序。

默认shell在/etc/default/authsh中指定,从/usr/lib/mkuser目录结构内文件中,取到可采用的注册shell表。

指定主目录

默认主目录在/etc/default/authsh中定义,从/usr/lib/mkuser/homepaths文件中,取到可采用主目录的选择。以及为用户创建一个新的主目录。指定用户ID(UID)必须是在200到60000范围内,指定在/etc/default/authsh文件中,UID必须是独一无二的,防止在网络上有相同的UID,而且,UID一旦设置,永不改变。

指定用户类

另外,还需要为用户设立他们的类别,种类如下:
-individual:个人记帐类。
-pseudo-usr:为各子系统任务设置帐号,注册时个人不应给pseudo□usr记帐类,Operator、security Officer和administrator记帐类是pseudo□usr的其他名字。
-不能设置superuser和retired记帐类。
如果要能使用su(C)(所变用户身分命令),该用户必需被指定为用户类individual,才能取用此域,为了用su另外记帐,用户必须有su授权,知道帐号口令。low、traditional和improved为安全默认值,被赋予su授权。在high 安全默认值下,则不赋予su授权。

赋予用户被始口令

当创建新用户帐号时,就需要为用户设立或不选择不设立初始口令。
-New:现在赋予口令,用户在注册时必需打入这个口令。
-Later:现在不赋予口令,在赋予口令前,用户不能注册。
-Blank:赋予空口令,用户能注册,但在注册时,强迫用户给出一个口令。
-Remove:不赋予口令,用户能不用口令注册。
-Force Password Change:决定在用户首次注册时是否要用户强迫改变口令。

在high安全性下,必须为每个用户产生一个口令。若赋予初始口令,就应该告诉用户他的口令,希望他在首次注册时,立即修改这个口令,修改口令时,不要选用别人能够轻易猜出来的口令,如姓名或生日日期等,最好在口令中,加有一个非字符。

系统安全保护:修改用户默认帐号

为了防止被人滥用别人的用户帐号注册进入系统内,保障系统的完整性,系统管理员需要修改一些用户的默认帐号,以及检查用户的注册情况。首先,管理员会设定不成功注册最大次数,计算使用不正确口令注册的次数;当不成功注册超过最大次数,就设定加锁用户帐号和终端。如果在完成注册时间之内,仍未能设置口令,也可加锁用户的系统,甚至根户用也一样。在成功注册後,希望享受优先CPU调度,则可以用nice(C)值,给用户she ll及由它启动的进程,以调整优先级。设定值会存放在/etc/system/default中。

Unix自学篇--第八讲:监视进程管理
文:Santa Gruz Operation, Inc.

程序是一个可执行文件(Process)是正在运行程序一个实例。SCO UNIX System V支持许多进程同时运行,各种系统通过调用可用进程去创建新进程,与其他进程通讯,以及终止其他进程。

进程族系

新进程创建时,内核会分配一个进程标识号(PID)给它,并对进程表中添加说明讯息。由一个进程创建另一新进程,老进程为父进程,新进程为子进程。用户Shell执行的大多数指令又是它的子进程,子进程则运行指令。而父进程允许有多个子进程来实现任务等,待子进程完成。一个父进程可以有多个子进程,但是,一个子进程只有一个父进程。

前台及後台进程

在Shell提示处打入指令後,创建一子进程运行命令,Shell等待命令退出,然回到对用户提出提示符,这道指令与Shell同步运行,即在前台运行。在Shell提示 处打入的指令,若随一个&,Shell创建的子进程运行此指令,但不等待指令退出,而直接返回到对用户提出提示。这道指令与Shell同步运行,即在台运行。
$sleep 10 &

精灵进程

精灵进程是一个进程,它与终端和用户都无联系,也有人喜欢称他为管家婆。精灵完成一些周期性的事,平时它睡眠。用ps (C)指令可看到精灵,它在tty区域中带有问号(?)。
-Sched:PID 0,它完成进程的程序在存储局和盘交换局之间交换工作。
-init:PID 1,系统自动建的第一用户进程,它负责初始化引导和注册过程,也就是所有非系统进程的祖先。它会在终端口上,启动getty (M)进程。
-vhand:PID 2,页面精灵,它频繁地把储页面内容送往交换区。
-bdfush:PID 3,定期刷新高速缓到盘(默认情况,每13秒刷新一次)
-logger:归档系统出错讯息。
-cron:在调度时运行作业。
-Ipsched:脱机打印精灵。

孤儿进程

孤儿进程在父进程终止仍旧活动,由init (M)认它为乾儿子。僵□进程则是进程已终止,但进程还未撤消,因为父进程并未「等待」它,进程表仍保留著这□体,进程表的□体是僵□进程所消耗的资源。随著新进程的创建,出现大量□体,但总数是有限制的,因此影响新进程的产生。而孩儿进程与僵□进程不同,并不会影响系统效率。通常,在父进程死去时,才会移去僵□进程。若他们还未移去,应由init (M)继承并移去它。

监视进程

监视进程监注册户的数量,用以记系统的性能;亦会监视用户进程,包括挂起进程;以及装载均值等系统性能问题。要显示进程信息,可以利ps (C)指令报告,进程状态。在默认情况下,仅会报告与当前终端有联系的有关讯息。若用户没有root权限,ps仅限以说明运行进程,报告用户的进程讯息。若用户有root权限,则会报告在所有终端上所有用户的进程讯息。
$ps-u joana
--u 〈username〉选项显示指定用户的讯息。
--t 〈ttynamt〉选项显示指定终端有关的进程讯息。
而ps -elf指令则提供了需有F、S、C、PRI、NI、TIME字段的使用讯息。
-F是标记,指示进程位置,20表示在内存,0表示交换在盘上,31是系统进程。
-S是状态讯息,指示进程状态,睡眠还是正在运行。
-C是进程占有CPU的百分率
-TIME是花费CPU的总时间。
-PRI是进程当前优先数
-NI是进程的nice (ADM)菜单

如何创建进程

当进程分岔一个子进程,自己就会进入睡眠状态。开始时,子进程运行父进程的同一程序,由内核分配一个新的PID。当子进程再去执行新的程序,保持新分配的PDI,新程序就会替代子进程的原先程序。当子进程完成後,内核会把它从系统中移去,再唤醒父进程,子进程就会退出。

监视系统装载

uptime(C)指令显示装载均值(一分钟、五分钟和十五分钟),即在预定时间上,排队运行进程的平均数:$uptime

w(C)指令产生如uptime(C)一样的装载均值讯息,并显示谁在系统上做甚麽,若用户拥有root权限,W报告所有用户的有关讯 息。若没有 ,仅显示与用户进程有关竹的讯息。

PCPU(Process CPU,进程CPU时间 )显示某道特定指令已运行多久了。对控制不了的进程,这种检查是很有用的。JCPU(Joint CPU,连合CPI时间),显示一个终端所涉的所有进程的总时间。

sar (ADM)指令是一个系统活动报告程序,显示系统资源累积利用率。为指示系统瓶颈口(Bottleneck),sar 是非常好的实用程序,指令语法如下:$sar〔-option〕 〔sample-interval-samples〕例如:$sar-u120
-u选项显示CPU利用情况。如果%idle一致地低,使用效能是上升,不过,运行的进程偷不到未用的CPU周期。又例如使用-q选项显示进程吞吐量。假若%swpocc大於20,就发生交换(Swapping),可以使用大内存能减少交换 /请负活动。

UNIX自学篇:第九讲:管理进程
文:Santa Cruz Operation, Inc.

用低优先级运行进程

nice(C)指令用於以较低的调度优先级执行命令,每个进程都有一个 nice 值,用於计算它的优先级。nice 值在 0 到 39 范围内,高值获得低优先级,不给实参的默认情况是 nice值 20。超级用户可指定负值,以提高优先级。

在注销进程後进程继续执行

後台启动的进程,默认情况下,当注销後就不再存在,但是,可以使用 nohup(c)指令,让进程不受挂起和注销影响,得以继续运行,例如:
$ nohup sort bigfile>sortfile &
4567
$ exit
当用户注销时,用户未用输出改向,输出将送到当前目录下的nohup.out 文件中,如果当前目录不可写,则输出改向到$HOME/nohup.out。

重新启动安全级精灵进程

根据 C2 安全级要求,某些精灵进程用 LUID (Login User IdentifIEr)标记运行,如此只能用 sd(ADM)实用程序重新启动他们。如果 LUID 限制有效的话(高安全级),只能用 sd(ADM),例如 cron(C)这样的精灵,在高安全级下要 sd 重新启动它。

进程终止实用程序

需要终止实用程序时,可以通过发信息给进程,使它自杀,通常会用在终止一些已挂起的或是运行的进程。语法如下:
$ kill [-signal]
例如
$ kill 4411
4411:terminated

这样,只能终止运行优先级大於 25 的进程,小於 25 优先级的进程只能在重新引导系统中撤注它。

调度单个作业执行

at(C)指令使得在某指定时间执行一组命令一次,主要用於在系统活动较少的情况下,在预定时限(例如在半夜後或每日固定时间)内运行指令。要重新定向,可以使用标准输入,或可文件输入;在打入完整的at 指令後,就会显示出将要运行的作业号与时间。语法如下:
$ at time [date] [increment] < [filename]
任何用户都能运行一个 at 作业,但必须给予授权。

指定单个作业调度时间

时间格式为 hr:min 或 min,hr ,用 a.m 或 p.m 指定上午或下午,有效时间包括 no on,midnight 和 now,指定日期则用「月日〔年〕」格式,例如 Feb14。一星期那一天也可用monday、mon、today 或 tomorrow 代替。at 指令从标准输入中,读入打算在以後某一时刻所执行的命令:
$ at 14:00 Jan
sort /u/user1/file
/u/user1/sort
ctrl>d
job 61202778.a at Thu Jan 4 14:00:00 1996

记著使用时,要用全路径名指定文件。指令输出以电子邮件发送给用户,也可输出改向到文件或终端。

列出单个调度作业

使用命令
$ at -1
job 612027780.a at Wed Jan 24 08:43:00 1996
job 612027900.a at Wed Jan 24 08:43:00 1996

若指定 jod_id,一般用户会得到一张自己所有作业的表,根用户则能取得全部作业的表。

撤消单个调度作业

使用以下指令撤消作业:
$ at -r
可以使用匹配符撤销多个作业。at 的作业存放在usr/spool/cron/atjobs

在一般数据库上调度作业

用 crontab (C)指令,从指定文件或标准输入拷贝或编辑成用户的 crontab 文件,该文规定了在指定日期和时间调度运行一些指令。

crontab 指令提供了对 cron 系统精灵要执行的作业,清理 /tmp ,撤销在一般数据上日记文件或不想要的文件,以及检查空间,邮寄警告予用户等。/usr/lib/cron/cron.allow 文件列出了能使用 cron 的用户,/usr/lib/cron/cron.deny 文件列出了拒绝存取 cron 的用户,仅当 cron.allow 文件不存在时,cron.deny 文件才起作用。

指定作业及其调度时间

作业可能是单个指令或包含多道指令的 shell 脚本,指令输出邮寄给用户,也可输出改向到文件或终端。在文件中打入作业及运行时间,以运行此作业。文件可取任何名字,但是,不允许包括首尾部和空白行,而且,最好取 .cronfile ,这种取名反映其功能,易记易理解。.cronfile 文件可用正文编辑或 vi 创建。每个用户仅提供一个 .cronfile文件,每当执行 crontab 指令时,新文件会盖写原先文件。编辑已存在的 .cronfile 文件,增加或修改一个作业,然後用 crontab 重新提交 .cronfile 。而每个用户的登记项会存放在/usr/spool/crontabs/。

列出或修改 cron 作业

要列出当前提供的 cron 作业,可以打入:$ crontab -1
修改 cron 项,使用指令:$ crontab -1 >.cronfile
$ vi .cronfile
$ crontab .cronfile

如要撤销 cron 作业,则打入:$ crontab -r
但有一样,请留意,根用户没有 .cronfile 文件。

Unix自学篇第十讲:打印管理
Santa Cruz Operation, Inc.

打印假脱机(Spooler)程序在系统引导时自动启动,负责打印服务的安装、配置和管理,在指定打印机上,将用户打印请求进行排队,能在不丢失排队打印请求下暂停打印。

打印机队列

打印机会被分组,每组共同存取一个队列(class)。而打印请求可以送入一个 class ,也可送往指定打印机上。在一个 class 中,可随时移去或增加打印机,用 sysadmsh 菜单或scoadmin 的 Print Manager,可以增加打印机往已有的 class 中,又或增加一个新 class。

打印机过滤程序

使用打印机过滤程序,可以转换用户文件或数据流,在给定打印机上,合适地打印出来;处理两边打印,草图或高质量文字打印等;如发现打印失败,会通知打印服务,然後告诉用户使用上出现问题。打印机过滤程序又称为打印机定义的接口脚本,存放在/usr/spool/lp/bin。

安装和配置打印机

要把打印机接到并行埠(Parallel Port)上,SCO UNIX System V 支持两个物理并行设备(/dev/lp[0-2])。当用主并行埠时,用 LP0 或 LP1,中断向量为 7。第二个并行埠,/dev/lp2,中断向量同为 7。

要把打印机接在串行埠(Serial Port)上,最好接上智能卡工作,打印机能用任意有效串行埠名联系。若不要求硬件流控制,可以使用非调制解调器控制埠名。另一方面,可以从终端辅助埠上做局部打印,指令 lprint (C)使用户从附在终端上的打印机上打印。

安装打印机

要安装打印机,先找一个未用的串行线路接上打印机,连好导线,打开打印机开关,检查硬件连接。然後,调用 sysadmsh 菜单或 Print Manager 上,加入打印机,用合适的信息填好格式,指定打印机的 Class,若所指定的不存在,就建立一新 Class,包含接口脚本路径名。许多打印机都能用standard 接口脚本。

打印机管理

修改打印机配置时,可以增加或撤消目的地;改变打印机接口脚本、设备等;以及改变默认打印机目的地。管理打印机调度时,有几种选项需要注意:
-Stop:为实现某种打印机维护,必需将假脱打印机转换成 off。
-Begin:假脱机转换成 on。
-Accept :允许把打印请求送往打印机或 class 中。
-Reject:阻止请求假脱机打印。
-Enable:允许从打印机或 class 上打印。
-Disable:阻止打印,但允许假脱机出现。

每个打印请求都会赋予一个优先数,决定何时打印,优先数据取值范围为 0(最高)到 39 (最低)。默认优先数值同样是 20。所有打印请求或单个打印请求都能移到不同的队列或打印机上,若打印机的队列阻塞或打印机不能用,就要移去打印请求;打印机要维护,也要移去打印请求。如果已移去了所有请求,这个打印机就不再接受新请求,直到打印机启用为止。

要清理打印机请求,先要指出打印机或请求 ID ,若指定了打印机,则当前正在打印的作业也被清除,但是,不能使用通配符去匹配清理打印请求。

第十一讲:TCP/IP 管理
文:Santa Cruz Operation,Inc.

IP(Internet Protocol)地址是 TCP/IP 网上为主机之间数据选择路径(交换)的基础,但是,用户通常不甚喜欢使用由数字组成的 IP 地址,而比较喜欢使用多由英文字母组成的主机名字--URL(Uniform Resource Location)。不过,主机名字必需映像到 IP 地址,而方法就是通过 /etc/hosts文件完成。

配置 /etc/hosts

/etc/hosts 的格式是:地址--名字--别名。
例如:
127.0.0.1 localhost localhost
132.147.18.1 vision vision.sco.com

IP 地址必需是一行上的第一项,在它前面不应有任何字符,例如空格符或制表符;名字是简单的主机名字;别名则在很多情况下都不需要,但是,全限主机名字、简单主机名字和辖区名字都归入别名之列。

检测 TCP/IP 配置

TCP/IP 协议的软件部份包括 TCP/IP 协议层架的顶三级,即应用级(Application Protocol)、传送级(Transport Protocol)和网际网级(Internet Protocol)。特定的主机名字”Localhost”是特殊网络”loopback”上的本地主机的别名。要检测 TCP/IP 协议层架的软件部份,使用 ping 指令:
#ping localhost
如果 Ping localhost 失败,则使用 netstat -i[n],检查网络接口的状况,显示网络接口上分组传输的统计讯息,指令如下:
#netstat -i[n]
n 选项强行显示编号,而不是名字。netstat 查看自环驱动器 lo0 ,如果 lo0 失败,则在 /etc/tcp 中”ifconfig lo0”行指示坏了或有错误。

检测 TCP/IP 硬件

审核引导过程中,会对所职别的网络接口产生的配置报告,而TCP/IP 协议的硬件部分包括 TCP/IP 协议层架的底两级,即网络接口级和物理/硬件级。对网上另一主机的任何通讯都是在「物理」网络接口上传输,并不会引起数据传输到「自环」网络上。使用 ping 指令检测 TCP/IP 协议层架的硬件部份。
#ping hostname

#ping IP-address

如果 ping 指令失败,则改用 netstat -i[n] 审核网络接口。了解 netstat -i 的输出
如果远地主机上使用 ping 之後,Opkts 和 Ipkts 仍然是零,那麽,网络接口大概使用了不同的中断(Interrupt),而不是它的设备驱动程序。如果 Ipkts 不是零,而 Opkts 等於Oerrs,那麽,网卡的 I/O 地址可能不正确。如果 Ipkts 是零,而 Opkts 等於 Oerrs ,那麽,可能是网络电缆连接的不合格。通过用 Opkts 除 Cloois ,再用 100 乘所得的结果,计算冲突的百份比。如果冲突的百份比少於百份之五到十,那麽,所有网络接口是有效运行。如果 ping 失败,并查出网络接口有问题,那麽,就该验证网络介质操作。

调整 TCP/IP 的核心参数

没有足够的流资源(Stream Parameter),网络程序是不能进行通讯;流资源不充份的话,经常会导致较慢的吞吐率。

要核查流资源,使用 netstat -m ;也可以使用 crash 指令考察流资源,在出现 crash 发出的提示符'>”时,打入”strstat”。如果在 FAIL 列的下面有不等於零的项目,那麽,同一行中的ITEM 的项目可能需要调整。如果 FAIL 列下的数目大於或等於TOTAL 列中数目的百份之十,该资源每次应增加一或二,但不能将该数目加倍。

由於流资源使用 RAM,当增加流资源时,应加倍小心。用户亦可以使用 configure 或sysadmsh 增加特定的流资源,重新连接核心或重新引导。

限制通过 ftp 访问系统的权限

对於不想令其使用 ftp 跨网访问系统的人,可以通过建立/etc/ftpusers 文件和设立系统帐户名字的方法,阻止他获得利用 ftp 访问系统的权限。

如果 /etc/ftpusers 不存在的话,先要建立。在单独的行上,加上系统帐户的名字,表明不能从网中其它系统使用 ftp 访问该系统,在安全系统中,不允许 ftp 访问用户权和 uucp,列出任何其限制使用 ftp 的用户名字。

第十二讲:使用 TCP/IP
文:Santa Cruz Operation,Inc.

向远地注册的能力非常有用,它让我们不用到远地系统所在处,就能运行远地主机上的程序,执行远地系统管理,有两道指令可用於远地主机注册,就是 rlogin 和 telnet。

使用 rlogin 向远地主机注册

rlogin 允许向具有 UNIX 作业系统和 TCP/IP 协议的任何系统注册,而 rlogin 只能注册到 UNIX 作业系统环境,指令如下:
$rlogin remot-host-name
要避免 rlogin 因没有提供远地主机上的同名帐户,可以使用下述指令:
$rolgin remote-host-name -1 remote-user-name
-1 选项用於指出远地用户帐户。

要中止 rlogin ,则要打入 ~.,并按 Enter/Return>键;亦可使用logout 或 exit 指令。

使用 telnet 向远地主机注册

不管其作业系统类型,只要能支援 TCP/IP 协议,都可以使用telnet 指令,允许注册。
$telnet hostname

$telnet ip-address

使用 ftp 复制或传送文件

ftp(File Transfer Protocol)允许用户对远地主机复制文件,用户毋须考虑作业系统类型,即能向或从任何具有 TCP/IP 的系统复制文件。ftp指令允许复制目录中的一个文件或所有文件,但不能复制多层次目录。使用 ftp时,必需在远地主机上设有帐户。当 ftp 注册到远地系统时,并未得到 shell ,而是通过 ftp 指令解释程序同远地主机进行通讯。
$ftp remote-host-name

$ftp remote-host-ip-address
一旦注册成功,就会出现 ftp 指令解释程序的提示。
ftp>
用户可以在此,使用打开指令连接主机:ftp>open remote-host-name
复制某一文件回自己的系统中,则用:ftp>get filename
如果只想传送某一文件往远地主机,则用:ftp>put filename
需要复制远地主机的全部文件进入自己的系统内,可以使用如下指令:ftp>mget *
相反,如果想传送自己的文件往远地主机,则使用如下指令:ftp>mput *

rcmd

rcmd 允许用户不必向远地主机注册,而直接运行该主机上的指令,实际上,也要进行注册,只不过用户毋须作其它操作。当使用 rcmd在远地主机上运行任何指令时,其输出的默认设备就会被更改为终端。
$rcmd remote-host-name man sh
请求特殊终端处理的指令,将不含设备自身的功能,因为对远地指令没有定义终端的类型,要求在远地主机上配置受托访问。要列表输出远地主机上磁盘的利用情况,则使用下述指令:
$rcmd remote-host-name df

要列表输出远地主机上的目录,使用如下指令:
$rcmd remote-host-name ls /usr/games

要把远地主机上的文件备份到远地主机上的袖珍磁带内时,指令如下:
#rcmd remote-host-name tar cvf /dev/rct0/usr

#rcmd remote-host-name "find /usr -depth -print|cpio -oc> /dev/rct0

要把本地系统上的文件备份到远地主机上的袖珍磁带内时,使用下述指令:
#tar cvf -/usr|rcmd remote-host-name dd of=/dev/rct0

#find /usr -depth -print|cpio -oc|rcmd remote-host-name dd of=/dev/rct0

另一方面,如果要把远地主机上的文件备份到本地系统上的袖珍磁带内时,可以使用如下指令:
#rcmd remote-host-name "tar cvf -/usr" > /dev/rct0

#rcmd remote-host-name "find /usr -depth -print|cpio -oc" > /dev/rct0?

标签: