如何停止调用无限循环的 运行 脚本

How to stop a running script which calls a infinite loop

我正在编写一个 bash 脚本来启动一个不确定的程序。该节目的运行时间未知。该脚本还将启动一个 while 循环,以使用 linux 命令或 perf 以 1 秒的方式记录内容。

./my_app &
$i=1    
while true;
do
  perf stat -a -A -e writeback:writeback_dirty_page sleep $i >> out
done

如何在 my_app 完成时停止 while 循环?谢谢。

使您的 while 循环以现有应用程序的进程 ID 为条件:

./my_app &
app_pid=$!
i=1
while ps -p $app_pid >/dev/null 2>&1
do 
  perf stat -a -A -e writeback:writeback_dirty_page sleep $i >> out
done

使用

获取pid

回声 $!

然后

杀死

您可以从 my_app 向生成 my_app

的进程发送终止信号

这是真实的例子

test.sh

#!/bin/bash

./my_app.sh $$ &

while [ 1 ]
do
    echo running....
    sleep 2
done

my_app.sh

#!/bin/bash

sleep 10
kill -9