Wing IDE의 프로세스 이름을 Python에서 좀 더 설명적인 이름으로 어떻게 변경할 수 있습니까?

Wing IDE의 프로세스 이름을 Python에서 좀 더 설명적인 이름으로 어떻게 변경할 수 있습니까?

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

나는 setproctitle을 삽입함으로써 프로그램의 이름을 바꿀 수 있다고 생각했다.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가 이미 지적했듯이 프로세스 테이블에서 다른 이름을 얻는 가장 쉬운 방법은 아마도 '비공개' Python 실행 파일의 이름을 python에서 wing_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.

관련 정보