Bash linux:并行启动多个程序,并在完成后停止所有程序
发布时间:2020-12-15 21:46:51 所属栏目:安全 来源:网络整理
导读:我正在研究Ubuntu,我想创建一个执行以下操作的bash文件: 在核心1上启动一个程序(prog0). 等3秒. 然后记录prog0的CPU和内存使用情况信息(我在核心0上使用两个pidstat实例来记录该信息). 然后在核心0上启动另一个程序(prog1). 当prog1完成时(我认为prog1自动
我正在研究Ubuntu,我想创建一个执行以下操作的bash文件:
在核心1上启动一个程序(prog0). 等3秒. 然后记录prog0的CPU和内存使用情况信息(我在核心0上使用两个pidstat实例来记录该信息). 然后在核心0上启动另一个程序(prog1). 当prog1完成时(我认为prog1自动退出),我想退出所有前一个进程(prog0和两个pidstat). taskset -c 1 prog0 -option0 & sleep 3 taskset -c 0 pidstat 1 -C prog0 -u > log2 & taskset -c 0 pidstat 1 -C prog0 -r > log3 & taskset -c 0 prog1 -option1 > log1 我不知道如何退出或杀死prog1完成后启动的所有进程. 解决方法
加:
trap 'kill $(jobs -p)' EXIT 到脚本的开头.当脚本退出时,这将终止所有后台作业. 要创建脚本,请打开一个新文件并将以下内容粘贴到其中: #!/bin/bash trap 'kill $(jobs -p)' EXIT taskset -c 1 prog0 -option0 & sleep 3 taskset -c 0 pidstat 1 -C prog0 -u > log2 & taskset -c 0 pidstat 1 -C prog0 -r > log3 & taskset -c 0 prog1 -option1 > log1 将文件另存为runme.sh. 使其可执行:chmod x runme.sh 通过执行:./ runme.sh运行它或在后台运行它:./ runme.sh& 现在,当最后一个命令taskset -c 0 prog1 -option1> log1已经完成,脚本将退出,它将终止它启动的所有后台进程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |