2010-02-12 7 views

Répondre

15

http://code.google.com/p/procname/

Exemple d'utilisation:

# Lets rename:  
>>> procname.setprocname('My super name')  

# Lets check. Press Ctrl+Z  
[email protected]:~/procname$ ps 

    PID TTY TIME CMD 

13016 pts/2 00:00:00 bash 

13128 pts/2 00:00:00 My super name <-- it's here 

Il ne fonctionne que sur les systèmes où l'appel système prctl est présent et prend en charge la commande PR_SET_NAME.

+1

Neat! Existe-t-il un moyen d'effectuer la même opération ** sans ** encourir la complexité supplémentaire d'une extension 'C'? – jldupont

+0

http://bugs.python.org/issue5672 me fait penser que, non, il n'y a pas :-( – bernie

+2

dans ce billet, ils mentionnent aussi un autre outil de changement de nom de processus (également en C): http: // code.google.com/p/py-setproctitle/source/browse/tools/ – bernie

8

Il y a la possibilité de faire ce qui suit, mais il ne fonctionne que sur Linux (avec l'appel prctl(2))

if sys.platform == 'linux2': 
    import ctypes 
    libc = ctypes.cdll.LoadLibrary('libc.so.6') 
    libc.prctl(15, 'My Simple App', 0, 0, 0) 
+0

Ne fonctionne pas Debian 6, x86_64. – Hongli

+0

ne fonctionne pas sur ubuntu :( –

+0

Essayez de remplacer 16 par PR_SET_NAME – Dan

4

la bibliothèque procname ne fonctionne pas pour moi ubuntu. Je suis allé avec setproctitle à la place (pip install setproctitle). C'est ce que Gunicorn utilise et ça a marché pour moi.

11

Il est plus simple (vous n'avez pas besoin d'importer de libs) mais peut-être pas si élégant. Vous ne devez pas utiliser "env" à l'intérieur de la ligne shebang.

En d'autres termes, il sera nommé comme « python » dans la liste des processus:

#!/usr/bin/env python 

Mais ce sera nommé avec votre scriptname:

#!/usr/bin/python 

Vous serez en mesure de le trouver avec quelque chose comme pidof -x scriptname ou ps -C scriptname

+1

est exactement ce que je cherche Merci – user1061392

+0

Efficace lorsque nous travaillons avec des fichiers bash Merci. – dlopezgonzalez

Questions connexes