2 # This file is part of GNUnet.
3 # (C) 2011, 2018 Christian Grothoff (and other contributing authors)
5 # GNUnet is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published
7 # by the Free Software Foundation; either version 2, or (at your
8 # option) any later version.
10 # GNUnet is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with GNUnet; see the file COPYING. If not, write to the
17 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 # Boston, MA 02110-1301, USA.
20 # Finds any gnunet processes still running in the system and kills them
22 # gnunet janitor can be used by invoking `make' like this:
23 # TESTS_ENVIRONMENT='${top_srcdir}/contrib/scripts/gnunet_janitor.py &&' make check
25 from __future__ import print_function
36 from win32com.client import GetObject
37 WMI = GetObject('winmgmts:')
40 def get_process_list():
43 processes = WMI.InstancesOf('Win32_Process')
45 result.append((p.Properties_('ProcessId').Value, re.sub(r'(.+)\.exe', r'\1', p.Properties_('Name').Value)))
47 pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
49 with open(os.path.join('/proc', pid, 'cmdline'), 'rb') as p:
50 cmdline = p.read().split('\x00')
52 result.append((pid, cmdline[0]))
57 procs = get_process_list()
60 if re.match(r'gnunet-.+', p[1]):
61 gnunet_procs.append(p)
62 for p in gnunet_procs:
63 if re.match(r'gnunet-service-arm', p[1]):
64 print("killing arm process {0:5} {1}".format(p[0], p[1]))
66 terminate.safe_terminate_process_by_pid(int(p[0]), 1)
68 print("failed: {0}".format(e))
70 for p in gnunet_procs:
71 if not re.match(r'gnunet-service-arm', p[1]):
72 print("killing non-arm process {0:5} {1}".format(p[0], p[1]))
74 terminate.safe_terminate_process_by_pid(int(p[0]), 1)
76 print("failed: {0}".format(e))
80 if __name__ == '__main__':