Убейте процесс, используя его имя внутри linux (Python)

это работает, но он убивает каждый процесс Python.

pkill python

однако, я не могу сделать:

pkill myscript.py

Я тоже пробовал команду killall, но и без везения. Должен ли я использовать регулярные выражения?

кстати, я хочу сделать это в скрипте python с импорт ОС.

5 ответов


вы запустили подпроцесс Python из того же скрипта, из которого вы его убиваете? Если это так, см. этот вопрос для сведения. Если нет, вы можете использовать pkillопция s-f для поиска имени сценария в списке аргументов процесса Python, но вы все равно рискуете убить то, что вы не намеревались. Вижу man page для получения дополнительной информации.


вы можете иметь процесс записи, это pid в файл?
В Python вы получаете pid следующим образом:

import os
os.getpid()

убийство по имени удобен, но иногда имеет нежелательные последствия, как вы видели.


sudo kill -9 `pgrep python`

эта команда убьет все запущенные процессы python


вам нужно найти идентификатор процесса (pid). Вы можете использовать команду "ps-a / grep NAME", а затем применить"kill -9 PID". Эти команды можно легко перевести на python.

попытка использовать " имя " (как в pkill) может дать несколько совпадений и, следовательно, неожиданные результаты (по крайней мере, в контексте, заданном выше в вопросе).


попробуйте это:

echo '#!/usr/bin/env python' > myscript
cat myscript.py >>myscript
chmod +x myscript
./myscript

конечно, вам придется изменить код, чтобы убить процесс с именем " myscript" В системах UNIX исполняемый файл содержит несколько байтов в начале, которые сообщают ОС, какой двоичный формат используется. Если первые два байта #! тогда ОС предполагает, что это на самом деле текстовый файл, который может быть выполнен другой программой, и ОС загружает другую программу и передает ей текстовый файл.

в этом случае я, вероятно, мог бы написали #!/usr/bin/python в верхней строке, но если ваш python находится в /usr/local/bin, тогда это не сработает. Вместо этого я используюenv чтобы заставить его искать ваш обычный путь для python. Все системы UNIX имеют env в / usr / bin. Для получения дополнительной информации вы можете ввести man env.