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 実行可能ファイルの名前を変更してから、すべての#!行を変更するという方法がありますが、これは面倒な作業になる可能性があります。

LD_PRELOAD他の(より面倒な)オプションとしては、C コードを記述してまたは を使用することですptrace

答え2

derobert がすでに示したように、プロセス テーブルで別の名前を取得する最も簡単な方法は、おそらく、「プライベート」Python 実行可能ファイルの名前を から に変更することpythonですwing_ide

起動コマンド は/usr/bin/wing4.1、実際には 2 番目のスクリプトを呼び出す最小限のシェル スクリプトであり、/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

関連情報