資源描述:
《unixshell程序編寫的方法詳解》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在應用文檔-天天文庫。
1、UnixShell程序編寫的方法詳解Shell是什么??任何發(fā)明都具有供用戶使用的界面。UNIX供用戶使用的界面就是Shell(DOS的command熟悉吧,但UNIX的要強大的多)。?Shell為用戶提供了輸入命令和參數(shù)并可得到命令執(zhí)行結果的環(huán)境。?為了不同的需要,UNIX提供了不同的Shell?,F(xiàn)在的UNIX大部分都支持BourneShell,以下教程就以BourneShell(Bsh)為例,一步步的領略UNIXShell的強大功能,占先其強大魅力,達到更方便靈活的管理、應用UNIX的目的。?1.UNIX內(nèi)核和Shell的交互方法?啟動UNIX時,程序UN
2、IX(內(nèi)核)將被調(diào)入計算機內(nèi)存,并一直保留在內(nèi)存中直到機器關閉。在引導過程中,程序init將進入后臺運行一直到機器關閉。該程序查詢文件/etc/inittab,該文件列出了連接終端的各個端口及其特征。當發(fā)現(xiàn)一個活動的終端時,init程序調(diào)用getty程序在終端上顯示login等登陸信息。(username和passwd),在輸入密碼后,getty調(diào)用login進程,該進程根據(jù)文件/etc/passwd的內(nèi)容來驗證用戶的身份。若用戶通過身份驗證,login進程把用戶的home目錄設置成當前目錄并把控制交給一系列setup程序。setup程序可以是指定的應用程序,
3、通常setup程序為一個Shell程序,如:/bin/sh即BourneShell(command出來了,呵呵)。??得到控制后,Shell程序讀取并執(zhí)行文件/etc/.profile以及.profile。這兩個文件分別建立了系統(tǒng)范圍內(nèi)的和該用戶自己的工作環(huán)境。最后Shell顯示命令提示符,如$。(這是以bsh為例,若是csh,為.cshrc,ksh為.kshrc,bash為.bashrc等等)注不妨把/etc/.profile和.profile看成DOS的autoexec.bat或config.sys文件)?當shell退出時,內(nèi)核把控制交給init程序,該
4、程序重新啟動自動登陸過程。有兩種方法使shell退出,一是用戶執(zhí)行exit命令,二是內(nèi)核(例如root用kill命令)發(fā)出一個kill命令結束shell進程。shell退出后,內(nèi)核回收用戶及程序使用的資源。?用戶登陸后,用戶命令同計算機交互的關系為:命令進程--->Shell程序--->UNIX內(nèi)核--->計算機硬件。當用戶輸入一個命令,如$ls,Shell將定位其可執(zhí)行文件/bin/ls并把其傳遞給內(nèi)核執(zhí)行。內(nèi)核產(chǎn)生一個新的子進程調(diào)用并執(zhí)行/bin/ls。當程序執(zhí)行完畢后,內(nèi)核取消該子進程并把控制交給其父進程,即Shell程序。例如執(zhí)行:$ps?該命令將會列
5、出用戶正在執(zhí)行的進程,即Shell程序(下來詳細說說,別急現(xiàn)在)和ps程序。若執(zhí)行:$sleep10&$ps其中第一條命令將產(chǎn)生一個在后臺執(zhí)行的sleep子進程。ps命令執(zhí)行時會顯示出該子進程。?每當用戶執(zhí)行一條命令時,就會產(chǎn)生一個子進程。該子進程的執(zhí)行與其父進程或Shell完全無關,這樣可以使Shell去做其他工作。(Shell只是把用戶的意圖告訴內(nèi)核,然后該干嘛干嘛)現(xiàn)在windows有個計劃任務(在固定的時間,日期自動執(zhí)行某任務),其實UNIX很早就有這個功能了,也就是所謂的Shell的自動執(zhí)行。一些UNIX資源,如cron可以自動執(zhí)行Shell程序而無
6、需用戶的參與,(這個功能好象在/var/spool/crotab目錄里)。?Crontab程序?qū)τ谙到y(tǒng)管理員來說是非常有用的。Cron服務用于計劃程序在特定時間(月、日、周、時、分)運行。我們以root的crontab為例。根用戶的crontab文件放在/var/spool/crontab/root中,其格式如下:? (1) (2) (3) (4) (5) (6) 0 0 * * 3 /usr/bin/updatedb 1.分鐘(0-60) 2.小時(0-23) 3.日(1-31) 4.月(1-12)
7、 5.星期(1-7) 6.所要運行的程序2.Shell的功能和特點 1>命令行解釋 2>使用保留字 3>使用Shell元字符(通配符) 4>可處理程序命令 5>使用輸入輸出重定向和管道 6>維護一些變量 7>運行環(huán)境控制 8>支持Shell編程?對于"命令行解釋"就不多說了,就是在shell提示符(例如:"$","%","#"等)后輸入一行unix命令,Shell將接收用戶的輸入。?"使用保留字":Shell有一些具有特殊意義的字,例如在Shell腳本中,do,done,for等字用來控制循環(huán)操作,if,then等控制條件操作。保
8、留字隨Shell環(huán)境的不同而不同。?"