¿Cómo cambiarle el nombre al proceso "python3"?

Tengo un programa en Python que corre de fondo en Linux emitiendo sonidos. El problema es que figura con el nombre “python3” en todos lados. Por ejemplo, en el control de volumen del sistema:

Así también en otros lados como en el comando top, etc. Me gustaría que los usuarios lo puedan identificar, para controlar el volumen.

Estuve viendo la biblioteca setproctitle y funciona perfecto. Pero me gustaría saber si puede resolverse sin agregar una dependencia. ¿Quizá envolviéndolo en un programa en C? ¿Alguna otra solución?

Este programa es tuyo? O es algo que está en tu sistema y no tenés mucho control?

Sí, lo manejo yo. Es https://github.com/endlessm/hack-sound-server

Encontré estas dos libs, pero no las probé:

Esa PRCTL es espantosamente vieja en PyPI (tiene el release del 2010, y es Py2). Pero desde github anduvo.

Hice esto:

#!/usr/bin/env fades

import time

import prctl  # fades git+https://github.com/seveas/python-prctl

prctl.set_proctitle("caramba")
time.sleep(100)

Y luego de correrlo:

$ ps -eaf | grep caram
facundo   653618  653435  0 11:20 pts/2    00:00:00 caramba
facundo   654234  643959  0 11:21 pts/3    00:00:00 grep caram
1 me gusta

Gracias @facundo! Sí, como dije en el primer post probé una de esas bibliotecas y funciona perfecto, pero me hacía un poco de ruido: es una dependencia en C que llama a la función prctl(PR_SET_NAME) de linux (man prctl) para cambiarle el nombre al proceso “on the fly”.

Me fui a leer esta issue donde se discute y rechaza meter esta funcionalidad en python. Y me di cuenta que lo que necesito en realidad es: distribuir mi app de forma estandar con setuptools, para que genere un ejecutable compatible con la plataforma posix.

Con este setup:

setup(
    entry_points = {
        'console_scripts': ['caramba=mimodulo.caramba:main'],
    },
    ...
)

…se distribuye un comando caramba que aparece con ese mismo nombre en top, ps, etc.

Deberías poder hacerlo con ctypes (en la stdlib) “en dos o tres líneas”…
Quizas algo como esto https://github.com/cream/python-cream/blob/7341be6d299a4b8b3e83da293c17626ac483fbac/cream/util/procname.py ?

Abz!

1 me gusta