2012年1月17日 星期二

HP-UX自學筆記:基礎篇


  一、UNIX與HP-UX的簡單介紹
  History of the UNIX Operating System
  1969年,UNIX作業系統源于貝爾實驗室。貝爾實驗室的工程師Ken Thompson在Rudd Canaday、Doug Mcllrow、Joe Ossana和Dennis Ritchie的協助下,編寫了一個能實現普通應用共用時段的小系統,這個系統開始引起人們的注意。
  Features of UNIX
  Kernel
  Kernel(內核)就是作業系統。它負責對可用資源進行管理和對硬體進行存取控制。
  shell
  shell是一個命令直譯器。在命令提示符後輸入命令,發出後會被執行。使用者通過shell與電腦通信(shell解釋使用者輸入的命令並交給內核執行,內核訪問、控制電腦硬體系統)。shell接收使用者在鍵盤上鍵入的內容,並把這些內容翻譯成內核可以理解的形式,然後系統執行這個命令。系統與內核是分離的。我們可以選擇自己喜歡的shell。UNIX系統的四種shell:Bourne shell(/usr/old/bin/sh),AT&T UNIX系統最初提供的shell,由貝爾實驗室的Stephen Bourne開發而成。C shell(/usr/bin/csh),基於BSD的UNIX系統提供的shell,由加利福尼亞大學伯克利分校的Bill Joy開發而成。人們將這個shell稱為California shell,縮寫為C shell。Korn shell(/usr/bin/ksh),這是貝爾實驗室新的開發成果,由David Korn開發而成。POSIX shell(/usr/bin/sh)遵從POSIX,包括程式設計語言與命令直譯器。
   層次性的檔案系統
     存儲在磁片上的資訊放在某種容器上,這種容器叫做檔。每個檔都有一個名字,用戶通過指定名字訪問檔。一個UNIX系統一般有數以百計的檔,用戶可以用另外一種容器——目錄,將他們的檔組織成一個邏輯組,在UNIX系統中,目錄可以用來存儲檔或其它目錄。
  多工系統
  在UNIX系統中可以同時執行多個任務。就單獨一個終端而言,使用者可以執行幾個任務。CPU按時間片分給相應的進程。
  多使用者系統
  UNIX對多用戶的支援使得多個用戶能在同一時間登錄和使用系統,多個終端和鍵盤可以同時與一台電腦建立聯接。
  The UNIX System and Standards
  UNIX的可修改性非常強,大部UNIX從AT&T UNIX、BSD UNIX或者兩者結合形成的UNIX中衍生而來,為了提高不同UNIX的的相容性,人們制定了UNIX作業系統環境的標準。這些標準可以提高UNIX的可攜性、互用性與可擴展性。
  What Is HP-UX?
  
  HP-UX 11.0起源於AT&T System V UNIX系統 。HP還提供了一些UNIX的附加特徵:X Windows和Motif使用者圖形界同;CDE(Common Desktop Envioronment)——基於Motif的用戶界同;Visual Editor;製圖語言;對本地語言的支援;基於功能表的系統管理工具(SAM)
  二、UNIX的基本使用
  Logging In and Out
  在登錄到UNIX過程中,有些終端顯示一段時間後會轉入休眠狀態,此時只需要按一個鍵就可以重新啟動它。如果沒有出現login提示符或者出現亂碼,按回車鍵,如果沒有起作用,按Breakspace鍵。這個鍵是讓電腦用另一個速度與你的終端聯接。“login:”後面輸入要登錄的用戶名,“password:”後輸入登錄密碼,密碼不顯示出來,在輸入用戶名和密碼時如果輸入錯了,按下#(Shift+3)會往回刪除一個字元,按下@(Shift+2)刪除整行。因為在此時Backspace鍵沒有刪除功能。
  “$”標記是Bourne shell、Korn shell和POSIX shell命令直譯器使用的標準提示符。
  使用者的密碼
  密碼應該滿足以下條件:至少6個字元;前6個字元中至少有2個字母;前6個字元中至少有1個不是字母。
  The Shell-Commmand Interpretation
  在登錄的過程中,系統將為使用者啟動一個shell,負責顯示提示符和翻譯你鍵入的命令。
  Command Line Format
 
    Syntax:
  $command [-options] [arguments] Return(Enter,按下回車鍵)
  
  “$”,已經知道是UNIX shell的提示符,後面緊跟著是UNIX shell命令;“#”是root用戶登錄時的shell提示符。一定注意命令與參數之間的空格,還得注意字母的大小寫,在UNIX系統中,是區分大小寫的。如果在一個命令列上輸入多個命令,它們之間得用“;”分開。
  Example(Operate on Fedora 15):
  The Secondary Prompt
  交互命令會出現二級提示符。
  The Manual
  
  HP-UX參考手冊
  The Online Manual
  使用man命令可以查看shell命令的幫助手冊。
  Some Beginning Commands
  id     Display you user and group identifications.
       who    Identify other users logged on the system.
  data   Display the system time and date.
  passwd Assign a password to your user account.
      echo    Display simple messages to your screen.
  clear  Clears terminal screen.
  write  Sends messages to another user's terminal.
  mesg   Allow/denies messages to your terminal.
 
  Example(Operate on Fedora 15):
  [senya@localhost ~]$ who
  liveuser tty7         2011-09-16 07:27 (:0)
  liveuser pts/0        2011-09-16 07:43 (:0)
  senya    tty1         2011-09-16 07:58 (:1)
  senya    pts/1        2011-09-16 07:59 (:1)
  [senya@localhost disk1]$ whoami
  senya
  [senya@localhost disk1]$ who am i
  senya    pts/1       2011-09-16 07:59 (:1)
  [root@localhost liveuser]# id
  uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)   context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
  三、CDE的使用
  CDE:Common Desktop Environment
  Front Panel Elements
  前面板是在每個工作區螢幕底部的一特殊視窗,包含常用的控制項、指示器及級使用者來管理會話過程所有內容的子面板。
  Front Panel Pop-up Menus
  彈出式功能表是在一個應用程式視窗或工作區中按滑鼠右鍵彈出的功能表。在前面板裡每個控制項都有一個彈出式功能表,各有不同。要顯示在前面板中的彈出式功能表,把滑鼠指標移到某控制項上方,按滑鼠右鍵即可。
  Workspace Switch
  在預設情況下有四個工作區,每個工作區都佔據整個螢幕。工作區切換台由一定數目的按鈕組成,按這些按鈕能夠在工作區之間切換。代表當前工作區的按鈕看上去好像陷下去一樣。
  File Manager
  檔案管理員使用戶不用學習複雜的命令就可以對檔案系統中的檔進行管理。
  四、遍歷檔案系統
  What Is a File System?
  UNIX系統用檔案系統來管理和組織檔和目錄。檔通常是資料的容器,而目錄則是檔和其他目錄的容器。在一個目錄下的目錄被稱為子目錄。(這與Windows作業系統是一樣的。)
  The File System Hierarchy
  
  HP-UX 10.0的檔案系統被重新安排為兩個主要部分:靜態檔和動態檔。
  靜態檔
  這些檔是共用的。這部分有三個很重要的目錄:/opt、/usr和/sbin。/opt 包含應用程式和產品。HP-UX系統的開發者和管理員用這個目錄安裝新的產品或本地使用的應用程式。/usr/bin 包含了UNIX系統基本的操作和檔管理命令。/usr/sbin,包含了系統管理命令。只有超級用戶才可以使用其中的命令。/usr/lib,這個目錄包含應用程式所用的文檔和共用庫。/sbin,包含在啟動和關閉系統時起關鍵作用的命令。
  動態檔
  這些檔是個人所有的。這部分有七個很重要的目錄:/home、/etc、/stand、/tmp、/dev、/mnt、/var。
  /home UNIX系統中的每個使用者應該有自己的帳號。/home目錄下,通常每個使用者帳號都有一個子目錄。使用者對自己目錄下的內容有完全的控制權。
  /etc 存放著許多系統設定檔。/stand/vmunix 該檔存放著系統內核程式。打開系統時,這個程式會被載入記憶體,控制所有的系統操作。
  /tmp 這個目錄通常用來做作業系統的暫存檔案存放場,因為系統常要產生中間檔或者工作檔。UNIX系統有一個約定:系統可以在任何時候刪除任何tmp目錄下的檔。
  /dev 這個目錄包含著代表硬體設備的檔,這些硬體設備可能已經聯接到UNIX系統中。
  /mnt 這個目錄用來載入其它設備
  Path Names
  /home/user2/myfile1
  Some Specail Directories
  .和..目錄 當一個目錄被創建時,該目錄下有兩個條目——.和..。在使用相對路徑名時這兩個目錄常被用到,..是指上一級目錄,.是指目前的目錄。
  Basic File System Commands
  pwd(Present Working Directory) Display the directory name of your current location in the hierarchy.
  ls  Sees what files and directories are under the current directory.
    cd  Changes your location in the hierarchy to another directory.
  find Finds files.
  mkdir Creates a directory.
  rmdir Removea a directory.
  Example(Operate on Fedora 15):
   [liveuser@localhost ~]$ ls -l
   total 32
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Desktop
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Documents
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Downloads
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Music
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Pictures
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Public
   lrwxrwxrwx. 1 root     root       14 Sep 16 11:32 senya -> /var/senyafile
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Templates
   drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Videos
  五、文件管理
  What Is a Files?
  A container for data or a link to a device. Every file has a name and may hold data resides on a disk;There are serveral different types of files:Regular files:text,data、drawings、executable programs;Directories and Device files.
  What Can We Do with Files
  ls  Look at the characteristics of a file
    cat Look at the contents of a file
    more Look at the contents of a file,one screenful at a time
    lp   Print a file
    cp   Make a copy of a file
  mv Change the name of a file or directory or Move a file to another directory
    ln Create another name for a file
  rm  Remove a file
  File Characteristics
  For Example:
      [root@localhost mnt]# mkdir disk1
   [root@localhost mnt]# cd disk1
   [root@localhost disk1]#
    $ls -l
    -rw-r--r-- 1 user1  man1  49   Jul 24 08:06 file1
      drwxr-xr-x 2 user1  man1  1024 Jul 24 12:03 test
    對上面內容進行解釋:
  -(檔案屬性:-表示這是一個檔)rw-r--r--(這一組表示檔的存取權限) 1(聯接數) user1(檔所有者的使用者標識)  man1(能訪問檔的組的標識)  49(檔包含的位元組數)   Jul 24 08:06(檔最後一次被修改的時間) file1(檔案名)
    d(檔案屬性:d表示這是一個目錄)rwxr-xr-x(這一組表示檔的存取權限) 2(聯接數) user1(檔所有者的使用者標識)  man1(能訪問檔的組的標識)  1024(檔包含的位元組數) Jul 24 12:03(檔最後一次被修改的時間) test(目錄名)
  六、文件存取權限
  Who Has Access to a File?
  ◆The UNIX system incorporates a three-tier structure to define who has access to each file and directory:
  user  The owner of the file
    group A group that may have access to the file
    other Everyone else
  ◆The ls -l commmand displays the owner and group who has access to the file.
   UNIX系統對檔提供了三層存取控制結構:user 代表檔的所有者;group 代表可能訪問該檔的組;other 代表系統中所有的其他使用者。
  Types of Access
  There are three types of access fo each file and directory:
    read(r)
  files:    contents can be examined.
    directories: contents can be examined.
  write(w)
  files:    contents can be changed.
  directories:  contents can be changed.
  execute(x)
  files:    file can be used as a command.
  directories:  Can become current working directory.
  chmod——修改檔的許可權
  chmod命令用來修改檔或目錄的許可權,且只能由檔的所有者(或root——系統管理員)修改許可權。因此,在UNIX系統中,設置檔的存取權限是檔所有者的事情,而不是系統管理員的責任。三種許可權:r讀許可權,w寫許可權,x執行許可權。可以選擇修改的方法:+增加許可權;-去掉一部分許可權;=將許可權設置為。可以指定組別:u用戶(文件的所有者)、g組(與檔相關聯的組)、o其它使用者(系統中所有的其它使用者)、a所有使用者(系統中每一個使用者)。
  chmod命令支持用十進位數字字的形式分配檔訪問限制,這種方法已經過時,但也常用。
  $chmod 777 file
  $chmod 000 file1 取消file1檔所有的存取權限
  chown——改變檔的所有者
  chgrp——改變檔所屬的組
  su——Switch User Id(改變使用者標識)
    newgrp——可以改變組標識號 
  Example(Operate on Fedora 15):
   [root@localhost senya]# ll
   total 4
   -rw-r--r--. 1 root root 37 Sep 16 16:13 myscript1.sh
   [root@localhost senya]# chmod u+x myscript1.sh
   [root@localhost senya]# ll
   total 4
   -rwxr--r--. 1 root root 37 Sep 16 16:13 myscript1.sh
  在這個例子中給檔myscript1.sh的所有者增加了執行許可權。
    umask命令——Permission Mask(文件許可權遮罩)
  新建檔的默認許可權一般為rw-rw-rw-,這意味著在系統中的任何使用者都可以修改這個新建檔的內容。新建目錄的預設許可權一般為rwx rwx rwx,這意味著在系統中的任何使用者都可以進入這個目錄、刪除這個目錄下的任何東西。為了保護新建檔和資料夾,應當使用umask命令。
  touch——Update Timestamp on File(更新檔的時間戳記)
  touch命令可以用來創建一個新的空白檔。如果被指定的檔已經存在,touch僅僅更新檔的時間戳記,對檔內容沒有任何影響。
 
  Access Control Lists
  lsacl  list the ACL for a file
  chacl  change the ACL for a file
  用chmod修改許可權將刪除該檔的所有的ACL;ACL 只在hfs檔案系統上得到支持,HP-UX11.00的默認檔案系統不是hfs。
  小結:由於沒有機器,不能安裝HP-UX,命令都是在Fedora 15上練習的。這一部所學習的命令是最基本的系統命令了,一定得熟練操作,記住常用命令選項,實在記不住就使用man手
 七、shell的基礎知識
 
  What Is the Shell?
  shell作為程式,是一個具有交互性的命令列解譯器。它獨立於作業系統。這種設計思路使用戶可以靈活地選擇最適合使用者要求的介面。shell的作用在於等你鍵入命令,執行一些特定的功能,然後將經它解釋的命令傳到作業系統(內核)執行。當使用者登錄到UNIX系統時,shell會先為你的終端會話程序定義一些特定的特徵,然後顯示使用者的提示符。這個提示符在POSIX、Bourne和K shell中被預設為一個$符號。C shell的默認提示符是一個百分號%。
  Commonly Used Shells
  /usr/bin/sh    POSIX shell
  /usr/bin/ksh    Korn shell
  /usr/old/bin/sh Bourne shell
  /usr/bin/csh   C shell
  HP-UX的默認shell是POSIX shell。POSIX是一個遵從POSIX標準的命令程式設計語言和命令直譯器,位於/usr/bin/sh。它可能執行終端和檔中讀來的命令。
  POSIX(Portable Operating System Interface of Unix) Shell Features
  ●A shell user inteface with some advanced features:
   -Command aliasing
      -File name completion
      -Commnad history mechanism
      -Command line recall and editing
   -Job control
      -Enhanced cd capabilities
   -Advanced programming capabilities
  Aliasing
  alias命令 別名是命令的一個新名字。使用別名可以縮短長命令列,創建新的命令,用別名命令的功能替換原標準命令的功能從而使用標準命令執行起來跟以前不同。別名可以是一個字母或者一個簡短的單詞。如,常用命令ps -ef,我們可以創建一個一別名:psf,來代替ps -ef。
$alias psf='ps -ef'
  ualias命令用來關閉別名。
  Example(Operate on Fedora 15):
[liveuser@localhost ~]$ alias
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --showtilde'
[liveuser@localhost ~]$ alias cls='clear'
[liveuser@localhost ~]$ alias dir='ls -l'
[liveuser@localhost ~]$ dir
total 32
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Desktop
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Documents
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Downloads
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Music
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Pictures
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Public
lrwxrwxrwx. 1 root     root       14 Sep 16 11:32 senya -> /var/senyafile
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Templates
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Videos
[liveuser@localhost ~]$ ls -l
total 32
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Desktop
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Documents
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Downloads
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Music
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Pictures
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Public
lrwxrwxrwx. 1 root     root       14 Sep 16 11:32 senya -> /var/senyafile
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Templates
drwxr-xr-x. 2 liveuser liveuser 4096 Sep 16 11:22 Videos
[liveuser@localhost ~]$ unalias dir
  
  File Name Completion
  當訪問一個帶長檔名的檔時,檔案名補齊非常方便。當輸入的字元足夠唯一確定該檔案名時,按Esc Esc,這時POSIX shell會補齊檔案名剩餘的部分。
  Command History
  POSIX shell維護著一個歷史檔,該檔存儲著曾經輸入的命令。也可以重輸入這些命令。UNIX系統對歷史檔的維護跨越各個登錄進程。history命令會顯示最近輸入的16個命令,每行用命令號開頭。當重輸入命令時,指定該命令相應的命令號即可。HISTSIZE參數定義可以訪問歷史命令的數日。
  Example(Operate on Fedora 15):
[liveuser@localhost ~]$ history
    1  ps
    2  ps -ef
    3  ps -a
    4  ps -u
    5  ps -au
    6  man ps
    7  qqq
    8  clear
    9  history
[liveuser@localhost ~]$ history +3
    8  clear
    9  history
   10  history +3

  Re-entering Commands
  Type r c to re-enter command number c.

    Recalling Commands(回檔命令)
  Command Line Editing
  The User Environment
  ◆Your environment describes your session to the programs you run.
  使用者環境描述了會話過程的許多內容,其包括以下資訊:
  ■主目錄的路徑名
  ■在哪裡存放email
  ■工作的時區
  ■登錄的身份
  ■shell從哪裡搜索命令
  ■終端類型和大小
  ■應用程式所依賴的其它東西
  例如,命令vi和more命令需要知道使用的終端類型,這樣它們才能正確地格式化輸出結果。用戶環境可以比喻為辦公室環境。使用者環變數值存儲在/etc/profile或.profile中。/etc/profile用於所有使用者環境變數。env命令可以查看用戶環境。
  Example(Operate on Fedora 15):

  Setting Shell Variables
  
  Syntax:name=value(變數名=變數值)
  兩個重要的變數:PATH與TERM。PATH變數代表的是shell搜索命令的一系列目錄。這要只需要鍵入一個命令名,不用輸入該命令的完全路徑名。例子:PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin。這個PATH表明,鍵入一個命令,shell將首先在/usr/bin搜索命令,接著是/usr/contrib/bin,以此類推,直到在這些目錄找到或都找不到該命令。如果鍵入的命令在任何一個PATH目錄中都找不到,在螢幕上會顯示一個錯誤資訊:command:not found。TERM變數是一個描述使用終端類型的環境變數。
  八、shell的高級特徵
  Shell Substitution Capabilities
  There are three types of substitution in the shell:variable substitution;command substitution;tilde(波浪符號) substitution.替換有助於加快對命令的輸入和執行。
  變數替換(variable Substitution)
  每個被定義的變數有一個值與其相關,當變數名前面緊接著一個$時,shell會用這個變數的值替換這個參數。這個過程被稱為變數替換。
  Example(Operate on Fedora 15):
   [liveuser@localhost ~]$ echo $PATH
   /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/liveuser/bin
   [liveuser@localhost ~]$ echo $HOME
   /home/liveuser
  命令替換(command substitution)
  命令替換就是同個命令列中用一個命令的輸出結果替換該命令。命令替換的標準語法是$(command)。
  Example(Operate on Fedora 15):
   [liveuser@localhost ~]$ echo $(pwd)
   /home/liveuser
   [liveuser@localhost ~]$ date
   Fri Sep 16 11:38:23 EDT 2011
   [liveuser@localhost ~]$ echo $(date)
   Fri Sep 16 11:38:42 EDT 2011
  波浪號替換(Tilde Substitution)
  顯示變數的值
  變數替換體如$variable,可以用來顯示一個變數的值,無論這個變數是在本地資料區還是在使用者環境定義的。env命令可以用來顯示在使用者環境中定義的所有變數的值。set命令可以用來顯示在本地資料區和使用者環境中當前定義的所有變數的值。
  Examples:
  Transferring Local Variables to the Environment(將本地變數轉移到使用者環境中)
  Syntax:
    export variable
  Monitoring Processes(監控進程)
  
  Example(Operate on Fedora 15):
[root@localhost senya]# ps
  PID TTY          TIME CMD
 1577 pts/0    00:00:00 su
 1582 pts/0    00:00:00 bash
 1602 pts/0    00:00:00 ps

[root@localhost senya]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:55 ?        00:00:03 /sbin/init
root         2     0  0 14:55 ?        00:00:00 [kthreadd]
root         3     2  0 14:55 ?        00:00:00 [ksoftirqd/0]
root         4     2  0 14:55 ?        00:00:00 [kworker/0:0]
root         5     2  0 14:55 ?        00:00:00 [kworker/u:0]
root         6     2  0 14:55 ?        00:00:00 [migration/0]
root         7     2  0 14:55 ?        00:00:00 [watchdog/0]
root         8     2  0 14:55 ?        00:00:00 [cpuset]
root         9     2  0 14:55 ?        00:00:00 [khelper]
root        10     2  0 14:55 ?        00:00:00 [netns]
root        11     2  0 14:55 ?        00:00:00 [sync_supers]
root        12     2  0 14:55 ?        00:00:00 [bdi-default]
root        13     2  0 14:55 ?        00:00:00 [kintegrityd]
[root@localhost senya]# top
top - 15:22:13 up 26 min,  2 users,  load average: 0.22, 0.19, 0.37
Tasks: 125 total,   1 running, 124 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.7%us,  1.3%sy,  0.0%ni, 97.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    499528k total,   486864k used,    12664k free,    49340k buffers
Swap:        0k total,        0k used,        0k free,   285764k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
 1065 root      20   0 29320 7688 4360 S  1.7  1.5   0:15.52 Xorg              
 1531 liveuser  20   0 84000  15m  10m S  1.0  3.2   0:05.39 gnome-terminal    
 1348 liveuser  20   0  375m  45m  20m S  0.7  9.2   0:17.10 gnome-shell      
 1629 root      20   0  2736 1036  792 R  0.7  0.2   0:00.10 top              
    1 root      20   0 15248  12m 1760 S  0.0  2.7   0:03.52 systemd          
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd          
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0      
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.12 kworker/0:0      
    5 root      20   0     0    0    0 S  0.0  0.0   0:00.22 kworker/u:0      
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0      
    7 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0        
    8 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 cpuset            
    9 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 khelper          
   10 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 netns            
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 sync_supers      
   12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 bdi-default      
   13 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kintegrityd      
   14 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kblockd          
   15 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kacpid            
   16 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify
  在系統上啟動的每個進程都被分配一個唯一的標識號,這個標識號叫進程號(PID)。ps命令顯示當前運行(或者處於睡眠狀態)進程的有關資訊,包括每個進程的PID及其父進程的PPID。通過PID和PPID可以跟蹤到在系統中運行的任何進程的痕跡。ps命令還可以報告誰是進程的所用者、每個進程的運行終端和其他有用的資訊。
  九、檔案名生成
  File Name Generating Characters(檔案名生成的字元集)
  ? Matches any single character except a leading dot(匹配任意單個字元除用點開頭的之外。)
  [] Defines a class of characters(從將匹配的字元裡分類除了用點開頭之外。)
    - Defines an inclusive range()
    ! Negates the defined class
  (在[]中,一個連字號(-)用在兩個ASCII字元中間表示所有聯接的字元集都包括在同一個範圍裡,!則用做第一個字元來表示否定這個定義的類。)
  * Matches zero or more characters except a leading dot(匹配零字元或者更多的字元集。)
  File Name Generation and Dot Files(檔案名生成與點檔集)
  點文件集是一些檔案名以“.”字元開頭的檔,比如像.profile、.kshrc和.exrc等檔案名。這些檔在系統時通常都是一些隱藏檔,必須用ls -a命令才可以看到這些檔案名。
  File Name Generationg(檔案名生成符)-?
  ?匹配任何單個的字元。
  Example(Operate on Fedora 15):
  
  問號字元能匹配任意的單個字元,但是不能匹配起始符為點的字元。
  
  檔案名生成符-[]
  []defines a class of characters from which one will be matched.中括弧是用來指定一個字元類的匹配符。它作為一個字元類能匹配中括弧內所出現的任意單個字元。用!作為中括弧包含項中的第一個字元是用來表示這個字元類的非類,也就是說,這個中括弧包含的類是用來代替所有不在中括弧裡的字元類。
  Example(Operate on Fedora 15):
    
  十、引用
  對於shell來說,在UNIX系統中有許多字元具有特別的意思。例如:空白鍵用來作為命令和參數之間的間隔符。Carriage return(回車符)執行的是一個回車命令,$字元用來顯示變數名的值。有時,我們需要用到這些特殊的字元,所以,UNIX系統必須能提供一種機制來避免或刪掉帶有特殊意思的指定字元。這種機制就叫做引用(quoting)
  Quoting Characters(引用字元)
  \  backslash(反斜線)
  '    Single Quotes(單引號)
  "  Double Quotes(雙引號)
  反斜線用來去掉在反斜線後的特殊字元的特殊意思。單引號也是用來支掉特殊字元的特殊意思的引用字元。所有包含在單引號中的字元都會被單引號引用。
  \使用的例子:
  '使用的例子:
  "使用的例子:

  十一、輸入與輸出重定向
  Input and Output Redirection——Introduction
  UNIX shell的另一個特徵就是能讓使用者使用關於輸入輸出重定向的功能。大多數UNIX命令執行後把他們的執行結果輸出到使用者終端,有些命令是通過鍵盤得到輸入的。在UNIX系統中,所有的資料都是以檔的形式存在,包括使用者終端和鍵盤。Output redirection(輸出重定向)允許使用者把資料輸出到某些檔裡而不用輸出到終端顯示。同樣,Input redirection(輸入重定向)可以使用使用者通過鍵盤鍵入而從檔中得到輸入資料。輸出重定向對於處理日誌或者捕獲更深層次的輸出命令是非常有用的。
  stdin、stdout and stderr
  每次啟動一個shell,系統中都會有三個檔自動打開提供給用戶。這三個文件是stdin、stdout和stderr。stdin檔用來從用戶shell中讀入輸入的檔。stdout檔用做用戶shell寫標準輸出的檔。stderr檔是用來存放用戶shell的寫操作產生錯誤資訊的檔。
  Input Redirection—— <
  Any command tha reads its input from stdin can have its input redirected to com from another file.
  Output Redirection——> and >>
  any commmand that produces output to stdout can have its output redirected to another file.
  如果想在一個檔後追加內容又不想覆蓋它,可以使用輸出重定向追加符>>。
  Error Redirection——2> and 2>>
  Any command that produces error messages to stderr can have those messages redirection to another file.
  What Is a Filter?
  ◆Reads standard input and produces standard output.
  ◆Filters the contents of the input stream or a file.
   ◆Sends results to screen,never modifies the input stream or file.
  ◆Processes the output of other commands when they are used in conjunction with output redirection.
  wc——Word Count
  wc命令用來統計在標準輸入或者檔時提交內容的行數、詞數和字元。它有一些可選選項:-l、-w、-c。使用-l選項顯示命令列的數目,-w選項顯示詞數,-c選項顯示字元的數目。不用關心選項的使用順序,他們執行結果的輸出順序總是按照行數 、詞數、字元數的順序輸出。
  sort——按字母或數位排序
  grep——Pattern Matching
  grep是一個很有的系統命令。它可以把一個模式(通常被稱為引用)作為其第一個參數,而且它可以將檔案名中的任何數位作為它的保留參數。
  十二、管道
  Pipelines Introduction
  |字元(稱之為管道符),是用來把兩個命令聯接到一起使用的特定字元。在|字元左邊的指令產生的標準輸出,在管道技術裡將作為|字元右邊指令的標準輸入。
  十三、使用網路服務
  What Is a Local Area Network?
  局域網(Local Area Network)是一種在範圍很小的區域內將兩個或多個電腦系統互聯起來的網路技術。 
  LAN Services
  The hostname Command
  hostname  Reports your computer's network name
  十四、vi編輯器介紹
  
  What Is vi?
  ●A screen-oriented text editor
  ●Included with most UNIX system distributions
  ●Command driven
  ●Categories of commands include
    -General administration
    -Cursor movement
    -Insert text
    -Delete text
    -Paste text
    -Modify text
  vi是一個標準的文字編輯器,被廣范地應用在絕大多數UNIX系統裡。一個所謂的文字編輯器實際上是一個互動式的電腦程式,它可以在一個檔裡鍵入文字或者修改檔裡的文字資訊。
  Why vi?
  ●On every UNIX platform
  ●Runs on any type terminal
  ●Very powerful editor
  ●Shell command stack uses it
  ●Other UNIX tools require it
  vi應用廣泛,不論是什麼UNIX機型或系統,都帶有vi編輯器。它是一個基於螢幕而且可以在任何ASCII字元類型的終端上運行的。
  
  Starting a vi Session(開啟一個vi會話)
  調用vi命令將啟動一個編輯任務。如果要編輯的檔已經生成,這個檔的內容將首先顯示在螢幕上。否則,如果正在編輯一個新的檔,將看到一個空白的螢幕而且在最左邊的一行上會出現一個波浪字元。
   vi的幾種模式:Command Mode(命令模式)、Last Line Mode、Input Mode
        按下Esc 鍵進入命令模式,dd 刪除除一行 ,i ,進入輸入模式:當前游標處插入字元。
  十五、進程控制
  The ps Command
  Syntax:
  ps [-efl] Reports Process Status
  Example(Operate on Fedora 15):
[root@localhost senya]# ps
  PID TTY          TIME CMD
 1577 pts/0    00:00:00 su
 1582 pts/0    00:00:00 bash
 1602 pts/0    00:00:00 ps

[root@localhost senya]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 14:55 ?        00:00:03 /sbin/init
root         2     0  0 14:55 ?        00:00:00 [kthreadd]
root         3     2  0 14:55 ?        00:00:00 [ksoftirqd/0]
root         4     2  0 14:55 ?        00:00:00 [kworker/0:0]
root         5     2  0 14:55 ?        00:00:00 [kworker/u:0]
root         6     2  0 14:55 ?        00:00:00 [migration/0]
root         7     2  0 14:55 ?        00:00:00 [watchdog/0]
root         8     2  0 14:55 ?        00:00:00 [cpuset]
root         9     2  0 14:55 ?        00:00:00 [khelper]
root        10     2  0 14:55 ?        00:00:00 [netns]
root        11     2  0 14:55 ?        00:00:00 [sync_supers]
root        12     2  0 14:55 ?        00:00:00 [bdi-default]
root        13     2  0 14:55 ?        00:00:00 [kintegrityd]
  每一個系統中的進程在初始化的時候都會由系統分配一個唯一的身份認證數位,稱之為進程ID(PID,Process IDentification)
  Background Processing
  Syntax:
   command line>cmd.out & 這個命令列的意思是:◇將這個作業轉入後臺進程;◇shell提示符在作業剛提交完就立即出現;◇重定向這個命令的輸出不會干擾下面的命令交互;◇一旦退出shell,將終止這個後臺進程。當一個後臺進程已經執行完畢後,系統監視器將生成已經完成的資訊提示,當一個命令已經在後臺運行後,它將不再受鍵盤的控制。
  Example(Operate on Fedora 15):
  Putting Jobs in Background/Foreground
  jobs     Display jobs currently running
  Ctrl+z      Suspends a job running in the foreground
    fg [%number]  Brings job number to the foreground or
    fg [%string] and job whose command lin begins with string.
  bg [%number]  Transfers job number to background or
    bg [%number]  and job whose command line begins with string.
  在POSIX shell這種UNIX系統裡,進程即可以在前臺運行,也可以在後臺執行。如果一個正在前臺運行的進程過長,妨礙了別的作業執行。這時可以使用掛起字元。掛起字元通過都是在註冊檔.profile裡指定,掛起命令停止前臺進程,同時提供一個shell提示符。這時可以通過使用bg %數位或者bg %字串來切換作業到後臺執行。數字表示的是從jobs命令返回的作業號,字串表示的是作業的起始命令列。同樣,如果有一個作業在後臺運行而想把它換在到前臺運行,可以使用fg命令。
  Example(Operate on Fedora 15):
  The nohup Command
  Syntax: nohup command line &  UNIX作業系統提供了nohup命令,使得某些命令避免被掛起和退出。nohup命令是UNIX系統中首碼命令組的一種,比其它的命令優先順序要高。
  The nice Command

    Syntax: nice [-N] command_line Runs a process at a lower priority,N is a number between 1 and 19.UNIX作業系統是一個分時系統,而且它有一個基本功能,就是定義進程優先極,以決定哪一個進程經常訪問系統的各類資源。對優先順序低的作業訪問系統資源,系統將加以限制,而高優先順序的進程將優先執行。
  The kill Command kill命令可以終止所有的命令運行,包括nohup命令和後臺運行的命令。
  十六、shell程式設計介紹
  Shell Programming Overview
  A shell program is a regular file containing UNIX system commands.The file's permissions  must be at least "read" and "execute".To execute,type the name of the file at the shell prompt.
  shell是一個命令直譯器。它用於解釋在shell提示符下鍵入的各種命令。而且,可以建立一個shell命令組,這個組裡的命令是經常需要反復鍵入命令。shell可以把這些命令存儲在一個檔裡,然後像別的UNIX系統提供的命令一樣執行這個檔。這個命令檔通常稱之為shell程式或者shell腳本。shell支援變數、命令列參數調用、互動式輸入、測試、分支和迴圈,所以在編寫腳本的時候,可以根據需要寫出功能更強、結構更複雜的程式來。
  Example(Operate on Fedora 15):
  先用vi編輯器創建一個指令檔,檔案名為myscript1.sh:
  myvar='I love Linux'
  echo $myvar
  pwd
  為用戶賦於可以執行許可權:
  [root@localhost senya]# chmod u+x myscript1.sh
  執行腳本:
  [root@localhost senya]# ./myscript1.sh
  腳本運行的結果:
  I love Linux
  /home/liveuser/senya
  Passing Data to a Shell Program(傳遞資料給shell程式)
  Arguments to Shell Programs(Shell程式中的參數)
  Some Special Shell Variables-# and *
  十七、shell程式設計——分支
  ◆The if Construct
  Syntax:
  if
   list A
  then
   List B
    fi
  ◆The if-else Construct
  if
      list A
    then
      list B
    else
      list C
    fi
  Example:
  ◆The case Construct
  Syntax:
     case word in
      pattern1) list A
              ;;
      pattern2) list B
              ;;
      pattern3) list N
              ;;
      esac
  Example(Operate on Fedora 15):
   x=yes
   case $x in
     yes) echo 'This is ok!';;
     no) echo 'Not Lucky!';;
   esac
  十八、shell程式設計——迴圈
  Loops——an Introduction
  Purpose: Repeat executtion of a list of commands.
  Three forms:
    while...do...done
        until...do...done
        for...do...done
  十九、檔離線存儲
  Storing Files to Tape
  ◆To store files to a tape you must know the device file name for your tape device.
  ◆Typical names might be
   /dev/rmt/Om
      /dev/rmt/cotedoBEST
  ◆Ask your system administrator which device file accesses the tape drive.
  ◆Commands to perform file backups include:
      tar  cpio
  tar example:
   [root@localhost etc]# tar -cvf /var/senya/UserInfobk.tar passwd group
passwd
group
[root@localhost etc]# ls /var/senya
FirstScript.sh  user6file.txt  UserInfobk.tar
[root@localhost etc]# tar -zcvf /var/senya/userinfobk.tar.gz passwd group
passwdgroup
[root@localhost etc]# ls /var/senya
UserInfobk.tar  userinfobk.tar.gz
  tar命令是把文檔進行打包歸檔,配合gzip與bzip2可以對打包的檔進行壓縮。
  參考資料:《UNIX系統基礎》

沒有留言: