linux - Shell 脚本,在执行一段时间后杀死进程

标签 linux shell process linux-kernel makefile

我正在编写一个 makefile 来执行 C 程序,对执行计时一秒钟,并使用 PID 终止进程。我已将我的 Makefile 复制粘贴到下面:

生成文件:

构建:

gcc -o parse.out bst.c parse.c

gcc -o tree.out bst.c tree-search.c

1:

./parse.out < gettysburg.txt > myOutput/test1.result

diff actual/test1.result myOutput/test1.result

2:

./parse.out < king-speech.txt > myOutput/test2.result

diff actual/test2.result myOutput/test2.result

3:

./tree.out < testFile1 > myOutput/test3.result &

sleep 1

kill -9  $(ps aux | grep './tree.out' | head -n1 | awk '{print $2}')

diff actual/test3.result myOutput/test3.result

4:

./tree.out < testFile2 > myOutput/test4.result &

sleep 0.5

kill -9 $(ps aux | grep './tree.out' | head -n1 | awk '{print $2}')

diff actual/test4.result myOutput/test4.result

干净:

rm -f *.o

下面我附上了结果图像的链接:

/image/07v7O.jpg

由于某种原因,该进程在执行 Makefile 时并未被终止,但如果我再次手动运行终止命令,该进程就会被终止。有谁知道如何解决这个问题吗?

最佳答案

好吧,如果您确实提供了 makefile,那么帮助您会容易得多:如果您不向我们展示它,我们如何知道它出了什么问题?

但是,我怀疑你忘记转义美元符号;美元符号制作起来很特殊,因此每当您在制作配方中使用它们时都必须将它们加倍:

kill -9 $$(ps aux | grep './tree.out' | head -n1 | awk '{print $$2}')

关于linux - Shell 脚本,在执行一段时间后杀死进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587560/

相关文章:

regex - 使用 shell 脚本将正则表达式应用于 TSV 格式的单列

c - 微基准测试显示进程切换比线程切换更快;怎么了?

linux - BASH - 找不到什么 $?特殊变量手段

linux - 如何摆脱期望: spawn id exp7 not open

regex - Linux Shell 脚本 - 正则表达式过滤带有日期的文件名

git - 如何将 bash 脚本直接嵌入到 git 别名中

python - 无法从 Python 进程中返回 append 值

C# 在窗体面板中打开其他程序

linux - 在 Alpine Docker 容器上安装 OpenSSH

linux - 在 linux 中将特定日期格式转换为 Epoch