将 bash 中的 ctrl-c 发送到 perf 命令

问题描述

linux 中的 perf-stat 命令会一直运行,直到按下 crtl-c。我正在尝试在脚本中使用此命令来分析循环。模拟发送 crtl-c 的推荐解决方案是发出带有 -2 或 -SIGINT 标志的 kill 命令。 但是,这对我不起作用。我使用的是 RHEL。

脚本大致如下:

for i in {1..12}
do
pid=$1
perf stat -e dTLB-loads -p $pid > perf.out&
perf_pid=$!
sleep 10
kill -SIGINT $perf_pid
done

即使在 kill 之后,perf 进程仍然处于活动状态。当脚本结束时,所有的 ctrl-c 都会在最后执行

解决方法

阅读 man page for perf 时,我遇到了 --control 选项,这似乎是分析运行命令的一部分的正确方法。 但是,此选项在 RHEL 上不可用。

通过使用 -INT 选项杀死 mentioned here,我找到了解决方法。由于某种原因 -2 或 -SIGINT 在 RHEL 上不起作用。