请输入您要查询的百科知识:

 

词条 Unix
释义

§ 概述

UNIX,是一个强大的多用户、多任Unix务操作系统,支持多种处理器架构,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发。经过长期的发展和完善,目前已成长为一种主流的操作系统技术和基于这种技术的产品大家族。由于UNIX具有技术成熟、可靠性高、网络和数据库功能强、伸缩性突出和开放性好等特色,可满足各行各业的实际需要,特别能满足企业重要业务的需要,已经成为主要的工作站平台和重要的企业操作平台。曾经是服务器操作系统的首选,占据最大市场份额,但最近在跟WINDOWSSERVER以及Linux的竞争中有所失利。

§ 详细介绍

Ken和Dennis最早是在贝尔实验室开发UNIX的,此後的10年,UNIX在学术机构和大型企业中得到了广泛的应用,当时的UNIX拥有者AT&T公司以低廉甚至免费的许可将UNIX源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的UNIX“变种 (Variations)”,这些变种反过来也促进了UNIX的发展,其中最着名的变种之一是由加州大学Berkeley分校开发的BSD产品。

後来AT&T意识到了UNIX的商业价值,不再将UNIX源码授权给学术机构,并对之前的UNIX及其变种声明了版权权利。变种 BSD Unix在Unix的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用Unix的基础。BSD使用主版本加次版本的方法标识,如 4.2BSD,4.3BSD,在原始版本的基础上还有派生版本,这些版本通常Unix有自己的名字,如4.3BSD-Net/1,4.3BSD-Net/2等。其不断增大的影响力终于引起了AT&T的关注,于是开始了一场旷日持久的版权官司,这场官司一直打到 AT&T将自己的Unix系统实验室卖掉,新接手的Novell公司采取了一种比较开明的做法,允许伯克利自由发布自己的BSD,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。尽管後来,非商业版的UNIX系统又经过了很多演变,但其最终,都是建立在BSD版本上(Linux除外)。所以从这个角度上,4.4 BSD又是所有自由版(Free版)Unix的基础,它们和Unix V及Linux共同构成Unix操作系统这片璀璨的星空。

BSD在发展中也逐渐衍生出3个主要的分支:FreeBSD,OpenBSD和NetBSD。

此後的几十年中,UNIX仍在不断变化,其版权所有者不断变更,授权者的数量也在增加。UNIX的版权曾经为AT&T所有,之後Novell拥有了UNIX,再之後Novell又将版权出售给了SCO(这一事实双方尚存在争议)。有很多大公司在取得了UNIX的授权之後,开发了自己的UNIX产品,比如IBM的AIX,HP的HPUX,SUN的Solaris和SGI的IRIX。

UNIX因为其安全可靠,高效强大的特点在服务器领域得到了广泛的应用。直到GNU/Linux流行开始前,UNIX也是科学计算,大型机,超级计算机等所用操作系统的主流。

§ 发展历史

初创期

UNIX的诞生和Multics(Multiplexed Information and Computing System)是有一定渊源的。MultiUnixcs是由麻省理工学院,AT&T贝尔实验室和通用电气合作进行的操作系统项目,被设计运行在GE-645大型主机上,但是由于整个目标过于庞大,糅合了太多的特性,Multics虽然发布了一些产品,但是性能都很低,最终以失败而告终。

AT&T最终撤出了投入Multics项目的资源,其中一个开发者,Ken Thompson则继续为GE-645开发软件,并最终编写了一个太空旅行游戏。经过实际运行後,他发现游戏速度很慢而且耗费昂贵——每次运行会花费75美元。

在Dennis Ritchie的帮助下,Thompson用PDP-7的汇编语言重写了这个游戏,并使其在DEC PDP-7上运行起来。这次经历加上Multics项目的经验,促使Thompson开始了一个DEC PDP-7上的新操作系统项目。Thompson和Ritchie领导一组开发者,开发了一个新的多任务操作系统。这个系统包括命令解释器和一些实用程序,这个项目被称为UNICS(Uniplexed Information and Computing System),因为它可以支持同时的多用户操作。後来这个名字被改为UNIX。

发展期

最初的UNIX是用汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的。B语言在进行系统编程时不够强大,所以Thompson和Ritchie对其进行了改造,并与1971年共同发明了C语言。1973 年Thompson和Ritchie用C语言重写了UNIX。在当时,为了实现最高效率,系统程序都是由汇编语言编写,所以Thompson和 Ritchie此举是极具大胆创新和革命意义的。用C语言编写的UNIX代码简洁紧凑,易移植,易读,易修改,为此後UNIX的发展奠定了坚实基础。

1974年,Thompson和Ritchie合作在ACM通信上发表了一片关于UNIX的文章,这是UNIX第一次出现在贝尔实验室以外。此後UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。

1975年,UNIX发布了4、5、6三个版本。1978年,已经有大约600台计算机在运行UNIX。1979年,版本7发布,这是最後一个广泛发布的研究型UNIX版本。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。此後这个方向上的研究导致了Plan 9的出现,这是一个新的分布式操作系统。

1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。

这个新的UNIX商业发布版本不再包含源代码,所以加州大学Berkeley分校继续开发BSD UNIX,作为UNIX System III和V的替代选择。BSD对UNIX最重要的贡献之一是TCP/IP。UnixBSD 有8个主要的发行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及 4.4-lite。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX 和Microsoft Windows。

其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,Bill Joy,在BSD基础上开发了SunOS,并最终创办了Sun Microsystems。

1991年,一群BSD开发者(Donn Seeley、Mike Karels、Bill Jolitz 和 Trent Hein)离开了加州大学,创办了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常见的Intel平台上提供全功能商业BSD UNIX的厂商。後来Bill Jolitz 离开了BSDI,开始了386BSD的工作。386BSD被认为是FreeBSD、OpenBSD 和 NetBSD的先辈。

AT&T继续为UNIX System V增加了文件锁定,系统管理,作业控制,流和远程文件系统。1987到1989年,AT&T决定将Xenix(微软开发的一个x86-pc上的UNIX版本),BSD,SunOS和System V融合为System V Release 4(SVR4)。这个新发布版将多种特性融为一体,结束了混乱的竞争局面。

1993年以後,大多数商业UNIX发行商都基于SVR4开发自己的UNIX变体了。

现况

UNIXSystemVRelease4发布后不久,AT&T就将其所有UNIX权利出售给了Novell。Novell期望以此来对抗微软的WindowsNT,但其核心市场受到了严重伤害,最终Novell将SVR4的权利出售给了X/OPENConsortium,后者是定义UNIX标准的产业团体。最后X/OPEN和OSF/1合并,创建了OpenGroup。OpenGroup定义的多个标准定义着什么是以及什么不是UNIX。

实际的UNIX代码则辗转到了SantaCruzOperation,这家公司后来出售给了CalderaSystems。Caldera原来也出售Linux系统,交易完成后,新公司又被重命名为SCOGroup。

1127部门的解散

根据一项报导指出,当年负责研发UNIX与后续维护工作的贝尔实验室1127部门已于2005年8月正式宣告解散。KenThompson已退休,现居加州;DennisRitchie调到别的部门;DouglasMcIlroy在达特茅斯学院担任教授等。

§ 系统标准

Unix从1980年代开始,POSIX,一个开放的操作系统标准就在制定中,IEEE制定的POSIX标准现在是UNIX系统的基础部分。

自由的类Unix系统

RichardStallman建立了GNU项目,要创建一个能够自由发

布的类UNIX系统。20年来,这个项目不断发展壮大,包含了越来越多的内容。现在,GNU项目开发的产品,比如Emacs,GCC等已经成为各种其他自由发布的类UNIX产品中的核心角色。

1990年,LinusTorvalds决定编写一个自己的Minix内核,初名为Linus'Minix,意为Linus的Minix内核,后来改名为Linux,此内核于1991年正式发布,并逐渐引起人们的注意。当GNU软件与Linux内核结合后,GNU软件构成了这个POSIX兼容操作系统GNU/Linux的基础。今天GNU/Linux已经成为发展最为活跃的自由/开放源码的类Unix操作系统。

1994年,BSDUnix走上了复兴的道路。BSD的开发也走向了几个不同的方向,并最终导致了FreeBSD、OpenBSD和NetBSD的出现。

等。

§ 基本操作

Unix1.重启机器。

2.系统出现:

SCO OpenServer TM Release 5

Boot

*回车

3.系统出现:

INIT:SINGLE USER MODE

Type CONTROL-d to proceed with normal startup,

(or give root password for system maintenance): 输入root密码或按CONTROL-d

4.按CONTROL-d系统出现:

SCO Openserver(TM)Release 5

Login:root

Password:

5.登录机器,系统提示:# unix安全模型

6.配置鼠标:

(1)mkdev mouse

(2)add a mouse to system

(3)ps-2style keyboard mouse

(4)high resolution keyboard-mouse

注意依次选择:

7.配置显卡:

Mkdev graphics

8.配置网卡:

(1)通过custom安装驱动

(2)Install new

(3)Netconfig

(4)Install new lan adapter

9.启动X Window:

配置完鼠标和显示器后,#下键入startx就可以进入图形界面了。执行scologin enable 则开机自动进入x-windows的登陆界面。

10.关机操作:

(1)一般用户:exit;delete键;ctrl+d键

(2)超级用户:shutdown;reboot;haltsys;init 0。

(3)由多用户模式变为单用户模式:init 1

§ 基本文件

UnixUNIX发展的历史有点悠久,所以成熟而博大。与历史的兼容,他里面保留了一些古老的命令和文件。热心的扩展使得她对不同的人有不同的答案。在UNIX中,很多问题不是只有唯一的解决办法。这要看你使用的是什么时候,谁的参考书。其实这并不重要,重要的就是你找到了你要的答案。因此,我认为把UNIX摸透很难,也没有必要。因为,即使你精力充沛,你的记忆力恐怕也不会给你面子。掌握基本命令、系统的结构、设计思想是非常重要的,需要的时候再去找你的答案吧!当然,这是我个人的观点,你也许能找到适合你的更好办法。

UNIX家族产品很多,但其一般用户命令均符合POSIX标准。掌握这些基本命令,我们就可以在这个产品平台上开展工作。下面简要介绍SCO OPENSERVER 部分常用命令,其中大部分是POSIX标准的。掌握这些命令的关键是如何从这些命令出发找到自己需要的命令,学会使用联机帮助就是很好的办法。

1.命令执行环境

UNIX提供给用户执行命令的环境,称之为SHELL。有sh,ksh,csh等,其中sh为基本SHELL,其余为根据不同用户习惯扩展的。

用户登录后,系统将执行配置文件设置用户工作环境。如果没有在配置文件中exec一个程序或自动退出。用户将得到命令行提示符。此时用户的shell一般对应于/etc/passwd中的设置。

不同SHELL的配置文件为:

sh.profile

ksh.profile .kshrc

csh.login .cshrc

注意点:

用户登录后虽然得到指定的SEHLL环境,只是说明在这个环境中你可以执行这个SHELL的特有命令,在执行另外一个SHELL程序时如无特殊指定(见SHELL编程),被执行程序的环境为sh。

环境变量虽在不同的SHELL中有不同的设置方法,但工作环境的变量,所有运行程序均可使用。

执行程序中设置的环境变量,除非这个程序是被(. dot)调用的,程序执行完后不会带到工作环境中来。

Unix

2.输入输出和联机帮助

(1).输入输出重定向

在UNIX的SHELL环境中,其输入输出的重定向的功能非常有用。其中可以使用标准输入输出设备,0表示标准输入、1表示标准输出、2表示标准错误输出。

a.filename输出重定向(更新方式)。

将输出定向到文件,文件为更新方式。

b.>> filename输出重定向(追加方式)。

将输出定向到文件,文件为追加方式。

c.< filename输入重定向。

将文件的内容作为执行程序的输入。

d.<< word输入重定向。

Word为输入结束标志符,将后续输入的内容作为执行程序的输入。输入以word或control-D结束。

c.| 管道。

将前一个命令的输出作为后一个命令的输入。

(2)联机帮助

UNIX中提供了很详细有用的帮助,使用man 命令可以去看你所需要的命令的帮助。

Man的基本用法:man [段节] 主题

man –k 关键词

段节指主题所属的范畴,有:

ADM系统管理命令

C 用户命令

F 文件格式

HW 硬件属性

M 其他的

TCL SCO Visual Tcl(TM) commands

只有一个主题有多个范畴的帮助时,才须指定你需要的段节。

Man –k 可以显示帮助文档中出现这个词的所有主题。

技巧:

我们需要找一个想要的命令时,man一下我们知道的命令。从相关命令出发就可找到答案。Man –k 搜索也是很好的办法。

在XWINDOW的HELP中找答案会更方便、详细。

!警告:不要随意执行你不知道是用来做什么的命令!不要使用 .*做参数

3.基本命令:

env显示设置命令执行环境

env [ - | -i ] [ name=valuess ] ... [ command ][args] ]

date显示和设置时间

date [ -u ] [ +format ]

date [ -u ] [ MMDDhhmm][YY] | -t [CC]YYMMDDhhmm[.SS] ]

clear清除当前屏幕

grep找到与字符串匹配的行

wc计算字、行数、字节数

cat显示文件内容

more分屏显示文件内容

§ 文件系统操作

Unix

ls列文件名

cp拷贝文件

mv移动文件

rm删除文件

cd目录切换

mkdir建目录

rmdir删除目录

pwd显示当前所在目录

find搜索文件

sort对文件进行排序

cut对文件进行列切割

paste对文件进行列组合

ln文件或目录链接

进程管理

ps显示当前进程状态

kill杀死进程

用户和权限管理

useradd添加用户

userdel删除用户

usermod修改用户

userls列可用用户

passwd修改口令

chmod修改文件目录权限

chown修改文件目录属主

who显示当前在线用户

finger显示用户信息

设备和终端管理

mkdev 设备管理

hwconfig显示当前设备信息

stty设置终端模式

enable打开终端

disable关闭终端

IPC管理

Ipcs显示IPC状态

Ipcrm删除信号量集、消息队列、共享内存

网络

telnet登录远程服务器

ftp文件传输

route路由管理

netstat显示网络状态

traceroute跟踪网络访问路由

netconfig网络配置管理

/etc/hosts网络主机名文件

/etc/services网络服务端口文件

/etc/inetd.conf网络服务文件

§ 常用指令

以下只说明各指令的基本用法, 若需详细说明, 请用man去读详细的manual。

1. ls

这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是某一个档案的内容显示出来。如果你在下 ls 指令後头没有跟著任何的档名,它将会显示出目前目录中所有档案。也可以在 ls 後面加上所要察看的目录名称或档案的名称,如

% ls /etc

ls 有一些特别的参数,可以给予使用者更多有关的资讯,如下:

-a : 在 UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用 ls

将不会显示出这个档案的名字,我们称此类档案为隐藏档。如 tcsh的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a 。

-l : 这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯,如档案存取权,档案拥有者( owner ),档案大小,档案最後更新日期,甚而 symbolic link 的档案是 link 那一个档等等。如下

% ls -l

2. cp

cp 这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另一个档案或者是将其复制到另一个目录去。

-i : 此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来 f2

的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者

的回答是y(yes)才执行复制的动作。

-r : 此参数是用来做递回复制用,可将一整颗子树都复制到另一个

目录中。

Unix3. mv

mv 的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有三种格式:

mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 interactive

询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要

搬过去,所有其他的参数遇到 -f 均会失效

4. rm

rm 的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一

个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回

来的。所以在做 rm 动作的时候使用者应该要特别小心。

-f : 将会使得系统在删除时,不提出任何警告讯息。

-i : 在除去档案之前均会询问是否真要除去。

-r : 递回式的删除。

5. mkdir

mkdir 是一个让使用者建立一个目录的指令。你可以在一个目录底下使用

midir 建立一个子目录,使用的方法就不用多说了吧!

6. chdir ( cd )

这是让使用者用来转移工作目录用的。

chdir dirname

如此你就可以将目前的目录转移到 dirname 这一个目录去。或使用 "chdir .." 来转移到上一层目录。

7. rmdir

相对於 mkdir ,rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下:

rmdir dirname1 [ dirname2 .... ]

如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用 rm 指令的 -r 选项。

8. pwd

pwd 会将目前目录的路径( path )显示出来,例如:

9. cat/more/less

以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是 concatenate ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行号。 cat 的用法如下:

cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向

给 cat .

cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。

more ,可以将所观察的档案跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻的单字即可进行搜寻。more 也可以找得到。more 的使用法如下:

more filename

如果你在使用中觉得已经看到了所要看的部份,可以按'q'离开 more 的使用。在使用中按'v' 亦可以使用编辑器来编辑所观看的档案。less 的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺点而设计。 less 的用法如下:

less filename

其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所要找的单字。

10. chmod

chmod 为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模式( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式,分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以 ls -lg来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下:

chmod [ -fR ] mode filename ...

其参数的意义如下:

-f Force. chmod 不会理会失败的动作。

-R Recurive. 会将所有子树下的所有子目录及档案改为你所要改成的模式。

mode 可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情可参阅 chmod(1) 的 manual page 中有关 Absolute Modes 的说明。或是用一个字串来表示,请参考 chmod(1) 的说明。

二. 关於 Process 处理的指令:

1. ps

ps 是用来显示目前你的 process 或系统 processes 的状况。

以下列出比较常用的参数:

其选项说明如下:

-a 列出包括其他 users 的 process 状况。

-u 显示 user - oriented 的 process 状况 。

-x 显示包括没有 terminal 控制的 process 状况 。

-w 使用较宽的显示模式来显示 process 状况 。

我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。

2. kill

kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是

用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法

为:

kill [ -SIGNAL ] pid ...

kill -l

SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一

般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考 sigvec(2)

中对 signal 的说明。

你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形

请参阅 man kill。

三. 关於字串处理的指令:

1. echo

echo 是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳行的动作。

2. grep/fgrep

grep 为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是

自标准输入过滤出具有某个字串的行。

fgrep 可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有

属於这一群字串的行过滤出来。

grep 与 fgrep 的用法如下:

grep [-nv] match_pattern file1 file2 ....

fgrep [-nv] -f pattern_file file1 file2 ....

-n 把所找到的行在行前加上行号列出

-v 把不包含 match_pattern 的行列出

match_pattern 所要搜寻的字串

-f 以 pattern_file 存放所要搜寻的字串

四. 网路上查询状况的指令:

1. man

man 是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功能,

man 就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种表

格等的使用所用的。man 的用法如下:

man [-M path] [[section] title ] .....

man [-M path] -k keyword ...

-M path man 所需要的 manual database 的路径。

我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。

title 这是所要查询的目的物。

section 为一个数字表示 manual 的分类,通常 1 代表可执行指令,

2 代表系统呼叫( system call ) ,3 代表标准函数,等等。

我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar ,

便能取得我们所要的辅助讯息。

-k keyword

用来将含有这项 keyword 的 title 列出来。

man 在 UNIX 上是一项非常重要的指令,我们在本讲义中所Unix述之用法均仅只是一个大家比较常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用 man 来得到。

2. who

who 指令是用来查询目前有那些人在线上。

3. w

w 指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。

4. ku

ku 可以用来搜寻整个网路上的 user ,不像 w 跟 who 只是针对 local host 的查询. 而且 ku 提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档案 information-file 以条列的方式存放你的朋友的资料,再建立一个档案 hosts-file 来指定搜寻的机器名称。 ku 的指令格式可由 ku -h 得到。

五. 网路指令:

UNIX 提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,如你可以在系上的 iris 图形工作站上做图形的处理,在系上的 Sun 上读 News ,甚至到学校的计中去找别系的同学 talk 。这些工作可以利用 UNIX 的网路指令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在寝室,也能轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机房面。

这些网路的指令如下所述:

1. rlogin 与 rsh

rlogin 的意义是 remote login , 也就是经由网路到另外一部机器 login 。

rlogin 的格式是:

rlogin host [ -l username ]

选项 -l username 是当你在远方的机器上的 username 和 local host 不同的时後,必须输入的选项,否则 rlogin 将会假设你在那边的 username 与 localhost 相同,然後在第一次 login 时必然会发生错误。

rsh 是在远方的机器上执行某些指令,而把结果传回 local host 。

rsh 的格式如下:

rsh host [ -l username ] [ command ]

如同 rlogin 的参数 -l username , rsh 的 -l username 也是指定 remote host的 username 。而 command 则是要在 remote host 上执行的指令。如果没有 指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin 。

不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password , 而是如果你没有设定 trust table , 则 remote host 将不会接受你的 request 。

rsh 须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts。这个档案每一行分为两个部份,第一个是允许 login 的 hostname , 第二个部份则是允许 login 的username 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的 username 为 QiangGe , 而你的 home 下面的 .rhost 有以下的一行:

ccsun6.cc.nctu.edu.tw u8217529

则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法来执行 rsh 程式:

% rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox

将 ysjuang 在 ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在 local host ccsun6.cc.nctu.edu.tw 上。

而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的 user u8217529

将可以不用输入 password 而直接经由 rsh 或 rlogin login 到

ccsun7.csie.nctu.edu.tw 来。

注意:

.rhost 是一个设定可以信任的人 login 的表格,因此如果设定不当将会让不法之徒有可以乘机侵入系统的机会。 如果你阅读 man 5 rhosts ,将会发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何username 。

如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname ,但是这样将会使得即使有一台 PC 上Unix跑 UNIX 的 user 有与你相同的 username , 也可以得到你的 trust 而侵入你的系统。这样容易造成系统安全上的危险。因此本系禁止使用这样子的方式写你的 .rhost 档,如果发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的第二个栏位为 + ,如" hostname + " ,则你是允许在某一部机器上的"所有"user 可以不用经由输入 password 来进入你的帐号,是壹种更危险的行为。所以请自行小心。

2. telnet

telnet 是一个提供 user 经由网路连到 remote host。

telnet 的 格式如下:

telnet [ hostname | ip-address ] [ port ]

hostname 为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw 的 name address,ip-address 则为一个由四个小於 255 的数字组成的 ip address ,如 ccsun1的 ip-address 为140.113.17.173 ,ccsun1.cc.nctu.edu.tw 的 ip-address为 140.113.4.11 。你可以利用 telnet ccsun1 或telnet 140.113.17.173 来连到 ccsun1。

port 为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD 其 server 便提供一些 port 让 user 由这些 port 进入 MUD 程式。详情请参阅 telnet(1)的说明。

3. ftp

ftp 的意义是 File Transfer Program ,是一个很常应用在网路档案传输的

程式。ftp 的格式如下:

ftp [ hostname | ip-address ]

其中 hostname | ip-address 的意义跟 telnet 中的相同。

在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你 username 与密码,如果输入对了就可以开始进行档案传输。

在 ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常用的 cd , lcd , mkdir , put , mput , get , mget , binary , ascii , prompt , help 与 quit 的使用方式。

ascii 将传输模式设为 ascii 模式。通常用於传送文字档。

binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像档等。

cd remote-directory 将 remote host 上的工作目录改变。

lcd [ directory ] 更改 local host 的工作目录。

ls [ remote-directory ] [ local-file ] 列出 remote host 上的档案。

get remote-file [ local-file ] 取得远方的档案。

mget remote-files 可使用通用字元一次取得多个档案。

put local-file [ remote-file] 将 local host 的档案送到 remote host。

mput local-files 可使用通用字元一次将多个档案放到 remote host 上。

help [ command ] 线上辅助指令。

mkdir directory-name 在 remote host 造一个目录。

prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个档案之传输时均会询问。

quit/bye 离开ftp .

利用 ftp ,我们便可以在不同的机器上将所需要的资料做转移,Unix某些特别的机器更存放大量的资料以供各地的使用者抓取,本校较著名的 ftp server 有 NCTUCCCA 与系上的ftp.csie.nctu.edu.tw 。这些 ftp server 均有提供一个 user 称为 anonymous ,一般的"外来客"可以利用这个 username 取得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用anonymous 的使用者输入其 email address,以往有许多台湾的使用者在使用国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。

六. 关於通讯用的指令:

1. write

这个指令是提供使用者传送讯息给另一个使用者,使用方式:

write username [tty]

2. talk/ytalk/cytalk/ctalk

UNIX 专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域,同时也可和不同机器的使用者交谈。使用方式:

talk username[@host] [tty]

3. mesg

选择是否接受他人的 messege , 若为 messege no 则他人的 messege 将无法传送给你,同时他也无法干扰你的工作。使用方法:

mesg [-n|-y]

4. mail/elm

在网路上的 email 程式,可经由此程式将信件 mail 给他人。 使用方式:

mail [username]

mail -f mailboxfile

如有信件,则直接键入 mail 可以读取你的 mail .

elm 提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入 elm

使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。

使用方式:

elm [usernmae]

elm -f mailboxfile

七. 编译器( Compiler ):

Compiler 的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常用的程式语言是 C , pascal , FORTRAN 等。你可以先写好一个 C 或 Pascal 或 FORTRAN 的原始程式档,再用这些 compiler 将其翻成可执行档。你可以用这个方法来制造你自己的特殊指令。

1. cc/gcc (C Compiler)

/usr/bin/cc

/usr/local/bin/gcc

语法: cc [ -o execfile ] source

gcc [ -o execfile ] source

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可执行档会以 a.out 做为档名。 source 为一个以 .c 做为结尾的 C 程式档。请参阅 cc(1) 的说明。

2. pc (Pascal Compiler)

/usr/local/bin/pc

语法: pc [ -o execfile ] source

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 Pascal 程式档。 请参阅 /net/home5/lang/man 中 pc(1) 的说明。

3. f77 (Fortran Compiler)

/net/home5/lang/f77

语法: f77 [ -o execfile ] source

execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 FORTRAN 程式档。

八. 有关列印的指令:

以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机 ),

lw , sp , ps , compaq ( 雷射印表机 ),供使用者使用。

1. lpr

lpr 为用来将一个档案印至列表机的指令。

用法:

lpr -P[ printer ] file1 file2 file3 ....

lpr -P[ printer ] < file1

例子:

lpr -Plp1 hello.c hello.lst hello.map

lpr -Plp1 < hello.c

前者以参数输入所要印出的档案内容,後者列印标准输入档案(standard input)的内容,因已将 hello.c 转向到标准输入,故会印出 hello.c 的档案内容。

2. lpq

lpq 是用来观察 printer queue 上的 Jobs 。

用法:

lpq -P[ printer ]

3. lprm

lprm 是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档资料至 printer , 此时就必须利用 lprm 取消列印 request ,以免造成资源的浪费。

用法:

lprm -P[ printer ] [ Jobs id | username ]

lprm 用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,则它将此 Job 自printer queue 清除,如果你用 username作为参数,则它将此 queue中所有 Owner 为此username 的 Jobs 清除。

九. 更改个人使用资料:

1. passwd

passwd 是用来更改你的使用密码,用法为:

passwd [ username ]

在使用 passwd 的时候,它会先问你的旧密码,然後询问两次要更改的密码,确定无误後才将你的密码改掉。

2. chsh

chsh 是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell 。[1]

随便看

 

百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/14 16:43:46