2010-02-12 32 views

Trả lời

15

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

sử dụng mẫu:

# 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 

Nó sẽ chỉ làm việc trên các hệ thống mà prctl hệ thống gọi là hiện tại và hỗ trợ PR_SET_NAME lệnh.

+1

Gọn gàng! Có cách nào để thực hiện cùng một thao tác ** mà không ** phát sinh thêm độ phức tạp của phần mở rộng 'C' không? – jldupont

+0

http://bugs.python.org/issue5672 làm cho tôi nghĩ rằng, không, không có :-( – bernie

+2

trong vé đó, họ cũng đề cập đến một công cụ thay đổi tên quy trình khác (cũng bằng C): http: // code.google.com/p/py-setproctitle/source/browse/tools/ – bernie

8

còn có tùy chọn làm những điều sau đây, mặc dù nó chỉ hoạt động trên Linux (với prctl(2) cuộc gọi)

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

Không hoạt động Debian 6, x86_64. – Hongli

+0

không hoạt động trên ubuntu :( –

+0

Thử thay thế 16 bằng PR_SET_NAME – Dan

4

thư viện procname không làm việc cho tôi trên ubuntu. Thay vào đó, tôi đã sử dụng setproctitle (pip install setproctitle). Đây là những gì gunicorn sử dụng và nó làm việc cho tôi.

11

Có đơn giản hơn (bạn không cần nhập bất kỳ libs nào) nhưng có thể không phải là cách rất thanh lịch. Bạn không được sử dụng "env" bên trong dòng shebang.

Nói cách khác, điều này sẽ được đặt tên là "trăn" trong danh sách quá trình:

#!/usr/bin/env python 

Nhưng điều này sẽ được đặt tên với Tập lệnh của bạn:

#!/usr/bin/python 

Vì vậy, bạn sẽ có thể tìm thấy nó với một cái gì đó như pidof -x scriptname hoặc ps -C scriptname

+1

chính xác là những gì tôi đang tìm kiếm Cảm ơn bạn – user1061392

+0

Hiệu quả khi chúng tôi đang làm việc với các tệp bash. – dlopezgonzalez

Các vấn đề liên quan