वास्तव में आप लिनक्स पर 2 बातें की जरूरत है।
इसमें अजगर से ही पहले टुकड़ा करने के लिए कोई रास्ता नहीं है। हालांकि, आप prctl को कॉल करके प्रक्रिया का नाम बदल सकते हैं।
def set_proc_name(newname):
from ctypes import cdll, byref, create_string_buffer
libc = cdll.LoadLibrary('libc.so.6')
buff = create_string_buffer(len(newname)+1)
buff.value = newname
libc.prctl(15, byref(buff), 0, 0, 0)
def get_proc_name():
from ctypes import cdll, byref, create_string_buffer
libc = cdll.LoadLibrary('libc.so.6')
buff = create_string_buffer(128)
# 16 == PR_GET_NAME from <linux/prctl.h>
libc.prctl(16, byref(buff), 0, 0, 0)
return buff.value
import sys
# sys.argv[0] == 'python'
# outputs 'python'
get_proc_name()
set_proc_name('testing yeah')
# outputs 'testing yeah'
get_proc_name()
ps auxf
उसके बाद सिर्फ 'अजगर' दिखाएगा :(। लेकिन top
और ps -A
नए 'का परीक्षण हाँ' प्रक्रिया नाम प्रदर्शित करेंगे :)। इसके अलावा killall
और pkill
नए नाम के साथ काम करेंगे।
बीटीडब्ल्यू, googlecode से procname भी argv[0]
बदलता है, इस प्रकार, ps auxf
आउटपुट भी बदलता है।
अद्यतन: इस उत्तर में पोस्ट किया गया समाधान फ्रीबीएसडी पर कभी-कभी अच्छा नहीं खेलता है। अब मैं py-setproctitle का उपयोग कर रहा हूं in this answer एक वर्ष या उससे अधिक विभिन्न लिनक्स और फ्रीब्स बॉक्स पर। अब तक कोई असफल नहीं है! सबको भी चाहिए! :)। यह PostgreSQLuses इसकी मुख्य डेटाबेस और बच्चे की प्रक्रिया में के रूप में लगभग एक ही कोड का उपयोग करता है। जाँच https://github.com/dvarrazzo/py-setproctitle
यह PostgreSQL द्वारा प्रयोग किया जाता शीर्षक परिवर्तन प्रदर्शन करने के लिए कोड के चारों ओर एक आवरण है:
स्रोत
2009-05-28 20:39:05
जैसे कुछ के साथ इसे ढूंढें https://superuser.com/questions/427642/is-it-possible-to-set-the-process-name-with-pythonw, जहां http: // bugs.python.org/issue5672 मुझे है ntionned – anarcat