技術 > 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操作係統