#android #signals #kill-process #sigkill
#Android #сигналы #убить процесс #ошибка sigkill
Вопрос:
Существует постоянный процесс, который я хочу постоянно убивать. Для этого я создал очень простой скрипт на python:
import os
import signal
While True:
os.system("ps >> /sdcard/newdata.txt")
file = open("/sdcard/newdata.txt","r")
for x in file:
if (len(x.split())<9):
continue
elif (x.split()[8] == "/system/bin/XXXX"):
pid = int(x.split()[1])
os.kill(pid, signal.SIGKILL)
break
file.close()
XXXX представляет собой двоичное имя файла, который запускает процесс.
В моем конкретном случае этот двоичный файл, XXXX, является хорошим способом распознавания процесса, который я хочу остановить.
Я думаю, что это должно сработать, но вместо этого оно возвращает ошибку:
«ProcessLookupError: [Ошибка 3] Такого процесса нет»
Я напечатал pid и запустил скрипт несколько раз. pid исправлен, что должно означать, что процесс не возрождался, тем не менее, он всегда возвращает ошибку, как будто pid неверен.
Кто-нибудь может это объяснить?
Комментарии:
1. Распечатайте свой
ps
вывод, чтобы увидеть, что, вероятно, это не то, что вы хотите, также внутри python script printx.split()[1]
, чтобы увидеть, что, вероятно, это не pid. Вы должны использоватьps -e
илиps aux
илиpgrep
илиpkill
, в зависимости от того, что это за XXXX, которому вы соответствуете, часть процесса? полной команды? и т.д.2. Ваш вопрос помечен как linux, что это
/system/bin/
, andoid? Какая у вас операционная система?3. @thanasisp ты меня понял, это Android
4. @thanasisp конечно, я напечатал переменные. pid совпадает с тем, который получен из вывода ps. Я не совсем понимаю, почему использование ‘ps-e’ или ‘ps-aux’ или ‘pgrep’ что-то изменит
5. Вы могли бы запустить только одну команду bash
pgrep XXXX | xargs kill -9
.