Wing IDEのプロセス名をPythonからより説明的な名前に変更する方法

Wing IDEのプロセス名をPythonからより説明的な名前に変更する方法

topUbuntu(/使用)のプロセスリストのSystem Monitor最大のメモリスペース(200 + Mb)の1つはです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_PRELOADptrace

答え2

derobertがすでに指摘したように、プロセステーブルから別の名前を取得する最も簡単な方法pythonwing_ide

実行コマンドは、実際に次のように私がパッチした2番目のスクリプトを/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

関連情報