有的时候 Unix 的命令看上去很复杂,其实有可能是多个命令合在一起的。
1.分解一个复杂的 Unix 命令:
ps -ef|grep "ora_"|grep -v grep|awk '{ print $2 }'|xargs kill –9
乍看这条命令,给人很复杂神秘的感觉。然而,这实际上是通过管道符(|)来合在
一起的一组简单命令。写成下面的格式更易懂一些:
www.ixdba.net
ps -ef
|
grep "ora_"
|
grep -v grep
|
awk '{ print $2 }'
|
xargs kill –9
这条命令总的目的是杀掉所有 Oracle 的进程。ps –ef 列出所有的进程,而 grep "ora_"
只列出 ps –ef 中的 ora_开头的进程;grep –v grep 的作用是进程中不列出命令本身,
awk '{ print $2 }'的作用是只列出显示的进程的第 2 部分。xargs 将前面列出的内容传
给后面的命令,kill –9 命令会强制关闭列出来的进程。
为了更好的理解这条命令,我们不妨逐步执行这个命令,查看输出结果:
HBZW> ps -ef
UID PID PPID C STIME TTY TIME CMD
root 0 0 1.2 13:48:38 ?? 0:36.18 [kernel idle]
root 1 0 0.0 13:48:38 ?? 0:00.05 /sbin/init -a
root 3 1 0.0 13:48:39 ?? 0:00.02 /sbin/kloadsrv
root 5 1 0.0 13:48:40 ?? 0:00.00 /sbin/hotswapd
root 53 1 0.0 13:48:56 ?? 0:00.00 /sbin/update
root 170 1 0.0 13:49:00 ?? 0:00.16 /usr/sbin/evmd
......
oracle 2445 1 0.0 14:48:35 ?? 0:00.36 ora_ckpt_gaxz
oracle 2447 1 0.0 14:48:35 ?? 0:00.38 ora_smon_gaxz
oracle 2449 1 0.0 14:48:36 ?? 0:00.07 ora_reco_gaxz
oracle 2451 1 0.0 14:48:36 ?? 0:00.19 ora_cjq0_gaxz
oracle 2453