技术 > unix操作系统
目录
No. 1
  最早由美国电话电报公司(at&t)贝尔实验室的丹尼斯·里奇和肯·汤普森开发的操作系统,允许计算机同时处理多用户和程序。从20世纪70年代开发以来,unix已由许多个人和公司,特别是加利福尼亚大学的计算机科学家伯克利增强。这种操作系统在各类计算机系统,从个人计算机到主机上广泛使用,并以其他形式使用。aix是运行在ibm工作站上的实现,a/ux是在macintosh计算机上运行的图形版本;solaris在英特尔微处理机上运行。unixware是unix的novell实现。unix的netware原始设备制造商(oem)版本。
UNIX操作系统发展历程
  Unix一切源自于Bell实验室,这个为AT&T(美国电话和电报)公司设立的研究型实验室.AT&T被认为是我们这个时代最大和最有实力的公司之一.它显然对开发和销售计算机及软件操作系统不感兴趣,实际上美国司法部也不允许AT&T公司销售软件.然而,当时AT&T由人和纸张组成的公司信息系统很快就要被60年代的浪潮所淹没.到70年代的时候电话业务的发展已经面临风险.AT&T公司的Ken Thompson开始为自己部门室内的信息处理寻找解决的方法,需要一个多用户操作的,能进行多个流程处理的方法,这种东西在当时来说没有一家计算机公司可以提供.这种东西的目的其实就是建立一个能支持多位话务员在一个复杂的环境中进行同时作业的操作系统. 这个需要的东西就是Unix萌发的源头. 接下来的介绍开发Unix类操作系统的循序渐进过程中发生的主要事件及对应时段.
  [1965年到1969年]
  1965年Bell实验室加入了MIT(麻省理工学院)和GE(通用电器公司)合作开发的一个项目,该项目要求在通用公司的GE 645大型计算机硬件上开发出一套多用户交互操作系统软件,名字定为Multics.然而由于Bell实验室对系统开发中经常性的延迟和高成本消耗不满,最后终于在1969年退出了Multics系统的开发项目.1969年Ken Thompson把Multics在Bell实验室内进行了展示,这时候正好遇上了Dennis Ritchie,他提供了一台DEC(数字设备公司)的PDP-7迷你计算机硬件,可以继续用来开发能支持多用户研究环境的操作系统.这两个人建立了一个开发原型后,Ken Thompson返回了Bell实验室并鼓励在专利部门使用新开发的这款操作系统来进行文档处理工作.为区别于Multics项目,新操作系统被命名为Unix. 开发Unix的各种努力在继续,终于在1971年Unix得以在Bell实验室变得实际可用.第一版本的unix操作系统完全使用汇编语言在PDP-11/20硬件上开发完成.它包含了基本文件系统,以及fork,roff和ed三个工具,当时它的用途就是为Bell实验室专利部门的文档准备工作提供字处理工具.
  [1970年到1972年]
  70年代早期,Unix开始在Bell实验室变得流行起来,作为新诞生的操作系统Unix也受到了大学机构的欢迎.与学院和高科技研究领域对Unix喜爱形势不同,商业社区到处充斥着怀疑Unix的声音.为提升Unix的流行度,AT&T公司开始将Unix源代码以最小的价格许可给大学机构研究用,AT&T提供了关于Unix大量软件代码和说明手册,但是没有提供软件使用的技术支持.70年代末,几乎70%的大学机构获得了Unix许可.许多计算机专业的毕业生在使用Unix,甚至对Unix代码进行修改,使它更加健全.Unix是用汇编语言写出来的主要运行在DEC公司的硬件设备平台上,开始在PDP-7设备上,然后是PDP-11/40设备和11/45设备,最后到PDP-11/70设备,使用变得更加广泛和流行.
  [1973年到1979年]
  这段时期是Unix开发最重要的时期.Ritchie和Thompson两人在1969到1973年时间内开发出了C编程语言,并且把Unix的内核用C高级编程语言进行了重新编写.unix操作系统得以在不同硬件平台上编译运行.花几个月时间,用C编写的Unix就可以移植到新的硬件平台上.在C语言的帮助下修改操作系统也变得容易起来.学术社区的会员已经开始在许多系统设计课程中使用Unix,利用通用C语言写现代的命令,Unix也开始走出了字处理和编辑等局限性领域.此时Unix已经发展到了第六个版本,一个名叫Whitesmiths的商业公司基于第六版Unix发布了一个名叫Idris的商业Unix版本.1975年Thompson造访Berkeley大学安装在PDP-11/70设备上第六版Unix,此刻学校的两位毕业生Bill Joy和Chuck Haley刚好与Berkeley的这版Unix打交道,他俩在Berkeley为Unix的发展扮演了重要的角色,他们在第六版Unix环境上的第一个项目是ex编辑器的开发.他俩对Unix的内部运行原理很感兴趣,Joy把C语言增强壳以及vi编辑器等组合到了一起,形成了一个叫BSD(Berkeley软件发行包)的套装,1975第一次发布,这种模式在1978年进行了第二次发布,第二次发布的BSD中添加了虚拟内存的支持,允许程序可以在在物理内存大小不够用的情况下,继续模拟出虚拟内存来进行使用.这个特殊的想法对Bell实验室发布第七版的Unix影响非常大,第七版Unix也是最后一版完全由Bell实验室原创的Unix发行版.此后的Unix版本中的功能内容由多家商业公司和大学研究机构进行了或多或少的增添.70年代末美国国防部高级研究项目局决定将其通用计算环境构建在Berkeley版的Unix之上,在4.1版BSD的基础上,国防部高级研究项目局为4.1BSD进行了重要的性能调优提升,提供的fast文件系统提升了系统性能阻止了文件碎片的生成,该文件系统被加进了4.2版的BSD软件系统中.
  [1982年到1983年]
  1982年AT&T公司正式向商业领域发布了一款测试版Unix,名叫System III(System I和System II从来没有存在过),虽然System III基于第七版Unix但它也加入了一些来自BSD的工具,但System III发布版中没有包含vi编辑器和C壳,但内含了程序员workbench(工作性能度量工具),在发行System III的时候,AT&T看到了Unix的未来,很快就推出了System V版本的Unix(System IV没有在AT&T公司外出现过),其中包含了编辑器,curses(基于屏幕的软件库),和init(初始化程序),这些东西用来在开始运行Unix时启动各种过程.80年代初,Joy从berkeley大学取得了电气工程硕士学位后毕业了,变成了SUN(斯坦福大学网络)微系统公司的合伙创始人之一.Sun公司根据BSD实现的unix操作系统名叫SunOS.这款Unix依靠对原BSD系统中的网络工具进行扩展,这些扩展中就有著名的后来变为工业标准的NFS(网络文件系统协议).Sun还为早期的Unix窗口软件开发做了一些工作,SunOS于1983年首次发布.利用Sun提供的工作站硬件产品,Unix开始在高技术领域,尤其是计算机辅助设计和工程领域(CAD/CAE)被广泛地接受.80年代早期CAD/CAE变得流行起来,另外的PC工作站提供商象HP和Apollo等开始加入到该领域,但配备Unix的Sun工作站在性能和多用户处理方面胜过了PC工作站.在其他的商业计算环境中,Unix始终被认为是一个需自我完善的操作系统,它没有侵占大型机的市场,只是在多任务处理和网络连接中发挥了显著的特色.更重要的在于C语言的诞生使Unix可以向几乎任何硬件平台移植.
  [1984年到2001年]
  1984年AT&T发布了可以支持监视器连接到Unix的System V r2,该功能通过termcap的监视器数据库文件实现,命名为terminfo的文件可以提供多种监视器硬件的支持.其他的还有Streams和远程文件系统等. Solaris是1993年由SunOS改名而来,开始转向支持AT&T公司的System V release4版本.1993年Unix商标被Novell公司购得.1994年Solaris 2.4发布. 1995年Solaris 2.5发布,1997年Solaris 2.6生效,1998年Solaris 7发布,2000年Solaris 8发布,2001年Solaris 9测试版在3季度发布.从Solaris 8开始,Solaris除了能在Sun公司自己的SPARC系列处理器上运行外,还可以运行在Intel处理器平台上
UNIX特点应用范围
  应用:几乎所有16位及以上的计算机上,包括微机、工作站、小型机、多处理机和大型机等等。
  特点
  1. (1) 多任务、多用户
  2. (2) 并行处理能力
  3. (3) 管道
  4. (4) 安全保护机制
  5. (5) 功能强大的shell
  6. (6) 强大的网络支持,Internet上各种服务器的首选操作系统
  7. (7) 稳定性好
  8. (8) 系统源代码用C语言写成,移植性强
  9. (9) 出售源代码,软件厂家自己增删
  UNIX流派 举例
  UNIX类别计算机
  SCO UNIX PC兼容机
  Digital Unix Dec Alpha机
  Sun UNIX Sun工作站
  AIX IBM机
UNIX系统组成
  unix操作系统结构由三大部分组成:
  1. (1) kernel(内核)
  2. (2) shell(外壳)
  3. (3) 工具及应用程序
  UNIX Kernel(UNIX内核) 是unix操作系统的核心,指挥调度UNIX机器的运行,直接控制计算机的资源,保护用户程序不受错综复杂的硬件事件细节的影响。
  硬件
  工具和应用程序
  SHELL
  KERNAL
  UNIX Shell(UNIX外壳) 是一个UNIX的特殊程序,是UNIX内核和用户的接口,是UNIX的命令解释器。
  目前常见的Shell有三种:
  shell类型 简称 命令 主要特点
  Bourne Shell B Shell sh 最老、使用最广泛,每个UNIX都提供。
  Korn Shell K Shell ksh 是对B Shell的扩充,兼容B Shell。
  C-Shell csh 格式有点象C语言。功能强,命令记忆稍难,在大学和学院中较为流行。
  一般系统缺省为Bourne Shell, 本文以此shell为例。
  要想将当前Shell改为其它 Shell,只需在操作系统提示符下键入相应的Shell命令即可。如在B Shell下键输入命令:
  $ ksh就进入了K Shell。
Unix 操作系统常见故障恢复技巧
  SCO Unix 操作系统是一个多用户、多任务的操作系统,在日常的系统维护中,正确处理突发的灾难故障(如不能启动或不能登录等),保证数据的完整可靠,是系统管理员应该掌握的一种技能。本文介绍有关该系统的一些常见故障的恢复技巧。
  应急引导盘的制作
  在系统配置完成后,创建boot/root应急引导盘。下面以SCO OpenServer 5.0为例,介绍应急引导盘的制作步骤:
  ● 以超级用户root 注册;
  ● 进入创建应急引导盘的界面:
  #mkdev fd
  ● 根据提示制作boot和root盘,其中制作boot盘时一般选择与本机相同的内核。
  处理“No os”提示
  如果系统引导失败或显示“No os”信息,说明引导块中/etc/hd0boot和/etc/hd1boot或主引导块/etc/masterboot 被破坏了,需要进行恢复:
  ● 插入boot 盘引导,当出现boot: 提示符时,键入命令:
  hd(40)unix
  ● 进入单用户方式,并键入下列命令:
  #instbb hd /dev/hd0a
  #dparam -w
  其中,instbb把部分引导块写入硬盘; dparam 把主引导块代码写入硬盘的主引导块。对于某些硬盘,还需要按dparam 的描述标记硬盘划分情况。
  处理boot问题
  如果系统引导时,出现如下错误信息:
  boot not found
  cannot open
  stage 1 boot failure: error loading hd(40) /boot
  这表明系统中的/boot损坏或丢失了,可以按如下方法进行恢复:
  ● 插入boot引导盘,重新引导机器。在boot: 提示下键入:
  fd(60) unix.Z root=hd(42)
  上述命令从软盘上引导系统,并从软盘上装入核心,安装根文件系统。
  ● 在提示符下键入root口令,进入单用户模式。卸载/stand 文件系统 (boot和核心在该文件系统中):
  umount /stand
  由于/boot文件系统通常是以只读方式安装的,所以在替换boot文件之前,必须先把它卸下,再重新安装上。
  ● 重新安装/stand文件系统:
  mount /stand
  ● 安装引导盘:
  mount -r/dev/fd0 /mnt
  ● 恢复/boot文件:
  cp /mnt/boot /stand
  该命令在硬盘上复制一个新的/boot文件。
  ● 把引导盘从驱动器中取出之前,键入如下命令:
  mount /mnt
  重新启动系统即可。
  处理Unix文件问题
  如果在开始引导时,系统显示:unix not found,则表明系统文件被损坏或丢失了,该文件包含了系统核心的引导映像。Unix文件丢失后,可以从另外的核心文件(如unix.old或unix.safe)上引导系统,为此,只须在boot提示符下键入替代的核心文件名即可。
  如果在系统上没有另外的核心文件,就需要从应急盘引导系统,以便恢复系统unix文件。首先,在boot:提示下键入:
  fd(60) unix.Z root=hd(42)swap=hd(41)
  然后,在单用户模式下,键入命令:
  umount /stand
  mount /stand
  mount -r/dev/fd0 /mnt
  cp /mnt/unix.Z /stand
  处理不能进入多用户问题
  如果按<ctrl> +D键后,系统进入多用户方式失败,或在引导时显示如下信息,表明/etc/inittab文件丢失:
  init: cannot open /etc/inittab errno: 2
  文件/etc/inittab中包含init命令。如果文件inittab丢失了,就不能执行系统启动命令,系统也就不能进入多用户方式。所以,按<ctrl> +D键时,系统停留在单用户模式下,并显示上述出错信息。
  要恢复inittab文件,必须重建核心环境:
  ● 进入系统维护模式,键入以下命令:
  #cd /etc/conf/cf.d
  #touch /etc/.new-unix
  #../bin/idmkenv
  ● 在系统提示选择信息时,键入y并按<ctrl>键,然后键入命令:
  cat /etc/inittab
  ● 如果系统提示有关不能打开该文件的信息,键入命令:
  ln -s/var/opt/K/SCO/unix/* /etc/inittab /etc/inittab
  ● 再键入exit后,系统出现如下信息:
  Enter run level(0-6,s or S):
  键入2,系统即可以进入多用户方式。
  处理root文件问题
  如果root文件系统遭到破坏,可以通过以下步骤进行恢复:
  ● 用应急boot软盘启动,并根据提示插入应急root盘。
  ● 在root提示符下键入命令:
  fsck /dev/hd0root
  如果fsck检查无误,那么使用haltsys关闭系统,并且从硬盘启动即可;如果fsck检查有误,那么继续进行以下设置:
  ● 重新配置系统硬盘:
  #mkdev hd
  用户可以运行所有的初始化硬盘的应用程序对硬盘重新进行配置。
  ● 当系统提示:making filesystems后,系统将返回到root提示符下,键入如下命令整理硬盘上的root文件系统:
  #fsck /dev/hd0root
  ● 安装硬盘上的root 文件系统:
  #mount /dev/hd0root /mnt
  ● 恢复硬盘上的root文件系统的备份:
  cd /mnt
  cpio -ivmkBud -I/dev/xxx
  其中,xxx表示磁带驱动器设备名。对于1/4英寸盒式磁带驱动器,xxx为rcto;对于mini盒式磁带驱动器,xxx为rctmini。另外,用户还可以根据实际情况,用cpio命令的其他选项完成此项工作。
  完成备份工作后,还要确认stand目录是否位于root文件的顶层,如果不是,使用如下命令行进行相应的调整:
  mkdir stand
  ● 卸载和整理恢复的root文件系统:
  cd /
  umount /dev/hd0root
  fsck /dev/hd0root
  此时,系统将会提示一个警告信息,用户可以忽略这个警告信息:
  umount: warning: /dev/filesystem was not in mount table
  ● 检查boot文件系统(/stand):
  fsck /dev/boot
  ● 安装boot文件系统:
  mount /dev/boot /mnt
  ● 使用如下命令卸载和整理恢复的boot文件系统:
  cd /
  umount /mnt
  fsck /dev/boot
  重新启动系统即可。
  处理emulator问题
  如果在开始引导时,系统显示:No floating is available ……信息,表明系统的/etc/emulator文件被损坏或丢失了,可以按如下步骤恢复:
  ● 插入boot应急盘启动系统,在出现boot:提示时回车。
  ● 清理根文件系统:
  #fsck -s/dev/hd0root
  ● 用应急引导盘重新启动系统,键入命令:
  #/etc/mount /dev/hd0root /mnt
  #cp /etc/emulator /mnt/etc/emulator
  #/etc/umount /mnt
  重新启动系统即可。
  处理login文件丢失
  当系统提示“login:”,但输入后却不能登录时,显示“can誸 exec /bin/login: no such file”信息,表明login文件损坏或丢失。
  ● 插入boot应急盘,重新启动系统,进入维护状态。
  ● 恢复登录文件:
  # cpio idv -I/dev/rct0 bin/login
unix操作系统正确的五种关机方法
  unix操作系统是目前网络上用得最多的操作系统之一,使用UNIX系统,机器的关机要比使用DOS单用户机器的关机过程复杂得多。在UNIX下如不使用正确的关机命令和关机方法,将破坏文件系统,造成很大的损失。下面介绍UNIX系统的五种关机方法。
  1、用haltsys命令关机
  haltsys命令一发出,就会立即把系统关闭掉。其优点是系统响应快,强迫性强,因此,该命令只适合于系统上只有一个用户的情况。如果系统上有多个用户在工作,一发出命令,这些用户就被迫退出系统,他们的进程也丢失了。操作方法是:以超级用户登录,输入haltsys,回车,系统显示关机信息时,关掉电源。
  2、用reboot命令关机
  reboot命令是由系统管理员执行的停机程序,reboot实质上是和haltsys命令链接在一起的。reboot和haltsys的唯一区别是它在正常停机后不用按任意键,马上自动引导,重新启动系统。reboot特别适合系统管理员调试机器用。
  3、用shutdown命令关机
  shutdown命令是一个用shell语言编写的程序,驻留在/etc目录中。它由超级用户在前台运行,自动执行wall命令,通知正在系统中工作的所有用户,系统将在指定的时间内停机,请做好准备工作,然后从系统中注销。当所有用户已从系统中注销或指定时间已到时,shutdown就执行kill命令把系统中除主控台外的所有进程都终止,接着执行haltsys命令使系统正常停机。使用格式:shutdown -g[hh:]mm -f"Mesg",其中[hh:]mm是系统指定关机时间,“Mesg"是系统向各终端用户发送的信息。在网络用户中推荐使用shutdown命令来关机。
  4、用bye命令关机
  bye命令是以shutdown为核心,用vi编辑生成的关机命令,主要优点是简单易记。bye文件内容为:shutdown -y -g0(参数可根据实际需要设置),编辑后的bye权限为-rw-r-r-,此时bye不能直接使用,将其权限放开,# chmod u+x bye,bye才可行使shutdown职能。
  5、创建关机用户bye
  用超级用户来关机,不利于系统的管理,存在一定的安全隐患,因此有必要建立自动关机用户。下面以sysadmsh命令来创建关机用户bye。
  (1)创建bye用户。用超级用户登录到UNIX,键入sysadmsh,选择Account->User->Create,在Username中输入:bye,其他缺省。
  (2) 在Account->User->Examine中,输入bye后选择Privilege->Subsystem->Specify输入shutdown,保存修改信息并退出sysadmsh。
  (3) 用bye注册到UNIX,编辑当前目录下的.profile文件。该文件内容为:
  trap exit 2,3 /tcb/bin/asroot shutdown -y -g0
  (4)在Login:状态下,只要键入bye就会自动关闭unix操作系统