【发布时间】:2014-01-10 16:33:58
【问题描述】:
我正在尝试编写一个 bash 脚本,以使用不同的命令行选项一个接一个地运行一个进程大约 1024 次。然而,其中一个进程包含一个无限循环,我试图在循环的另一次迭代开始之前终止该进程。
所以这是我迄今为止尝试过的(prog1 包括无限循环,我想在 papi 完成运行时杀死它):
#!/bin/bash
for (( i=0; i<32780; i+=32))
do
./prog1 $i &
pid=$!;
sleep 5s
./papi
kill -s 2 $pid
done
但是它不会杀死任何prog1 实例,当然它会在每次迭代开始时继续创建它们。我做错了什么?
【问题讨论】:
-
prog1 是否忽略信号 2?如果你使用 KILL 会起作用吗?
-
杀死是否从您的脚本外部工作?你试过“kill -9”吗?
-
你为什么使用 SIGINT? kill 的默认值是 SIGTERM,如果使用它会发生什么?
-
好吧,SIGTERM 被正确杀死了。我看到了很多关于 SIGINT 的例子,因此我使用了它,但我认为这不是问题的根源。如果你能用这个信息写一个答案,我很乐意接受。