Kill ghosts process at startup (Dynamips, VPCS, Ubridge)

This is done only if you lock by pid to avoid killing process
of another server.

Fix #581
This commit is contained in:
Julien Duponchelle 2016-06-20 09:55:59 +02:00
parent ae076c7ca9
commit 07395c9cf2
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8

View File

@ -26,6 +26,7 @@ import datetime
import sys import sys
import locale import locale
import argparse import argparse
import psutil
import asyncio import asyncio
from gns3server.server import Server from gns3server.server import Server
@ -180,6 +181,21 @@ def pid_lock(path):
sys.exit(1) sys.exit(1)
def kill_ghosts():
"""
Kill process from previous GNS3 session
"""
detect_process = ["vpcs", "ubridge", "dynamips"]
for proc in psutil.process_iter():
try:
name = proc.name().lower().split(".")[0]
if name in detect_process:
proc.kill()
log.warning("Killed ghost process %s", name)
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
def run(): def run():
args = parse_arguments(sys.argv[1:]) args = parse_arguments(sys.argv[1:])
@ -189,6 +205,7 @@ def run():
if args.pid: if args.pid:
pid_lock(args.pid) pid_lock(args.pid)
kill_ghosts()
level = logging.INFO level = logging.INFO
if args.debug: if args.debug: