我正在研究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已经完成,脚本将退出,它将终止它启动的所有后台进程.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。