Уничтожьте процесс с помощью его имени в Linux (Python)

Один окольный путь это должно перенаправить POST к странице, которая перенаправляет к ПОЛУЧЕНИЮ - видит , Отправляют/Перенаправляют/Входят Википедию .

Говорят, что Ваш POST является 4K данных формы. По-видимому, Ваш сервер делает что-то с теми данными вместо того, чтобы просто отобразить его однажды и выбросить его, такие как сохранение его в базе данных. Продолжайте делать это, или если это - огромная поисковая форма, создают временную копию его в базе данных, которая очищена после нескольких дней или на основе LRU, когда предел пространства используется. Теперь создайте представление данных, с помощью которые можно получить доступ, ДОБИРАЮТСЯ. Если это является временным, генерируйте идентификатор для него и использование что как URL; если это - постоянный набор данных, это, вероятно, имеет идентификатор или что-то, что может использоваться для URL. В худшем случае алгоритм как крошечное использование URL может свернуть большой URL к намного меньшему. Перенаправьте POST для ПОЛУЧЕНИЯ представления данных.

Как исторический очерк, эта техника была установленная практика в 1995 .

7
задан TIMEX 22 October 2009 в 23:40
поделиться

4 ответа

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

5
ответ дан 7 December 2019 в 07:47
поделиться

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

import os
os.getpid()

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

2
ответ дан 7 December 2019 в 07:47
поделиться

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

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

0
ответ дан 7 December 2019 в 07:47
поделиться

Попробуйте следующее:

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

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

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

-1
ответ дан 7 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: