Linux 如何使用shell脚本运行依赖于正在运行的进程的第二个进程?
我想使用shell脚本对两个进程进行自动化。 我有两个程序,a是一个工作负载,b是一个CPU分析器,用于在a运行时评测CPU 以前,我通过打开两个终端手动运行这些程序。首先,在第一个终端中运行a,然后在另一个终端中,我得到a的进程ID,最后运行Linux 如何使用shell脚本运行依赖于正在运行的进程的第二个进程?,linux,shell,terminal,Linux,Shell,Terminal,我想使用shell脚本对两个进程进行自动化。 我有两个程序,a是一个工作负载,b是一个CPU分析器,用于在a运行时评测CPU 以前,我通过打开两个终端手动运行这些程序。首先,在第一个终端中运行a,然后在另一个终端中,我得到a的进程ID,最后运行/b[pid-of-a]。这导致我错过了进程a最初几秒钟的评测 我试过: /a& pid=$!& /b pid 但是它没有按照我想要的方式工作。它首先运行b并返回一个错误,因为a的PID不存在。我也不能使用&&,因为它会先等a完成,然后b开始,这不是我想
/b[pid-of-a]
。这导致我错过了进程a最初几秒钟的评测
我试过:
/a&
pid=$!&
/b pid
但是它没有按照我想要的方式工作。它首先运行b并返回一个错误,因为a的PID不存在。我也不能使用&&
,因为它会先等a完成,然后b开始,这不是我想要的方式
关于这种依赖性,我应该对代码做什么修改 不要在后台设置
pid
,要展开时请记住放置$
:
./a &
pid=$!
./b "$pid"
或者只是
./a &
./b $!
编写一个bash脚本,该脚本将使用pgrep检查ProcessA并获取其pid
#/垃圾箱/垃圾箱
虽然是真的
做
pid=`pgrep-f processA`
如果[!-z$pid]
然后
/流程B$pid
打破
fi
完成