Как вы можете изменить имя процесса Wing IDE с питона на что-то более описательное

В моем списке процессов под Ubuntu (с использованием top / System Monitor ) одним из самых больших богов памяти (200 + Мб) был python . Я несколько раз искал одну из моих программ, пока не понял, что это была моя Python IDE ( Wing ), которая сама написана на Python.

Я думал, что могу изменить название программы, вставив setproctitle из пакета setproctitle , но версия python, используемая Wing, отличается от моей. setproctitle необходимо скомпилировать, а питон, который использует это крыло, не является полной установкой (я спросил Wing Support, но они вряд ли изменят это / включить setproctitle).

setproctitle может изменить только имя запущенного процесса, поэтому я не смог создать скрипт, запускающий Wing, а затем изменить имя процесса.

После этого я попытался написать в / proc / PIDNUM / comm, но хотя этот файл «rw», мне не разрешено писать там.

Наконец, я нашел не столь портативное решение для этого конкретного случая. Но я хотел бы знать, существует ли стандартный способ изменения имени процесса другого (возможно, дочернего) процесса с системным вызовом Linux.

3 Solutions collect form web for “Как вы можете изменить имя процесса Wing IDE с питона на что-то более описательное”

Процесс может записывать только в свой собственный /proc/pid/comm . Так как кажется, что вы можете изменить код IDE, вы можете просто написать его /proc/self/comm .

Другой вариант – изменить имя исполняемого файла Python, а затем изменить все #! но это может быть PITA.

Другие – более болезненные варианты – писать код C и использовать LD_PRELOAD или ptrace .

Как уже указывал derobert, возможно, самый простой способ получить другое имя в таблице процессов – переименовать «частный» исполняемый файл python из python в wing_ide .

Команда запуска, /usr/bin/wing4.1 , на самом деле является минимальным сценарием оболочки, вызывающим второй скрипт /usr/lib/wingide4.1/run-wing.sh я исправил следующим образом:

 @@ -66,7 +66,9 @@ # Location of Python interpreter to use, if not already set if [ "${WINGPYTHON}" = "" ]; then - if [ -x "${WINGHOME}/bin/PyCore/python" ]; then + if [ -x "${WINGHOME}/bin/PyCore/wing_ide" ]; then + WINGPYTHON="${WINGHOME}/bin/PyCore/wing_ide" + elif [ -x "${WINGHOME}/bin/PyCore/python" ]; then WINGPYTHON="${WINGHOME}/bin/PyCore/python" elif [ "${WINGIDE_USE_QT4}" = "1" ]; then WINGPYTHON="${WINGHOME}/bin/runtime-python2.7/bin/python2.7" 

в дополнение к этому я скопировал ${WINGHOME}/bin/PyCore/python в ${WINGHOME}/bin/PyCore/wing_ide .

Для Wing 5.0 аналогичная вещь может быть выполнена, но питон по умолчанию, принятый после установки,

  WINGPYTHON="${WINGHOME}/bin/runtime-python2.7/bin/python2.7" 

поэтому это нужно скопировать в wing_ide в том же каталоге и использовать

Вы можете увидеть всю команду, используемую для вызова процесса, используя top , но по умолчанию он не показывает его. Переключите это в нижнем регистре c . Это должно позволить вам отличить одно приложение python от другого.

Разница между вызовом командной строки и именем процесса появляется в proc также, как cmdline и comm .

  • идентификатор / идентификатор процесса анализа из / proc, идентификаторы потоков
  • Что я должен делать с Python 2.7.9, не ищущим сертификатов SSL в нужном месте на FreeBSD?
  • Удалить узел XML, содержащий определенный элемент
  • Как загрузить данные в одну таблицу из нескольких файлов excel?
  • echo $ PATH показывает путь к скриптам python, но они не могут быть выполнены
  • Не найдена команда 'foo', даже если 'foo' intsalled
  • Нет модуля. Найдена ошибка в Linux, но отлично работает в Windows.
  • Установка Python не выполняется в chroot
  • Построить xpra в локальном каталоге без привилегий root
  • Строка печати содержит максимальное и минимальное значение
  • Запуск скрипта Python через cron с sudo?
  • Linux и Unix - лучшая ОС в мире.