top
Ubuntu(/使用)のプロセスリストの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_PRELOAD
かptrace
。
答え2
derobertがすでに指摘したように、プロセステーブルから別の名前を取得する最も簡単な方法python
はwing_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
。