#----------------------------------------------------------#
# ====> 红色字体 -特指煮酒个人所见。加粗则为需要重点注意。 #
煮洒品茶:拼写检查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)拼写检查、进程
http://cwtea.blog.51cto.com/4500217/879971