GNUnet
0.22.1
gnunet_janitor.py
Go to the documentation of this file.
1
#!/home/buildbot/bb-worker/sandbox/bin/python
2
# This file is part of GNUnet.
3
# (C) 2011, 2018 Christian Grothoff (and other contributing authors)
4
#
5
# GNUnet is free software: you can redistribute it and/or modify it
6
# under the terms of the GNU Affero General Public License as published
7
# by the Free Software Foundation, either version 3 of the License, or
8
# (at your option) any later version.
9
#
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
# Affero General Public License for more details.
14
#
15
# You should have received a copy of the GNU Affero General Public License
16
# along with this program. If not, see <http://www.gnu.org/licenses/>.
17
#
18
# SPDX-License-Identifier: AGPL3.0-or-later
19
#
20
# Finds any gnunet processes still running in the system and kills them
21
#
22
# gnunet janitor can be used by invoking `make' like this:
23
# TESTS_ENVIRONMENT='${top_srcdir}/contrib/scripts/gnunet_janitor.py &&' make check
24
25
import
os
26
import
re
27
import
subprocess
28
import
sys
29
import
shutil
30
import
time
31
import
signal
32
import
terminate
33
34
35
def
get_process_list
():
36
result = []
37
pids = [pid
for
pid
in
os.listdir(
'/proc'
)
if
pid.isdigit()]
38
for
pid
in
pids:
39
with
open(os.path.join(
'/proc'
, pid,
'cmdline'
),
'rb'
)
as
p:
40
cmdline = p.read().split(
'\x00'
)
41
if
len(cmdline) > 0:
42
result.append((pid, cmdline[0]))
43
return
result
44
45
46
def
main
():
47
procs =
get_process_list
()
48
gnunet_procs = []
49
for
p
in
procs:
50
if
re.match(
r'gnunet-.+'
, p[1]):
51
gnunet_procs.append(p)
52
for
p
in
gnunet_procs:
53
if
re.match(
r'gnunet-service-arm'
, p[1]):
54
print(
"killing arm process {0:5} {1}"
.format(p[0], p[1]))
55
try
:
56
terminate.safe_terminate_process_by_pid
(
int
(p[0]), 1)
57
except
OSError
as
e:
58
print(
"failed: {0}"
.format(e))
59
pass
60
for
p
in
gnunet_procs:
61
if
not
re.match(
r'gnunet-service-arm'
, p[1]):
62
print(
"killing non-arm process {0:5} {1}"
.format(p[0], p[1]))
63
try
:
64
terminate.safe_terminate_process_by_pid
(
int
(p[0]), 1)
65
except
OSError
as
e:
66
print(
"failed: {0}"
.format(e))
67
pass
68
69
70
if
__name__ ==
'__main__'
:
71
sys.exit(
main
())
consensus-simulation.int
int
Definition:
consensus-simulation.py:103
gnunet_janitor.main
def main()
Definition:
gnunet_janitor.py:46
gnunet_janitor.get_process_list
def get_process_list()
Definition:
gnunet_janitor.py:35
terminate.safe_terminate_process_by_pid
def safe_terminate_process_by_pid(pid, code)
Definition:
terminate.py:33
contrib
scripts
gnunet_janitor.py
Generated by
1.9.4