继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

一起学shell之(九-1)拼写检查、进程

PIPIONE
关注TA
已关注
手记 1063
粉丝 147
获赞 702


 

 #----------------------------------------------------------#

# ====> 红色字体 -特指煮酒个人所见。加粗则为需要重点注意。 #

# ====> 蓝色加粗 -特指与本文相关人员,包括参与修正的朋友。 #

# ====> 煮酒品茶 -Http://cwtea.blog.51cto.com          #

#----------------------------------------------------------#

 

煮洒品茶:拼写检查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

 

©著作权归作者所有:来自51CTO博客作者煮酒品茶的原创作品,如需转载,请与作者联系,否则将追究法律责任

进程 一起学shell拼写检查Shell


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP