如何停止调用无限循环的 运行 脚本
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
我正在编写一个 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