Wing IDE의 프로세스 이름을 Python에서 더 설명적인 이름으로 변경하는 방법

Wing IDE의 프로세스 이름을 Python에서 더 설명적인 이름으로 변경하는 방법

topUbuntu( / 사용)의 프로세스 목록에서 System Monitor가장 큰 메모리 공간(200+Mb) 중 하나는 입니다 python. 이것이 내 Python IDE(날개), 그 자체는 Python으로 작성되었습니다.

setproctitle을 삽입하면 프로그램 이름을 바꿀 수 있을 것 같아요프로세스 제목 설정패키지인데 Wing에서 사용하는 Python 버전이 내 버전과 다릅니다. setproctitle컴파일이 필요하며, Wing에서 사용하는 Python은 전체 설치가 아닙니다. (Wing 지원팀에 요청했지만 setproctitle을 변경/병합하지 않을 것 같습니다.)

setproctitle실행 중인 프로세스의 이름만 변경할 수 있기 때문에 Wing을 시작한 다음 프로세스의 이름을 변경하는 스크립트를 만들 수 없습니다.

그런 다음 /proc/PIDNUM/comm에 쓰려고 시도하지만 "파일"이 "rw"임에도 거기에 쓸 수 없습니다.

나는 마침내 이 특별한 경우에 대해 이식성이 떨어지는 솔루션을 찾았습니다. 하지만 Linux 시스템 호출을 통해 다른(아마도 하위) 프로세스의 프로세스 이름을 변경하는 표준 방법이 있는지 궁금합니다.

답변1

프로세스는 자신의 에만 쓸 수 있습니다 /proc/pid/comm. 따라서 IDE의 코드를 수정할 수 있는 것처럼 들리므로 그냥 작성하면 됩니다 /proc/self/comm.

또 다른 옵션은 Python 실행 파일의 이름을 변경한 다음 모든 #!줄을 변경하는 것입니다. 그러나 이는 PITA일 수 있습니다.

또 다른 더 고통스러운 옵션은 C 코드를 작성하고 LD_PRELOAD또는 ptrace.

답변2

derobert가 이미 지적했듯이 프로세스 테이블에서 다른 이름을 얻는 가장 쉬운 방법 pythonwing_ide.

실행 명령은 실제로 다음과 같이 제가 패치한 두 번째 스크립트를 /usr/bin/wing4.1호출하는 최소한의 셸 스크립트입니다 ./usr/lib/wingide4.1/run-wing.sh

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

그 외에는 ${WINGHOME}/bin/PyCore/python에 복사했습니다 ${WINGHOME}/bin/PyCore/wing_ide.

Wing 5.0에서도 비슷한 작업을 수행할 수 있지만 설치 후 채택된 기본 Python은 다음과 같습니다.

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

wing_ide따라서 동일한 디렉토리 에 복사하여 사용해야합니다.

답변3

를 사용하면 프로세스를 호출하는 데 사용된 전체 명령을 볼 수 있지만 top기본적으로 표시되지 않습니다. 소문자로 전환합니다 c. 이를 통해 하나의 Python 애플리케이션을 다른 애플리케이션과 구별할 수 있습니다.

명령줄 호출과 프로세스 이름의 차이점은 및 와 같은 proc에도 표시 cmdline됩니다 comm.

관련 정보