加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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已经完成,脚本将退出,它将终止它启动的所有后台进程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读