如何设置要从shell脚本触发的进程的进程名称?
例如,如果我要从shell脚本java <classname>
执行一个java类文件,那么当我执行Java_Process_1
时,我需要将该java进程视为ps ax
。
答案 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]之前,需要存在一个进程。