简体   繁体   中英

Run a script in the same shell(bash)

My problem is specific to the running of SPECCPU2006(a benchmark suite). After I installed the benchmark, I can invoke a command called "specinvoke" in terminal to run a specific benchmark. I have another script, where part of the codes are like following:

cd (specific benchmark directory)
specinvoke &
pid=$! 

My goal is to get the PID of the running task. However, by doing what is shown above, what I got is the PID for the "specinvoke" shell command and the real running task will have another PID.

However, by running specinvoke -n ,the real code running in the specinvoke shell will be output to the stdout. For example, for one benchmark,it's like this:

# specinvoke r6392
#  Invoked as: specinvoke -n
# timer ticks over every 1000 ns
# Use another -n on the command line to see chdir commands and env dump
# Starting run for copy #0
../run_base_ref_gcc43-64bit.0000/milc_base.gcc43-64bit < su3imp.in > su3imp.out 2>> su3imp.err

Inside it it's running a binary.The code will be different from benchmark to benchmark(by invoking under different benchmark directory). And because "specinvoke" is installed and not just a script, I can not use " source specinvoke ".

So is there any clue? Is there any way to directly invoke the shell command in the same shell(have same PID) or maybe I should dump the specinvoke -n and run the dumped materials?

You can still do something like:

cd (specific benchmark directory)
specinvoke &
pid=$(pgrep milc_base.gcc43-64bit)

If there are several invocation of the milc_base.gcc43-64bit binary , you can still use

pid=$(pgrep -n milc_base.gcc43-64bit)

Which according to the man page:

-n

 Select only the newest (most recently started) of the matching processes 

when the process is a direct child of the subshell:

ps -o pid= -C=milc_base.gcc43-64bit --ppid $!

when not a direct child, you could get the info from pstree:

pstree -p $! | grep -o 'milc_base.gcc43-64bit(.*)'

output from above (PID is in brackets): milc_base.gcc43-64bit(9837)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM