linux里面的awk和xargs命令是我一直以来很头疼的问题。这里先记录一下awk和xargs搭配是用的一个例子。
假设下面有如下进程。
root@master:/home/jxl/ascend_new/output/test_unit# ps -ef | grep start.sh
root 234 1 0 01:37 pts/1 00:00:00 /bin/bash start.sh
root 716 1 0 01:37 pts/1 00:00:00 /bin/bash start.sh
root 1225 1 0 01:37 pts/1 00:00:00 /bin/bash start.sh
root 1455 1 0 01:37 pts/1 00:00:00 /bin/bash start.sh
root 1701 1 0 01:37 pts/1 00:00:00 /bin/bash start.sh
root 1791 1 0 01:37 pts/1 00:00:00 /bin/bash start.sh
root 4238 17 0 01:43 pts/1 00:00:00 grep --color=auto start.sh
需求是我们批量删除含有start.sh的进程,可以用下面的命令
ps -ef | grep start.sh | grep -v grep | awk '{print $2}' | xargs kill
上面命令具体步骤是,通过start.sh过滤,然后过滤掉含有grep项,awk找到第二个进程号的参数,然后通过xargs传入kill命令进行删除。