In a linux shell, I can run this command to kill every process created by my python script (started by sudo python3 server.py
):
sudo kill -9 `ps -ef | grep server.py |grep -v "grep"|awk '{{print $2}}'
I wanted to add this to my script and end any previous script process at start, to a avoid getting a socket "Address already in use" error.
Here's my code:
try:
application.listen(port=63)
except OSError as e:
if e.errno == errno.EADDRINUSE:
cmd = 'sudo kill -9 `ps -ef | grep server.py |grep -v "grep"|awk \'{{print $2}}\'`'
print('try to kill previous',cmd)
import os
os.system(cmd)
The problem is that this also kill the new process, because it's also started by the same keyword.
How can I avoid this?