概述
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,在原始版本的基礎上還有派生版本,這些版本通常
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(MultiplexedInformationandComputingSystem)是有一定淵源的。Multics是由麻省理工學院,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。BSD 有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在達特茅斯學院擔任教授等。
系統標準
從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的出現。
等。
基本操作
1.重啟機器。2.系統出現:
SCOOpenServerTMRelease5
Boot
*回車
3.系統出現:
INIT:SINGLEUSERMODE
TypeCONTROL-dtoproceedwithnormalstartup,
(or give root password for system maintenance): 輸入root密碼或按CONTROL-d
4.按CONTROL-d系統出現:
SCO Openserver(TM)Release 5
Login:root
Password:
5.登錄機器,系統提示:#
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
基本檔案
UNIX發展的歷史有點悠久,所以成熟而博大。與歷史的兼容,他裡面保留了一些古老的命令和檔案。熱心的擴展使得她對不同的人有不同的答案。在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)調用的,程式執行完後不會帶到工作環境中來。
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分屏顯示檔案內容
檔案系統操作
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 : 此參數是用來做遞迴複製用,可將一整顆子樹都複製到另一個
目錄中。
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 上是一項非常重要的指令,我們在本講義中所
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 的 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 ,我們便可以在不同的機器上將所需要的資料做轉移,某些特別的機器更存放大量的資料以供各地的使用者抓取,本校較著名的 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 。