top
Ubuntu( / 사용)의 내 프로세스 목록에서 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
.