1

如何为要从 shell 脚本触发的进程设置进程名称?

例如,如果我要从一个 shell 脚本执行一个 java 类文件,java <classname>我需要Java_Process_1在我执行的时候看到该 java 进程ps ax

4

5 回答 5

2

尝试exec -a Java_Process_1 java <classname>

于 2013-03-19T14:29:53.180 回答
0

如果您使用的是 bash,则应该接受 hwatkins 的回答。否则,您可以使用专门为此目的制作的几个小程序之一,例如来自http://cr.yp.to/ucspi-tcp.html的 argv0 ,runit 的 chpst ( http://smarden.org/runit/chpst.8 .html ) 等

于 2013-03-20T17:40:51.553 回答
0

假设您需要 Java 进程,您可以利用 JVM 的属性特性并为您的进程创建一个标签(如果它愿意,程序本身也可以看到):

java -Dmy.appid=Java_Process_1 <classname>

但一般来说,ps它将读取/proc/$pid/cmdline它打印的命令行的值,并且该值将是命令的确切参数向量的值,以空字符分隔。这意味着像“Java_Process_1”这样的自定义字符串将采取某种形式的非标准技巧。

于 2013-03-20T17:56:48.730 回答
0

另一种方法是使用您的应用程序名称创建指向您的 java 的符号链接。ps 将使用符号链接的名称。

ln -s Java_Process_1 /usr/bin/java

然后开始你的应用程序

Java_Process_1 -jar ......

于 2013-10-06T13:16:37.127 回答
-1

你不能。一个进程需要存在才能修改的 argv[0]。

于 2013-03-19T08:53:44.870 回答