如何在shell脚本中触发进程名称之前手动设置进程名称?

时间:2013-03-19 08:49:35

标签: shell unix

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

例如,如果我要从shell脚本java <classname>执行一个java类文件,那么当我执行Java_Process_1时,我需要将该java进程视为ps ax

5 个答案:

答案 0 :(得分:2)

尝试exec -a Java_Process_1 java <classname>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

java -Dmy.appid=Java_Process_1 <classname>

通常,ps将为其打印的命令行读取/proc/$pid/cmdline的值,并且此值将是命令的确切参数向量的值,null - 字符分隔。这意味着像“Java_Process_1”那样获取自定义字符串会采取某种形式的非标准欺骗。

答案 3 :(得分:0)

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

ln -s Java_Process_1 / usr / bin / java

然后用

启动应用程序

Java_Process_1 -jar ......

答案 4 :(得分:-1)

你做不到。在它本身可以修改其argv [0]之前,需要存在一个进程。