#----------------------------------------------------------#ios
# ====> 紅色字體 -特指煮酒我的所見。加粗則爲須要重點注意。 #shell
煮灑品茶:拼寫檢查spell、進程創建、列表、控制與刪除、系統調用的追蹤、延遲的進程調度(sleep、at、crontab等)、/proc文件
Spell程序
:檢查文件裏是否有拼寫錯誤。這個程序會讀取命令行上指定的全部文件,在標準輸出上產生排序後的單詞列表,這個列表上的單詞不是在它的字典裏找不到,就是沒法從標準的英文文法應用派生出來。如("words"派生於"word")
COMM:
Ispell 與aspell
Ispell
-l 在標準輸出打印拼錯的單詞列表。
-p file 以file做爲正確單詞拼法的我的字典。相似spelll以+起始的私有文件選項。
Aspell
--mode 使aspelll忽略一些類型的標記,如SGML與TEX
--mode=none 表示不作任何過濾。
在awk內的拼寫檢查程序(一部分函數)
進程(process):指的是執行中程序的一個實例(instance),新進程由fork()與execve()等系統調用所起始,而後執行,直到它們下達exit()系統調用爲止。
注:unix支持多進程,每一個進程權允許在極短時間間執行,稱爲時間片斷。調度器(scheduler)的部分負責管理進程的執行,當出現多CPU時,調度器會試着使用全部CPU處理工做負載。進程會被指定優先權,在任何瞬間,等待執行之進程的平均數,稱平均負載(load average)
進程創建
注:一個命令shell所起始的每一個進程,都會如下列保證事項啓動:
進程具備一個內核文本(kernel context):在內核裏的數據結構,會記錄與進程相關的信息,讓內核便於管理與控制進程的執行。
進程擁有一個私用的(private)、被保護的(protected)虛擬地址空間,它可能就像機器可定址空間那麼大。
三個文件描述代碼(標準輸入、標準輸出、標準錯誤輸出)都已開啓,且當即可用。
起始於交談模式shell的進程,會擁有一個控制終端機(controlling terminal),其扮演三個標準文件數據流的默認來源處與目的地,控制終端機是讓用戶可將信號傳送給進程。
命令行參數裏的通配字符會被展開。
內存的一個環境變量區域會存在,包含具備健與值(key/value)指定的字符串,可經過程序庫調用取得。
進程列表:
System V式
- [root@bogon ~]# ps
- PID TTY TIME CMD
- 2879 pts/1 00:00:00 bash
- 2908 pts/1 00:00:00 ps
System V式Ps -efl
- [root@cwtea ~]# ps -efl
- F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
- 4 S root 1 0 0 78 0 - 2587 - 03:34 ? 00:00:00 init [5
- 1 S root 2 1 0 -40 - - 0 migrat 03:34 ? 00:00:00 [migra]
- 1 S root 3 1 0 94 19 - 0 ksofti 03:34 ? 00:00:00 [ksoft]
BSD式 ps aux
- [root@cwtea ~]# ps aux
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- root 1 0.4 0.1 10348 680 ? Ss 03:34 0:00 init [5]
- root 2 0.0 0.0 0 0 ? S< 03:34 0:00 [migration/0]
- root 3 0.0 0.0 0 0 ? SN 03:34 0:00 [ksoftirqd/0]
- root 4 0.0 0.0 0 0 ? S< 03:34 0:00 [events/0]
解釋說明:user與UID爲進程擁有者,PID爲進程ID值,PPID爲父進程ID。
嘗試了一下:
- [root@cwtea ~]# iostat
- -bash: iostat: command not found
- [root@cwtea ~]# netstat
- Active Internet connections (w/o servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 132 bogon:ssh bogon:64837 ESTABLISHED
- Active UNIX domain sockets (w/o servers)
- Proto RefCnt Flags Type State I-Node Path
- unix 6 [ ] DGRAM 6981 /dev/log
- unix 2 [ ] DGRAM 1576 @/org/kernel/udev/udevd
- unix 2 [ ] DGRAM 7445
- unix 3 [ ] STREAM CONNECTED 7410 /tmp/.X11-unix/X0
- unix 3 [ ] STREAM CONNECTED 7409
- unix 3 [ ] STREAM CONNECTED 7406 /tmp/.X11-unix/X0
- unix 3 [ ] STREAM CONNECTED 7405
- unix 3 [ ] STREAM CONNECTED 7386 /tmp/.X11-unix/X0
- unix 3 [ ] STREAM CONNECTED 7379
- unix 2 [ ] DGRAM 7375
- unix 2 [ ] DGRAM 7073
- unix 2 [ ] DGRAM 6989
- [root@cwtea ~]# nfsstat
- Warning: No Client Stats (/proc/net/rpc/nfs: No such file or directory).
- [root@cwtea ~]# sar
- -bash: sar: command not found
- [root@cwtea ~]# uptime
- 03:41:59 up 7 min, 1 user, load average: 0.00, 0.15, 0.11
- [root@cwtea ~]# vmstat
- procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 0 0 0 265612 20540 194884 0 0 536 34 1023 71 2 2 91 6 0
- [root@cwtea ~]# w
- 03:42:11 up 7 min, 1 user, load average: 0.00, 0.15, 0.11
- USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
- root pts/0 192.168.100.80 03:36 0.00s 0.03s 0.00s w
- [root@cwtea ~]# xcpustate
- -bash: xcpustate: command not found
- [root@cwtea ~]# procinfo
- -bash: procinfo: command not found
注:shell在處理下一個命令以前會等待一進程結束,不過只要在命令最後加入&字符,而非分號或換行符號,便能將進程放在後臺中執行:wait命令可用以等待某個特定進程完成,在不加任何參數的狀況下,則爲等待全部後臺進程的完成。Bg、fg、jobs、以及wait都爲處理於目前shell下所創建的執行中進程的shell命令。
注:4組鍵盤字符可用以中斷前臺進程,ctrl-c(intr:殺除)、ctrl-y(dsusp:暫時擱置,直到輸入更新爲止)、ctrl-z(susp:暫時擱置)、與ctrl-\(quit:以核心轉儲(core dump)方式殺除)。
進程控制與刪除
Kill支持信號
- [root@cwtea ~]# kill -l
- 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
- 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
- 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
- 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
- 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
- 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
- 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
- 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
- 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
- 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
- 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
- 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
- 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
- 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
- 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
- 63) SIGRTMAX-1 64) SIGRTMAX
下接:
一塊兒學shell之(九-2)拼寫檢查、進程