在awk中运行外部命令

时间:2014-11-14 16:42:14

标签: bash if-statement awk

是否可以使用带有awk的if和else语句执行操作

ps -ef | grep crond | awk '{ if ($1 =="root") print $1 $2}'

上面的命令为进程crond greps,如果它由root拥有,它将打印它。 但是,我不是使用打印命令来调用函数或执行命令行 (例如kill -9 $1)。基本上杀死cron进程(如果由root拥有)

是否可以使用kill -9 $1调用命令(示例awk)或调用函数? 请问如何调用函数或命令?

2 个答案:

答案 0 :(得分:2)

您可以在awk中使用system功能:

ps -ef | awk '/crond/ && $1 == "root"{system("kill " $2)}'

也无需使用grep,因为awk可以处理此问题。

答案 1 :(得分:1)

您可以直接kill来自输出的内容:

kill $(ps -ef | awk '/crond/ && $1=="root" {print $2}')

执行ps -ef并打印包含crondroot作为第一列的行的第二列。