web-dev-qa-db-ja.com

GNU / Linuxでプロセスに特定の名前を付けますか?

psコマンドで特定の識別子を持つようにプロセスを起動するにはどうすればよいですか?

[〜#〜] upd [〜#〜]:1つのボックスでいくつかのサーバーを実行しています。それらのほとんどは展開モードです。ただし、1つは開発中です。すべてのサーバーはPythonicであり、すべてのサーバーがpythonpsとしてリストされているため、開発中のサーバーをkillallそのままにして他のサーバーをそのままにすることはできません。

[〜#〜] upd [〜#〜]:DavidとGNUixが示唆したように、各サーバーのPythonインタプリタおよびbashスクリプトへのシンボリックリンクを作成しました。

10
Alex

シンボリックリンクを作成することでうまくいくはずですが、症状ではなく病気を知っていればより役に立ちます。正確に何をしようとしていますか?より良い方法があるかもしれないので

gnuix@defiant)-(08:11pm-:-06/10)--
(~)./0012
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14020 pts/1    00:00:00 0012
14021 pts/1    00:00:00 ps
(gnuix@defiant)-(08:11pm-:-06/10)--
(~)ln -s 0012 weird
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)./weird 
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14046 pts/1    00:00:00 weird
14047 pts/1    00:00:00 ps
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)

pdate:できる追加情報に基づいて(より簡単な方法があると確信していますが、現時点では私に届きません)、サーバーに起動時にPIDをファイルに書き込んでから、 -9を殺すことができます| cat /var/run/devserver.pidしかし、それはプログラミングの質問になります:)

再度更新:起動時にサーバーのPIDを取得するためにいくつかのShellトリックを実行することもできます。たとえば、コマンドをラップするstartmyserverというShell関数を作成できます。サーバーの起動に使用するだけでなく、$もキャプチャします。スタートアップ名に基づいたファイルに-次に、ServerFaultの「インバウンド」であるシェルスクリプトについて説明します。 :-)

7
GNUix

実行するバイナリの名前を変更できます。バイナリへのシンボリックリンクを使用するだけで済むかもしれません。

本当に名前を変更したい場合、最良の方法は、argvを設定し、実行するプロセスを実行する単純なラッパーを使用することです。ここでサンプルコードを提供する時間はありませんが、約10時間で大声で叫ぶと、私が何ができるかがわかります。

4
David Pashley

https://github.com/electrum/procname を見てください。環境変数を使用して、任意のプロセスのプロセス名を設定できます。

使用法:

LD = PRELOADおよびPROCNAME環境変数を設定してJavaを実行します。

LD_PRELOAD =/path/to/libprocname.so PROCNAME = hello Java -jar foo.jar

3
itsadok

これは実際にはSOに属していません。これは、言語固有の質問ではなく、一般的なものだからです。

短い答えは簡単ではありません。つまり、シェルまたはprocfs/sysfsの機能内から行うことはできません。それを実現するには、外部ユーティリティを使用する必要があります。

ここ の方法と理由については長い説明があります。かなりC中心であることに注意してください。

更新:

それらはpythonこれはゲームを変更します。今やSOになりすぎないので、それらを変更して this モジュールまたは同様のアプローチを利用することはおそらくより簡単でしょう)。

2
Dan Carley