Comments 16
Копирование строки в argv[0] это не самый гуманный вариант изменения имени процесса - можно запросто затереть энвайронмент.
Для линуксов позже 2.6.9 лучше использовать prctl
Для FreeBSD есть setproctitle.
Для линуксов позже 2.6.9 лучше использовать prctl
#include <sys/prctl.h>
prctl(PR_SET_NAME, "hello world");
Для FreeBSD есть setproctitle.
+2
Спасибо.
Да писать много в argv[0] не хорошо.
Сейчас я использую оба метода - и argv[0] и prctl - дело в том, что одного не достаточно, т.к. top и ps берут инфу из разных мест. Выходит, что в одном переименовано, а в другом нет.
Да писать много в argv[0] не хорошо.
Сейчас я использую оба метода - и argv[0] и prctl - дело в том, что одного не достаточно, т.к. top и ps берут инфу из разных мест. Выходит, что в одном переименовано, а в другом нет.
0
Не подскажете во FreeBSD есть метод получения имени процесса?
В том же линуксовом prctl есть PR_GET_NAME.
Не хочется ради совместимости выкидывать функцию получения имени.
В том же линуксовом prctl есть PR_GET_NAME.
Не хочется ради совместимости выкидывать функцию получения имени.
0
Вот, хороший пример отличной статьи. Спасибо, даже не смотря на то, что мне пока такая библиотека не нужна, читать было интересно и позновательно в избранное.
+1
Сказать просто нечего :)
0
Предложили перенести в тематический блог.
+1
Вопрос автору: а почему сырой make, а не стандартные distutils?
0
Пока все немного сыровато, и для большей гибкости сборки я решил использовать низкоуровневые средства, где я могу четко контролировать процесс сборки, какие инклуды берутся, опции компилятора и т.п. Конечно, это не универсально, для установки пользователям практически наверняка придется править Makefile.
В дальнейшем, когда библиотека окончательно созреет, я думаю перейти на использование distutils, чтобы пользователю на любой системе было легко и удобно ее ставить.
В дальнейшем, когда библиотека окончательно созреет, я думаю перейти на использование distutils, чтобы пользователю на любой системе было легко и удобно ее ставить.
0
Все намного проще ./my_script.py
0
Пробовали так запускать?
Не везде будет выглядеть как my_script, где-то будет просто написано python.
А как быть с процессами-потомками? Если, например, у меня многопроцессный демон, то всего процессы будут называться одинаково.
Кроме того, основной упор в статье на динамическое переименование — т. е. в процессе выполнения. Я это использую как очень простое и наглядное средство мониторинга.
Не везде будет выглядеть как my_script, где-то будет просто написано python.
А как быть с процессами-потомками? Если, например, у меня многопроцессный демон, то всего процессы будут называться одинаково.
Кроме того, основной упор в статье на динамическое переименование — т. е. в процессе выполнения. Я это использую как очень простое и наглядное средство мониторинга.
0
Всегда так запускаю, все видно.
Согласен треды не видны, но если я не ошибаюсь их вообще не видно как отдельные процессы.
Согласен треды не видны, но если я не ошибаюсь их вообще не видно как отдельные процессы.
0
Я именно про процессы, а не потоки.
У меня это выглядит примерно так:
У меня это выглядит примерно так:
~$ ps owner 28813 0.0 1.4 18808 7660 ? S Oct07 0:54 XXd: master process owner 28924 0.0 0.0 150 0 ? S 13:07 0:00 XXd: task 150 owner 28928 0.0 0.0 0 0 ? Z 13:07 0:00 [XXd: sync] <defunct> owner 28929 0.0 0.0 200 0 ? S 13:07 0:00 XXd: task 839
0
code.google.com/p/py-setproctitle/
более-менее кроссбраузерно, под маком меняет имя в ps, в top остаётся прежним python
более-менее кроссбраузерно, под маком меняет имя в ps, в top остаётся прежним python
0
Sign up to leave a comment.
Переименование процессов в Python