|
发表于 2003-4-18 09:05:14
|
显示全部楼层
我认为产生两个进程并不奇怪,因为跟你使用的|管道有关,ps -A是一个进程,他产生信息输出,而grep也打开了一个进程,他把ps的输出作为自己的接受的输入,如果你要使用多个|,进程数量还得多.
如:
avalee//home/javalee>ps
PID TTY TIME CMD
530 pts/0 00:00:00 ksh
636 pts/0 00:00:00 ps #当前进程为636
javalee//home/javalee>cat /proc/meminfo|grep 'MemFree'|awk '{print $2}'
43412
javalee//home/javalee>ps
PID TTY TIME CMD
530 pts/0 00:00:00 ksh
640 pts/0 00:00:00 ps #执行三个操作后和一个ps之后的进程数640
javalee//home/javalee>free
total used free shared buffers cached
Mem: 252340 208964 43376 0 2480 99996
-/+ buffers/cache: 106488 145852
Swap: 610460 0 610460
javalee//home/javalee>ps
PID TTY TIME CMD
530 pts/0 00:00:00 ksh
642 pts/0 00:00:00 ps #两个操作进程数加2,即642
javalee//home/javalee>cat /proc/meminfo|grep 'MemFree'|awk '{print $2}'
43240
javalee//home/javalee>ps
PID TTY TIME CMD
530 pts/0 00:00:00 ksh
646 pts/0 00:00:00 ps #又有cat,grep,awk和ps死个,646
javalee//home/javalee>
伴随你的操作,进程数量是不断增加,所以一个程序/命令如果开启进程太多的话,并没有好处,只会浪费资源,可以利用协处理的方式减少产生进程数,即用|&先将一个命令通过管道放入后台,需要重复处理信息传输给协进程,这样,就比不用协进程要省很多进程数量,这是我的理解,欢迎讨论;) |
|