¿Cómo se puede cambiar el nombre del proceso de Wing IDE de Python a algo más descriptivo?

¿Cómo se puede cambiar el nombre del proceso de Wing IDE de Python a algo más descriptivo?

En mi lista de procesos en Ubuntu (usando top/ System Monitor), uno de los mayores consumidores de memoria (más de 200 Mb) era python. Busqué un poco que uno de mis programas fuera la causa hasta que me di cuenta de que este era mi IDE de Python (Ala), que a su vez está escrito en Python.

Pensé que podría cambiar el nombre del programa insertando setproctitle desde elestablecerproctítulopaquete, pero la versión de Python que utiliza Wing es diferente a la mía. setproctitledebe compilarse y el Python que usa Wing no es una instalación completa (le pregunté a Wing Support pero es poco probable que cambien eso/incorporen setproctitle).

setproctitleSolo puedo cambiar el nombre del proceso en ejecución, por lo que tampoco pude crear un script que inicie Wing y luego cambie el nombre del proceso.

Después de eso intenté escribir en /proc/PIDNUM/comm, pero aunque ese 'archivo' es 'rw', no puedo escribir allí.

Finalmente encontré una solución no tan portátil para este caso particular. Pero me gustaría saber si existe una forma estándar de cambiar el nombre del proceso de otro proceso (posiblemente hijo) con una llamada al sistema Linux.

Respuesta1

Un proceso sólo puede escribir en sí mismo /proc/pid/comm. Entonces, dado que parece que puedes modificar el código del IDE, puedes simplemente escribirlo en /proc/self/comm.

Otra opción sería cambiar el nombre de su ejecutable de Python y luego cambiar todas las #!líneas, pero puede ser un PITA.

Otras opciones (más dolorosas) serían escribir código C y usar LD_PRELOADo ptrace.

Respuesta2

Como ya indicó derobert, probablemente la forma más fácil de obtener un nombre diferente en la tabla de procesos es cambiar el nombre del ejecutable de Python 'privado' de pythona wing_ide.

El comando de inicio, /usr/bin/wing4.1es en realidad un script de shell mínimo que llama a un segundo script /usr/lib/wingide4.1/run-wing.shque parcheé de la siguiente manera:

@@ -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"

además de eso copié el ${WINGHOME}/bin/PyCore/pythonto ${WINGHOME}/bin/PyCore/wing_ide.

Para Wing 5.0 se puede hacer algo similar, pero el Python predeterminado que se toma después de la instalación es

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

entonces esto debe copiarse wing_ideen el mismo directorio y usarse

Respuesta3

Puede ver el comando completo utilizado para invocar un proceso usando top, pero no lo muestra de forma predeterminada. Cambie eso con minúsculas c. Esto debería permitirle distinguir una aplicación de Python de otra.

La diferencia entre la invocación de la línea de comando y el nombre del proceso también aparece en proc, como cmdliney comm.

información relacionada