Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is there a way to start/stop linux processes with python?

Tags:

python

linux

I want to be able to start a process and then be able to kill it afterwards

like image 361
tehryan Avatar asked Sep 04 '09 12:09

tehryan


2 Answers

Here's a little python script that starts a process, checks if it is running, waits a while, kills it, waits for it to terminate, then checks again. It uses the 'kill' command. Version 2.6 of python subprocess has a kill function. This was written on 2.5.

import subprocess
import time

proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()

The timed output shows that it was terminated after about 3 seconds, and not 60 as the call to sleep suggests.

$ time python prockill.py 
poll = None ("None" means process not terminated yet)
poll = -9

real    0m3.082s
user    0m0.055s
sys 0m0.029s
like image 100
FeatureCreep Avatar answered Oct 12 '22 05:10

FeatureCreep


Have a look at the subprocess module. You can also use low-level primitives like fork() via the os module.

like image 24
Bastien Léonard Avatar answered Oct 12 '22 07:10

Bastien Léonard