歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Josephxd的讀書筆記匯總

作者:albert 1.開始使用unix. Unix 的兩個最常用的版本是:Berkley Distribution(BSD) ATdate 2.管理文件和目錄 創建文件: 1)touch filename 2)vi filename 3)cat > filename 列舉文件 ls,ll(長列表=ls -l),ls有很多選項,具體看手冊 刪除文件 rm filename
  作者:albert
  
  1.開始使用unix.Unix的兩個最常用的版本是:Berkley Distribution(BSD) AT&T System V Release 4(SVR4),多數其它UNIX都是基於這兩個版本之一,HP-UNIX是由SVR4發展而來。UNIX操作系統的核心被稱為內核,內核是處理用戶軟件和計算機硬件之間所有通信的一個軟件。UNIX用戶無法直接同內核直接交互的,而是經常同一個叫UNIX shell的程序打交道,shell是一個命令解釋器。最常用的shell:Korn SH Bourne SH CSH POSIX SH(HP-UNIX默認用的shell)Root用戶的ID是0,所有擁有了這個ID的用戶也就有超級用戶的權限。Shell提示符:#表示是超級用戶,¥表示是普通用戶。口令長度必須是6-8位,並且同時包括字符和數字。口令中至長有2個字符是字母而且至少有一個是數字或特殊字符,如:橫槓,下劃線,或星號,如果使用超過8個字符的口令,第八個以後的被忽略。命令的歷使保存在用戶主目錄的.sh_history文件中,用戶可以通過命令來設定歷史條目的數量回調上一個的命令用ESC+K,如用用戶想回退多步,只需要每回退一步按一下K鍵。History命令可以回調以前使用過的命令:History –3命令別名:是命令的另外一個名字,方便記憶 如:alias dir=lsshell啟動文件登錄HP-UX時,有些命令會自動執行並設好環境,這些都是通過shell啟動文件來完成,有兩種:系統啟動文件:是對全部系統用戶都通用的任務 /etc/profile用戶啟動文件:叫做.profile並存放在用戶的主目錄下,在啟動過程中,系統啟動文件首先被執行,然後用戶的啟動文件被執行簡單的命令:我在哪兒:pwd當前的目期和時間:date我是誰:whoami所有登錄的用戶:who顯示所有的用戶並告訴啟動的時間,用戶正在做什麼:w(相當於uptime)系統名是什麼:uname –a打印標簽:banner josephxd日歷:cal用手冊頁獲得幫助:man cal可以在一行執行多個參數,中間有分號隔開:cal;date
  
  
  2.管理文件和目錄
  
  創建文件:
  1)touch filename
  2)vi filename
  3)cat > filename
  列舉文件
  ls,ll(長列表=ls -l),ls有很多選項,具體看手冊
  刪除文件
  rm filename,rm命令正常情況下沒有輸出,在刪除時一定要小心,因為被刪除的文件是無法恢復的,只有當文件不存的時候,才會報錯。
  顯示文件內容:cat filename 一次性顯示整個文件內容,用戶只能看到最後一頁
  more filename 一頁一頁顯示
  文件命名規則
  當你創建一個文件時,有一些規則制約著文件的命名:一般文件名可以有256個字符長
  1)可以有字母,數字和特殊字符組成
  2)注意大小寫敏感
  3)可執行文件沒能特殊的名字,文件權限顯示了哪個文件是可執行的或不可執行的。
  隱含文件:這種文件是以點開頭的,通常用於存儲配置信息,為了顯示隱含文件,使用ls –a命令。
  隱含文件在rm刪除一個目錄中的全部文件是受保護的,這個命令並不能刪除隱含文件。
  創建目錄:mkdir dirname,創建一個目錄後,用ls或ll命令驗證它的存在,注意當用ll長列表命令時,文件的第一個字符由d而不是-,表明它是一個目錄而不是常規文件。如果不希望顯示長列表而且需要區分文件和目錄,你可以使用lsf或ls –f命令,而且屏幕輸出只是在目錄名結尾附加”/”符號。
  刪除目錄:目錄用rmdir刪除,這個命令只刪除空目錄。如果目錄包含其它文件和目錄,必須用rm –rf命令。
  小心使用rm –rf,因為它刪除整個目錄而不會有警告。
  理解目錄結構:UNIX文件系統由目錄和文件構成,頂級目錄叫根目錄,/,一個目錄的上一級叫父目錄,下一級叫子目錄,父目錄和子目錄是相對而言的。以“/”開始的路徑名叫絕對路徑,以當前目錄開始的叫相對路徑名
  無論何時創建一個新目錄,兩條自動創建在新目錄裡,它們是”.”(參照當前目錄)和“..”(參照父目錄)
  遍歷文件系統:cd(change directory)命令用於移動到目錄樹中其它目錄下,對於絕對路徑和相對路徑都適用,
  拷貝文件:cp 源 目標,使用cp命令可以同時拷貝2個或多個文件,在這種情況下,目標必須是一個目錄名
  移動和重命名文件::1)移動mv myfile newfile 2)刪除文件 mv myfile /tmp/myfile 同時移動兩個文件的時候同cp
  小心使用mv,因為目標文件名和源文件名相同的時候,會完成這個操作且不警告,所以總以mv –I的格式使用。
  通配符:*通配任何字符,?只配配一個字符,[]這個通配符匹配在方括號中給定范圍的字符,在這個范圍內只有一個字符被選中。
  判定文件類型:file
  搜索文件內容:grep grep mark /etc/passwd,如果進行大小寫敏感的搜索,用grep –I,如果你對字符串在文件中出現的次數多少有興趣,使用grep –c,可以用grep –v反向選擇文件行,在這種情況下,所有不匹配的字符串模板的行會顯示出來。
  查找多個單詞:用雙引號把單詞括起來。如:grep “mark apple” /etc/passwd,在多個文件中查找字符串用:
  grep root /etc/passwd /etc/group
  查找文件:find find / -name “test”詳細查看手冊
  頭和尾:默認情況下:head列出文本文件的前十行,tail列出文本文件的後十行,tail –n 3 /etc/passed命令顯示文件的後三行,如果想看什麼內容被實時進程添加到文件,可以用tail –f命令。
  統計文本中字符,單詞,和行數wc /etc/profile (wc –l, wc -w, wc –c)
  鍵接文件:ln myfile abc
  
  3.環境變量用戶登錄系統,會啟動一個shell並且等待用戶輸入命令,為了執行命令,shell需要知道連接到系統的終端類型是什麼。同樣的,當用戶使用一個外部命令,shell需要知道應該到哪些目錄查找這個命令,在unix術語中,把這類信息叫shell環境。/etc/profile是系統管理員管理的系統啟動文件 .profile是用戶主目錄下的用戶啟動文件,兩者都可以設定環境變量當shell執行一個命令時,UNIX在內存中為這個命令創建一個進程,這個進程叫shell子進程,所有子進程從父進程繼承環境變量,但子進程不能修改父進程的環境變量,或者說壞境變理的修改會隨著子進程的結束而丟失。設置和顯示變量:當你使用POSIX shell時,可以通過在命令行後輸入變量名跟“=”和指定變量的值來設置變量,注意等號兩邊沒有空格,變量的值一定要以字符開頭,例如var3是合法的而3var不是。Echo 查看一特定shell變量的值,¥符號作為變量名的開始。¥告訴echo命令這個參數是一個變量,而不是簡單的字符串。Echo $var3列出所有的變量:¥set包含多個字段的變量:應當使用單引號或雙引號name=”joseph jiang”如果我們希望顯示一個變量和附加文本,如顯示了name變量後再顯示數字0,應當用echo ${name}0,而不是$name0修改變量:1)直接賦新值,2)在原有值上加一個值刪除變量 unset把命令輸出指定給一個變量$name=`whoami $echo $name,也可以在任何替換命令結果的地方使用反引號,echo “my login name is `whoami` 預定義的環境變量:PATH 包括命令搜索路徑,這些路徑必須用:隔開HOME包含用用戶主目錄PWD顯示當前目錄SHELL顯示登錄shell的絕對路徑TERM包含你的終端名或類型PS1包含主命令提示符PS2包含二級命令提示符,如果引用的命令不完整,你將看到的shell提示符就是PS2的值MANPATH包含man命令用於查找手冊頁的目錄列表TZ安裝時設的本地時區EDITOR黑認的編輯器導出shell變量:導出一個變量可以使它對於shell創建的所有其它子進程都是可見的$name=”joseph”export name設置命令提示符:$PS1=”MY COMPUTER=>”,一改變PS1的值命令提示符就立刻改變。必須導出PS1娈早使改變對子shell可見。
  
  
  4.輸入輸出重定向無論什麼時候啟動一個命令,都會打開三個數據流:標准輸入(stdin),標准輸出(stdout),標准錯誤(stderr)unix把所有打開的文件與一個稱為文件描述符的數字聯系起來,0用於標准輸入,1用於標准輸出,2用於標准錯誤。標准輸入(一般指用戶的鍵盤)是一個程序讀取輸入的地方,標准輸出是命令或程序顯示結果的地方(終端屏幕)錯誤一般也顯示在終端屏幕上,但總是能區分哪是stdout,那是stderr,unix shell可以按用戶的需要把數據流定位到一個文件,設備,或其他命令上管道是用於把一個命令的輸出發送給另一個命令的輸入。標准輸入重定向由“>”控制,$cat newfile >file1,注意這是另一種copy文件的方法,還有一種用法是$who > whofile如果重定向的文件名已經存在,那麼它將會被輹蓋而沒有提示。用cat連接多個文件:cat file file1 file2 >file3追加到一個文件:cat file1>>file2,這個命令表示新的file2還包含老file2的內容。重定向到一個設備,因為unix將所有設備視為文件:cat file1 /dev/console,這個文件的內容會顯示在屏幕上.當重定向輸出時,stderr並沒有隨著輸出自動重向,如果你調用的命令產生了錯誤,它仍舊會顯示在終端屏幕.重定向標准輸入,用”<”表示.從鍵盤以外的地方獲取輸入,$mail joseph 表示,ll xyz 2>abc同時重定向標准輸入,輸出和錯誤$cat unsortthis is number 1this is number 5this is number 3this is number 2可以用sort命令來組織這些行。$sort sort 2>error管道及使用方法 管道符“|“,當兩個命令用管道符相連時,第一個命令把它的輸出發送到管道而不是終端屏幕用管道做過濾器,who | grep mike$who | cut –f 1 –d “ “$who | cut –f 1 –d “ “ | grep mike 用管道進行數據處理$who |sort $who |moreT接頭,用於重定向到一個管道中的數據到多個地方,tee命令用於這個功能2>&1 發送stderr,stdout到同一個文件中
  
  
  5.VI編輯器vi使用模式:命令模式,底行模式,插入/輸入模式,當你啟動vi的時候,它是命令模式。如果不確定是那種模式,只需按Esc鍵一兩次,將會進入命令模式。$vi filename進入編輯器,是命令模式,按I字符轉入插入模式。保存文件是在命令模式下按:w命令。Vi不帶任何參數是建立一個新文件。可以在命令模式用:w filename來保存文件。如果已經打開一個文件,可以用:w filename保存成一個新文件.可以同時打開多個文件,$vi file1 file2 file3如果你修改了一個文件卻不想保存它,可以使用:q!命令退出vi編輯器,‘!“強制編輯器退出。移動光標:要移動光標,你必須切換到命令行模式l,h,j,k 右左下上空格  右移一個字符G   到文件最後一行Ng 到文件的第n行$    到當前行的結尾w 到下一個詞的開頭b到前一個詞的開頭e到詞的結尾H 到屏幕的第一行M   到屏幕的中間L    到屏幕的最後一行(    到句子的開頭)    到名子的結尾{    到段落的開頭}    到段落的結尾set number 可以指示vi顯示每一行的行號。句子的開頭和結尾是以”.”判斷的。段落是以一個空白行指出的。插入和刪除文本“i”從當前光標位置插入“I”當前行的開頭插入‘a”從當前光標的下一個字符處“A”從當前行的結尾處插入“o”從當前行的下一行插入新行“O”從當前行的上一行插入新行“x”刪除當前光標處所在位置上的字符“nx”。。。。刪除n個字符“X”從當前光標位置開始刪除一個字符。“dd” 冊除當前行“dw”從當前光標位置開始刪除到詞的結尾文本替換:r 仍保留在命令行模式替換當前字符s替換當前模式並進入插入模式R直至按下ESC才替換多個字符撤消和重做可以用”u”命令撤消剛才的修改,也可以用U命令重做對當前行的修改。為了重做被撤消的內容,你可以用“.”命令。剪切,拷貝,粘貼yy 拷貝當前行nyy 從當前行位置開始拷貝n行p  在當前光標位置後粘貼拷貝的文本P  在當前光標位置前粘貼拷貝的文本: m a 移動當前行並剪貼在第a行後面:a, bmc 移動第a至b行並粘貼在第c行後面:a, btc 拷貝第a至b行並粘貼在第c行後面導入一個磁盤文件到編輯器 :r filename從當前文件導出文本:    :3,47 w file3 把第3到47行寫至file3中vi編輯器有一個配置文件為.exrc,它存放在每一個用戶的主目錄下。這個設置是永久的
  
  
  6.正則表達式定位符:定位符是用來指定廣西在一行中的位置的字符。^字符是指定的起始位置。它用於在一行文本的起始匹配一個字符串,美元符號$是結尾定位符,用來指定結尾有特殊字符串的一行。^text在一行的開頭匹配單詞testtest$在一行的結尾匹配單詞test^test$匹配只包含一個單詞test的行^$匹配一個空白行^\^在一行的開始匹配^\$$在一行的結尾匹配$$grep ^node myfile 找出所有以node開頭的行$grep node$ myfile 找出所有以node結尾的行$grep ^$ myfile |wc –l 計算空白行$grep –v ^$ myfile 去掉文件中的空白行規避字符:為了指示shell不要展開一個字符為它的特殊含義,需要規避那個字符,因此在這個字符前面使用一個反斜槓(\),例如,如果你要查找一個$字符,使用grep \$ 查找反斜框,使用grep \\使用*號,匹配零個或多個處理的字符。使用范圍[…] $ls [a,b,c]* 列出所有以a,b,c字母開頭的文件 ls [^a,b,c]*,列出所有非a,b,c字母開頭的文件^A[a-z0-9]匹配所有第一個字符為”A”而第二個字符是一個小寫字母或數字的單詞使用單詞定界符\< 和\>匹配作為完為的單詞出玩的字符  $htrp \<[Tt]his\>擴展的正則表達式 egrep
  
  
  7.文件權限
  
  unix中有三類用戶:
  1)屬主 2)組成員 3)others
  一個用戶最多可以屬於16個組
  文件權限的類型:可讀,可寫或可執行
  文件權限的從左到右原則:如果一個文件的屬主對一個文件沒有執行權限而組有執行權限,這個屬主將不能執行這個文件。
  目錄權限:如果沒有設置目錄的讀權限,這個目錄的文件都不能被列表或訪問
  如果沒有設置目錄的執行權限,目錄裡的文件只能列出文件名,這意味ls可以工作而ll則不能工作.目錄的文件也不能被讀取或執行.如果只設定了執行權限而沒有沒置讀和寫權限,一個用戶可以用cd命令進入目錄
  為了賦予權限,我們在在用戶和文件之間使用”+”,為了取消一個權限,在用戶和文件之間使用“-”,為了確切地指定一個權限而不考慮原來的權限,我們使有“=”號。Chmod命令
  chmod u+x newfile
  chmod o-x newfile
  chmod a=r newfile
  chmod u+x,o-r newfile
  chown來改變一個文件的屬主
  改變一個文件的組所有權是chgrp
  多個文件名和通配符也可以用於chown和chgrp命令新屬主和組的名字必須分別在/etc/passed和/etc/group文件中表現出來,chown也可以進一步改變屬主和組。Chown jim:root file1
  為了改變一個目錄樹的組所有權或組,可以使用這兩個命令帶-R選項並用目錄名做參數。無論什麼時候改廀一個鏈接文件的所有權,鏈接指向的文件的所有權也被改變,為了避免這種情況,使用chown或chgrp命令帶-h選項
  umask設定用戶的缺省權限
  特殊文件權限
  設置用戶ID chmod u+s
  設置組ID chmod g+s
  粘連位 chmod u+t 如果對目錄設置了粘連位,用戶可以把這個目錄作為共享文件的公共區域。這個目錄下任何已設置了粘連位的文件只能被文件的屬主刪除。為/tmp目錄設置粘連位是非常有用的,這樣用戶可以安全地放置或刪除他們的臨時文件或共享文件.
  Find /usr/bin –perm –u+s –exec ll {} \;
  Find / -perm –u+s,g+w,o+w
  訪問控制列表:為用戶或組賦予或消除常規unix訪問權限聲明之外的權限.這個機制也叫目錄訪問控制(DAC),並且被HFS支持,但不被JFS支持。
  訪問控制列表可以用lsacl命令列出
  修改acl用chacl
  chacl “amry.%=rwx” myfile
  如果一個用戶是多個組的成員,所有由那個用戶創建的新文件屬於當前的組,如果這個用戶希望新文件屬於其它的組,newgrp命令臨時地改變當前的組成員關系。
  Id命令用於顯示當前的用戶和組id
  
  8.文件系統的層次.UNIX的文件和目錄是按照一種類似於樹型結構的體系來組織的。分為靜態目錄,和動態目錄。靜態一般包括系統安裝後就不再改變的信息。包括可執行文件,庫文件,應用程序等:/sbin /usr /opt,動態文件保存如大多數目志文件/var,同樣的,把臨時文件放置在/tmp目錄下。所有的文件系統都是參考考root來查看的。要記住root目錄和其它任何目錄與物理磁盤沒有任何關系。目錄結構只是一個邏輯的組織,與系統中磁盤的數目或這些磁盤如何分區無關。/dev設備目錄包含所有的設備文件,設備文件用於表示連接到系統的設備,每個設備文件有一個主號和次號,主號表示一個內置在HP-UX內核中的設備驅動程式,而次號表示設備的硬件地址和某個特殊設備的選項。一個實例表示一個同類型設備的邏輯數。如,在一個系統時可能有多個scsi磁盤,所有這些scsi磁盤使用同樣的設備驅動但表示為不同的磁盤實例並且有不同的次號。/dev目錄下的所有文件都是特殊文件。/etc/rc.config.d目錄中的文件是對系統啟動和關閉及其它服務器和守護進程的進行配置和控罎的文件./etc/opt是安裝在系統中的應用程序的配置文件。/home是用戶主目錄,用戶可以對主目錄作出自由的選擇,/home只是一個習慣.系統二進制目錄:包含需要引導時間的可執行文件.這個目錄也包含在啟動和關閉時需要的系統腳本.這個目錄也包含子目錄./sbin/init.d/stand 這是個保存HP-UX內核的目錄,內核的配置文件也在這個目錄下.內核文件是/stand/vmunix,而配置文件是/stand/system.另外在這個目錄下存放多個內核文件,這樣如果一個新的內核引導失敗,你可以用任何一個老的內核恢愎。它也包含用於重建新的內核用的/stand/bulic目錄.net這是為遠程文件系統加點預留的名字/opt應用程式目錄 配置文件/etc/opt log放在/var/opt下/tmp臨時文件目錄對於所有用戶都具有創建或刪除的權限,這個目錄裡的內容在重新啟動的時候會被清空,任何需要創建臨時文件的應用程序應在/var/tmp目錄下生成而非在/tmp/usr:這是一個重要的目錄,因為多數系統文件都放在這個地方,最重要的文件類型是與用戶有關的命令。庫。文檔和手冊頁。/usr/bin 這個目錄包含用戶的命令,應用程式和使用工具/usr/include包含用於程序設計的頭文件和包含文件/usr/lib用與編程的庫和與機器相關的數據庫文件,一個用戶在遇到編譯或運行錯誤的情況時,可能需要進入這個目錄查看特定的庫是否存在。/usr/sbin許多系統管理命令放在這裡/usr/share/man HP-UX命令的手冊頁。可變文件目錄包括:日志文件,spool文件,和應用程序創建的臨時文件,日志文件:/var/adm用於系統管理程序的日志文件,軟件安裝或刪除文件在/var/adm/sw目錄,用於cron的日志放在/var/adm/cron目錄,由syslog生成的日志文件在/var/adm/syslog目錄裡,崩潰信息保存在/var/adm/crash/var/opt應用程序運行時間文件和日志文件放置在這個目錄中spool文件 打印服務相關的spool存在/var/spool/lp,電子郵件的spool文件存入/var/mail.其它的存在/var/spool臨時var文件。Lost+found目錄。這些文件一般由用於檢查系統時在運行中和引導時一致性的命令fsck創建。每個文件系統包含一個lost+found目錄一些有關文件系統層次的有效命令:which 找出一個執行文件或命令在哪一個目錄。Whereis 搜索和定位源文件,二進制文件和手冊頁。用man –k命令搜索所有與關鍵字有關的手冊頁。Man –k mkdir,在使用這個命令之前必須用eatman命令創建/usr/share/lib/whatis文件,
  
  
  9.使用POSIX shell及作業控制
  
  ulimit(資源控制)是一個POSIX shell內部命令。用於限制用戶資源。
  Ulimit –a 列出當前的資源控制。
  兩次Esc用於命令行補齊。”Esc”+”=”
  歷史和命令重輸:history –3列出前三個命令,history 451 453列出一個命令范圍。為了重執行以前的命令,用帶命令號的r  r 451
  在命令行編輯功能中使用vi命令是由EDITOR環境變理控制的。
  替換:
  變量替換,變量名在命令行中和一個$符號一起使用。變量值在執行以前在命令行被替換。
  命令替換  echo $(date) echo `date
  波浪號替換 ~/ 被home變量換換
  設置終端參數:
  stty –a 顯示當前的設定   stty erase _設置下劃線為退格鍵,一般用戶在啟動文件中建立此設置。如果是所有的用戶,貼在/etc/profile中設
  作業控制:作業是在內存中運行的進程,作業控制是把作業從前台移到後台,掛起正在運行的作業。
  為在後台啟動一個作業,可以把&符號放在命令提示符後。可以用jobs命令列出在後台的作業。+表示是一個當前的作業,減號表是是一個當前作業之後的一個作業,帶一個-1開關顯示所有作來的PID,作業可以處於運行或停止狀態。
  掛起一個前台作業是 CTRL+Z(use stty設)
  恢復後台作業並把後台作業帶到前台
  jobs命令得到id, $fg %2 2表是id號。
  後台作業總是處在運行狀態。一掛起一個前台作業,它就進入stopped狀態。可以用bg命令啟動這個作業並保持在後台.
  
  10.shell編程
  
  sh shellname 可以執行一個沒有設置執行位的shell程式
  如果當前目錄沒有包含在PATH謎題中,便不能通過簡單地在命令行鍵入它的名字來執行這個程序,因此需要聲明這個文件的完全路徑../表示當前目錄
  調試程序 #! /usr/bin/sh –x,它在執行前把每一行顯示在終端屏幕上。這個方法用於標識那個程序引起了問題。
  變量是一個將數據傳送到shell程序的好方法
  命令行參數:保存在命令行中顯示參數位置的變量中,那就是為什麼這些變量也叫位置參數。存儲命令行參數的變量為:$0 (顯示命令本身的值)to $9 ,${10}
  $#命令行參數的總數,$*:用空格分隔的命令行參數列表 $?上一個程式的退出代碼
  echo命令:這個命令使用規避字符以格式化顯示的文本來增強可讀性
  \a報警字符
  \b退格
  \c禁止新行
  \f換頁
  \n擙入一個新的字符行
  \r回車
  \t插入一個tab字符
  \\\反斜線
  test命令 分支判斷是根據一個test的結果做出的 test可以對數字和字符數據也包括文件進行測試,test近回一個真或假的值。真的值是0,假的是1 $test “abc” = “ABC”在隱含查模中,沒有test 代之使用方括號,這個命令不在終端打印任何內容。
  測試數字的值,關系式:-eq -ne -lt -gt -le -ge
  測試文件:-d –f –s –r –w- e –l –nt –ot
  邏輯操作符:-0 或–a與 !非
  分支:if -then –fi,用test命令的幫助來檢查一個條件,如果是真,那麼動作被執行。如果是假,程序的的動作部分不被執行
  case var in
  parttion1)
  commands
  ;;
  parttion2)
  commands
  ;;
  parttion3)
  commands
  ;;
  *)
  commands
  ;;
  esac
  “|”在這裡經常被用於或操作,也可以用通通符
  
  11.高級shell編程:
  
  循環用於重復完成一個操作直到一個條件變成真(或假)時結束操作,test or let命令用於每一次循環時進行條件檢查。所有shell程序中的循環結構都由一個關鍵字開始被do-done關鍵字括起來的命令塊被重復執行
  for do done while do done until do done
  變量借助於let來增加或減少。 也可用let進行比較,
  隱含模式的let命令是用兩個賀括號代替let
  for do done循環在一個無素列表上執行.這個元素列表被一一指定給一個變量,變量的值在循環體內處理,直到所有的元素被處理且列表中再沒有元素.
  For var in list
  Do
  Command block
  Down
  #!/usr/bin/sh
  echo “list of all executalbe files in home directory”
  cd $HOME
  for F in *
  do
  if [-x $f]
  then
  ll $F
  fi
  done
  for day in Sunday Monday Tuesday Wednesday Thursday Friday Saturday
  do
  echo “the day is :$DAY”
  done
  修改文件的訪問時間
  for file in *
  do touch $file
  done
  中斷一個循環
  break命令立即停止一個循環的執行並把控制權轉交給緊隨關鍵字done的命令,continue命令與break不一樣,它跳過循環的剩余部分並把控制傳給循環的下一次開始點。Exit命令完全終止這個程序,它返回一個在程序中作為可選參數提供的退出代碼。如是exit沒有任何參數,它返回前一個命令執行的退出代碼。當遇到一個嚴重的錯誤並且繼續執行這個程序將導致錯誤時,這個命令被使用。
  文本處理
  使用sed流編輯器,在一次性編輯大量文本時很有用,如在一個大文件中搜索一個單詞並替換成另一個單詞的情況,
  $sed s/echo/ECHO/g testfile 把文件中的echo換成ECHO
  把當前目錄中所有文件中的echo換成ECHO.
  #!/usr/bin/sh
  for file in *
  do
  cat $file | sed s/echo/ECHO/g >tempfile
  cp tempfile $file
  done
  rm tempfile
  更詳細的請參考man
  使用cut,用於從一行文本中提取數據的特定部分,如果是字斷格式,你可以提取特定的字段,如果想列出你的第統中的所有用戶,可以在/etc/passed中使用該命令
  $cut –f 1 –d : /etc/passwd or $cat /etc/passwd |cut –f 1 –d : -f1指想提取字段號1,-d:選項顯示數據中的字斷使用:分隔。
  還用以使用cut命令從一個文件中提取一定數量的字符。如用/etc/passwd的每一行中提取前8個字符:
  cat /etc/passwd | cut –c 1-8
  給系統中的每一個用戶發一個mail信息
  #!/usr/bin/sh
  for user in $(cut –f 1 –d : /etc/passed)
  do
  mailx –s “test mail” $user   done
  sleep命令:用於把執行掛起一段特定的時間。把秒數作為參數提供給sleep.
  12.系統管理器SAM給你提供了為用戶定義受限制區域的功能,一個用戶只能進入給他指定的SAM區域。一個系統管理的基本部分是故障排除。Sam不是為這個目的設計,作為一個系統管理員,對HP-UX的經驗和知識深度在故障排除過程中將有助於你SAM有文本模式和圖形模式.SAM的日志(samlog)中修配存了所有的記錄  /var/sam/log/samlog,來自samlog的原始文件是很難讀的,更多情況下,是進入SAM中的option--àview SAM log來看.Sam日志會增長,超過一個限制,SAM會把它拷貝到samog.old,並建立新的samlogSAM帶有一個/usr/sam/bin/samlog –viewer用以查看samlog一般情況下,只有root用戶可以使用SAM可以配置SAM為一些非root用戶和組提供它的功能的一個子集,為了這個目的,你需要使用root登錄並用 SAM –r在受限制的SAM生成器模式下啟動。在一個復雜且大型的計算環境中給一些系統用戶受限制的root訪問,這是一個非常有用的工具。
  
  
  13.安裝HP-UXHP工作站和服務器的介紹,現在所有的系統都叫作9000系統服務器和工作站。其中L,A,R等是入門級,K,N是中檔,V系列是高檔型。這些都是從性能,實用性,擴展性考慮的。HP-UX有32位和64位兩種,不是的忣的HP服務器和工作站都可以動行64位,在安裝前,你需要知道有哪種CPU並且是否支持64位版本操作系統.PDC用於在引導時檢查並確認硬件配置,它檢查不辨菽麥顯示什麼硬件設備對系統有效,使用PDC來測定連接到系統的磁盤和CDROM,在檢查設備之後,PDC從主引導設備引導一台機器。可以中斷自動引導過程來檢查在你的系統中什麼命令有效或從主引導設備之外的一個設備引導。當你打開一台HP機器,PDC開始執行並檢查系統內存和外設,在啟動從主引導設備自動引導前,它暫停10秒充許用戶中斷引導過程。在這裡可以看到PDC的命令。Boot boot from specified pathPath display or modify a pathSEArch Search for boot device Configuration menu Displays or sets boot valuesInformation menu displays hardware informationService menudisplays services commandsHelpdisplay help for menu or cmdResetrestart the system命令可以簡寫在一些系統上,search的輸出可能不一樣,這個命令顯示路徑號,設備路徑和設備類型,路徑號引用一個特定的設備設備路徑顯示了設備相關的物理路徑,表示了哪個設備連接到了系統的插槽。Random Aclearcase/" target="_blank" >ccess Media顯示了磁盤和CD rom驅動器,Sequential Access Media顯示一般用於磁帶驅動器。哪果你的CDROM是P6表示,boot命令如下:BOOT P6,你也可以用設備路徑來代替設備號來引導系充,在調用boot命令後,系統問你是否希望和初始化系統加載(LSL)交互,你必須回答NO. 如果在安裝過程中要使用LVM方案,可以把多個磁盤放入一個券組,在安裝過程中配置了根卷組VG00,而且可以決定有多少個磁盤包括在這個卷組中,建議根卷組中最多包含4個磁盤。/stand文件系統用於HPUX內核而且它強制為HFS類型.缺省時,HP-UX創建一個名為vg00的卷組並在它裡面創建八個邏輯卷。可以根據需要調整大小。初始化系統配置:假設從系統標簽中選擇了Set System Parameters at First Boot,在安裝過程的結尾,重新生成了HP-UX內核並重新啟動系統,系統在重啟動後開始初始化配置,通過set_params命令來執行。系統要求提供系統名,時區,root口令,和IP配置數據.系統名不超過64個字符,僅包含字母,數字,下劃線,dash,主機名的第一部分不超過8個字符,以便和uname命令兼容。在安裝HP-UX時,可以在系統初始化配置中留下很多沒有完成的地方,為了重啟這一過程,使用set_params命令。如果只想配置一個參數,用帶適參數的set_params命令(hostname,timezone,date_time,root_passwd,ip_address,addl_network)。如果想設置所有的參數,用set_params initial系統安裝完成之後,如果有一些硬件需要額外的沒有內置在內核中的軟件驅動,就需要安裝這些驅動,在安裝完任何驅動之後需要重新生成內核,
  
  
  14.系統啟動和關閉保存在ROM中的引導代碼被執行並完成自檢和一些初始化任務,接著裝入HP-UX內核並把控制權轉交給它當加電或重新啟動一台機器的時候,它分為兩個主要的部分:1,引導ROM啟動2,HPUX啟動引導順序分為如下部分:1加電或重啟2PDC執行並完成自檢,包括內存和CPU檢測,PDC也檢測連接到系統的外設.3PDC初始化控制台來顯示消息,查找用於引導系統的主引導路徑,引導路徑是用做硬件到引導設備的磁盤的路徑4PDC從引導路徑裝入並執行初始化系統裝載器,在啟動過程的這個階段,boot ROM的任務完成.5ISL加載叫做hpux的第二個系統加載器,它保存在磁盤的引導區內6hpux把HPUX內核/stand/vmunx加載到內存中並把控制權轉交給內核7內核啟動swapper進程然後啟動init進程8init讀取它的初始化文件/etc/inittab.並初始化大多數的操作系統守護進程和其它進程,它把系統帶入一個適當的狀態。使之有效。從預設設備引導  有些用戶為了冗余和穩定性使用了磁盤鏡像,兩個磁盤有完全相同的數據,引導設備也可以鏡像。為了配置一個預備的引導設備,可以用configure命令。為了手工從預備磁盤設備上引導,使用boot alt命令。穩態存儲器:保存如下信息:主引導路徑,預備引導路徑,控制台,autoboot,autosearch 引導到單用戶:1)在V型機器上,在pdc提示符下:boot pri –is在其它機器上,在pdc提示符下:boot pri-------y------hpux –ishpux裝載器的用法:ISL>hpux /stand/vmunix.old 從其它的內核引導系統ISL>hpux –is 引導到單用戶模式ISL>hpux –is /stand/vmunix.old裝載HPUX內核swapper:swapper有一個等於0的進程id,它管理用於換入和換出的內存。/sbin/pre_init_rc這個文件中最重要的是fsck,在任何用戶開始使用之彰,它檢查並修復根文件系統。Init進程:它總是以進程ID1啟動,在啟動後,它讀取它的配置文件/etc/inittab並在action域中查找initdefalut條目。Init進程的主要工作:從/etc/inittab 文件中讀取initdefault參數使用/sbin/ioinitrc來初始化內核數據結構運行/sbin/bcheckrc運行/sbin/rc並把系統帶到缺省的運行級運行級:0-6,s,S,總共8個動行級。0表示關機,s是單用戶,S也是單用戶,惟一的區別是你可以從作為系統控制台的終端登錄。1啟動一些基本的系統進程並啟動文件系統,但還是在單用戶模式。這個級別也用於系統管理任務。2多用戶級,但不啟動NFS3多用戶級,啟動NFS456改變運行級:init 用who –r看當前的運行級添加在引導時運行的程序到/sbin/init.d目錄。這個目錄包含所有守護進程和服務的腳本,執行腳本包含四個作為傳遞給這個腳本的命令行參數的主要部分 star_msg 當啟動這個腳本的時候顯示在控制台stop_msg 當關閉這個腳本的時睺顯示在控制台start 啟動這個程序的命令stop 關閉這個程式的命令HP-UX有一個名為/sbin/rcn.d的目錄,這裡n表示一個運行級,這些目錄叫做定序器目錄。可以在這些目錄中放置一個腳本鏈本。如果想在運行級3啟動腳本,如果想在運行級3啟動一個目錄,則在/sbin/rc3.d目錄中放置一個鏈接。每一個鏈接由S或K開頭,S開頭表示當系統進入這個運行級的時睺執行腳本,K開頭表示當系統進入這個運行級的時候關閉腳本。啟動號和關才號不必相同,Kill鏈接應該在比相應start鏈接低的運行級中腳本配置文件放在/etc/rc.config.d/目錄下。它給變量賦值1,表示cron守護進程被啟用。賦值0表示禁用。如果對一個配置文件修改想恢復它,可以從/usr/newconfig/etc/rc.config.d目錄拷貝原始文件關閉系統: shutdown –r 在關閉後重啟 –h在關閉後停止系統 -y,不需要任何交互響應。#shutdown –h –u 0shutdown調用/sbin/rc腳本,它在停止系統之前按順序使用定序器腳本來關閉所有守護進程。/etc/shutdown.log文件保存了一個關閉或重啟系統的日志。關閉和重啟命令:reboot命令刪除所有的進程而不是平穩地終止它們,會加快關閉過程,但當其他用戶在重啟時正在系統上工作就可能引起起數據丟失,如果工作在單用戶模式,使用reboot是安全的shutdown.allow充許一些系統用戶執行shutdown命令。每一行包含一個系統名和用戶名
  
  
  15:軟年和補丁管理
  
  SD-UX軟件發布器,不只是一套命令和工具集,而是定義了如何對軟件打包。捆綁,拷貝安裝和刪除的系統。在一個網絡環境中,SD-UX用於建立一個集中的軟件服務器,任何網絡上的其他系統可以按需要安裝軟件。
  主要功能:
  安裝軟件
  刪除軟件
  列出已安裝軟件
  確認已安裝軟件
  拷貝和打包軟件
  配置軟件
  軟件包的結構:在SD-UX中軟件被組織成一個部件或對象的層次結構,這些部件是fileset,子產品,產品,包。
  文件集是文件和一些控制腳本的集合。是SD-UX中軟件打包層次結構中的基本條目,一個文件集只能屬於一個產品但它可以包含在很多的子產品和包中
  子產品,包括多個文件集,最好把邏輯相關的文件集組合到一個子產品中,一個文件集可以是多個子產品的成員
  產品,產品是文件集和子產品的超集,缺省時,SD-UX命令用於處理產品,例如,一個應用程序是一個產品,一個產品可以有多個版本.
  包,包一役由HP-UX打包用於軟件的發布,包包含屬於不同產品的文件集,一個產品不必在一個包中,因為包可以有不同產品的部分
  軟件倉庫是文件集.產品和包的存放位置.一個軟件倉庫可以是用於發布軟件的磁盤上的目錄,一個CD-ROM或磁帶,缺省的軟件倉庫目錄是/var/spool/sw,但可以使用任何一個目錄作為軟件倉庫。使用SD-UX命令,可以從一個軟件倉庫添加或刪除軟件部件,在一個服務器上為不同的就用程序創建多個軟件倉庫是可能的。軟件倉庫可以在網絡中的一台中心服務器上維護
  列出已安裝的軟件
  swlist列出所有的軟件包不所有不是一個軟件包的產品
  -l bundle 只列出包
  -l products 只列出產品
  -l fileset 只列出文件集
  -d /var/spool/sw 列出軟件倉庫中的軟件
  -l file x11 列出所有X11產品中的文件
  -d @ hp1:/mydepot 列出網絡上其它主機的軟件倉庫中的軟件
  安裝新軟件:swinstall命令用於軟件安裝,是圖形界面,swintall將自動掛起cdrom
  如果想從一個特定的軟件源安裝:swinstall –s /dev/rmt/0m,swinstall的所有動作記錄在/var/adm/sw/swinstall.log
  SD-UX守護進程和代理,swagentd,如果這個進程沒有運行,就不能開始安裝過程。此守護進程在級2起動。所以如果你在一個單用戶模式,就不能安裝軟件。但是可以使用如下命令在單用戶模式手工地啟動該守護進程。
  /sbin/init.d/swagentd start/stop
  已安裝產品數據庫:IPD(/var/adm/sw/swremove.log),swlist命令查詢這個數據庫來列出已安裝的軟件。同樣地,當軟件被swremove命令刪除時,這個數據長級來反映被刪除的軟件。
  Swremove 刪除軟件。注意只通過刪除軟件所在的目錄並不能刪除該軟件。因為軟件條目始終保存在IPD.軟件刪除過程被記錄在/var/adm/sw/remove.log文件中。
  查找並刪除無用的文件集 :freedisk,命令交互式刪除長時間沒有使用的軟件.
  Swverty命令用於確認安裝在系統中或軟件倉庫中軟件的存在性和完整性。當用-d選項時,它操作一個軟件倉庫。日志放在/var/adm/sw/swverify.log
  管理軟件倉庫:
  添加包到軟件倉庫:swcopy –s /dev/rmt/0m @ /var/spool/sw
  從軟件包中刪除包:swremove –d * @ /var/spool/sw
  列出軟件倉庫中的包:swlist –d @ /dev/rmt/0m
  HP-UX補丁.補丁用於如下目的:
  給HP-UX操作系統或產品添加新功能
  添加新硬件的支持
  修補操作系統的漏洞
  所有補丁以PH開頭,後面兩個字符顯示了補丁的類型,有一個下劃線和一個有四五個數字的補丁號
  命令補丁:CO
  內核補丁:KL
  網絡補丁:NE
  子系統補丁:SS
  一般在安裝補丁後要重啟操作系統
  swlist –l product PH* 列出所有的補丁。
  安裝和刪除補丁:下載一具補丁後,首先要sh命令unshare它。
  
  後面還有待續。

Copyright © Linux教程網 All Rights Reserved