top
Ubuntu( / 사용)의 프로세스 목록에서 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가 이미 지적했듯이 프로세스 테이블에서 다른 이름을 얻는 가장 쉬운 방법 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
.