Я пытаюсь написать простой сервер python, который запускает и убивает другой скрипт python. Проблема заключается в том, что команда kill выдается без ошибок, но не убивает процесс. Я попытался вручную с «kill -INT pid» без каких-либо результатов.Выдача kill через подпроцесс
Команда работает в оболочке, но не на питоне. Я выполняю «мягкое» убийство, потому что скрипт управляет светом, а «kill -9» не выключает свет.
Примечание: скрипт работает на Yocto-помесщения
import socket, subprocess
srv = socket.socket()
srv.bind(('', 1340))
srv.listen(3)
while 1:
connection, address = srv.accept()
data = int(connection.recv(1024))
if data == 0:
ps_id = subprocess.check_output('ps|grep python\ /home/root/python/backlight_mod.py', shell=True)
ps_id = ps_id.split(' ')[2]
subprocess.call('kill -INT ' + str(ps_id), shell=True)
print 'Terminated'
elif data == 1:
subprocess.call('python ~/python/backlight_mod.py &', shell=True)
connection.close()
Выход 'убить -l':
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMIN+4 RTMIN+5 RTMIN+6 RTMIN+7 RTMIN+8 RTMIN+9 RTMIN+10 RTMIN+11 RTMIN+12 RTMIN+13 RTMIN+14 RTMIN+15 RTMAX-14 RTMAX-13 RTMAX-12 RTMAX-11 RTMAX-10 RTMAX-9 RTMAX-8 RTMAX-7 RTMAX-6 RTMAX-5 RTMAX-4 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX
Вы должны проверить исходный вывод 'ps', чтобы убедиться, что он фактически перечисляет запрошенный процесс и использует [' os.kill'] (https://docs.python.org/2/library/os .html # os.kill), чтобы завершить процесс, а не порождать другой процесс. – Petesh