I have a very simple problem: When I run a shell script I start a program which runs in an infinite loop. After a while I wanna stop then this program before I can it again with different parameters. The question is now how do I find out the pid of the program when I execute it? Basically, I wanna do something like that:
echo "Executing app1 with param1"
./app1 param1 &
echo "Executing app1"
..do some other stuff
#kill somehow app1
echo "Execution of app1 finished!"
Thanks!
I had a problem where the process I was killing was a python script and I had another script which was also running python. I did not want to kill python because of the other script.
I used awk to deal with this (let myscript be your python script): kill
ps -ef|grep 'python myscript.py'|awk '!/awk/ && !/grep/ {print $2}'
Might not be as efficient but I'd rather trade efficiency for versatility in a task like this.
In most shells (including Bourne and C), the PID of the last subprocess you launched in the background will be stored in the special variable $!.
There is some information here under the Special Variables section.
you obtain the pid of app1 with
and then you should be able to kill it....(however, if you've several instances of app1, you may kill'em all)
In bash
$!
expands to the PID of the last process started in the background. So you can do: