Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I start and stop a Python script from shell

Tags:

python

shell

thanks for helping!

I want to start and stop a Python script from a shell script. The start works fine, but I want to stop / terminate the Python script after 10 seconds. (it's a counter that keeps counting). bud is won't stop.... I think it is hanging on the first line.

What is the right way to start wait for 10 seconds en stop?

Shell script:

python /home/pi/count1.py

sleep 10

kill /home/pi/count1.py

It's not working yet. I get the point of doing the script on the background. That's working!. But I get another comment form my raspberry after doing:

python /home/pi/count1.py & 

sleep 10; kill /home/pi/count1.py

/home/pi/sebastiaan.sh: line 19: kill: /home/pi/count1.py: arguments must be process or job IDs

It's got to be in the: (but what? Thanks for helping out!)

sleep 10; kill /home/pi/count1.py
like image 604
rikkert Avatar asked Oct 17 '25 10:10

rikkert


1 Answers

You're right, the shell script "hangs" on the first line until the python script finishes. If it doesn't, the shell script won't continue. Therefore you have to use & at the end of the shell command to run it in the background. This way, the python script starts and the shell script continues.

The kill command doesn't take a path, it takes a process id. After all, you might run the same program several times, and then try to kill the first, or last one.

The bash shell supports the $! variable, which is the pid of the last background process.

Your current example script is wrong, because it doesn't run the python job and the sleep job in parallel. Without adornment, the script will wait for the python job to finish, then sleep 10 seconds, then kill.

What you probably want is something like:

python myscript.py &     # <-- Note '&' to run in background

LASTPID=$!               # Save $! in case you do other background-y stuff

sleep 10; kill $LASTPID  # Sleep then kill to set timeout.
like image 80
aghast Avatar answered Oct 19 '25 00:10

aghast



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!