bash:在命令行参数中添加注释

bash:在命令行参数中添加注释,bash,Bash,我有一台RHEL机器,可以运行许多进程。许多过程可能具有等效的启动参数,因此从top和ps来看,它们在这一类别中是相同的,不能相互识别 如何在流程的参数中命名或标记流程,以便能够相互识别?除了在bash中执行此操作外,对于Java进程或屏幕会话,我将如何执行此操作?如果我错了,请纠正我,但我认为您要查找的是别名。 请看这里:。我不知道如何使用程序的参数,但您可以通过将java硬链接(甚至是符号链接)到不同的名称并通过该名称调用它来实现 例如: gedit & gedit1=$! 在一个

我有一台RHEL机器,可以运行许多进程。许多过程可能具有等效的启动参数,因此从
top
ps
来看,它们在这一类别中是相同的,不能相互识别


如何在流程的参数中命名或标记流程,以便能够相互识别?除了在bash中执行此操作外,对于Java进程或屏幕会话,我将如何执行此操作?

如果我错了,请纠正我,但我认为您要查找的是别名。

请看这里:。

我不知道如何使用程序的参数,但您可以通过将java硬链接(甚至是符号链接)到不同的名称并通过该名称调用它来实现

例如:

gedit & gedit1=$!
在一个终端中运行以下各项:

$ cd /tmp
$ ln -s /bin/cat abc
$ ln -s /bin/cat def
$ ./abc
在另一个终端运行中:

$ cd /tmp
$ ./def
$ ps aux | egrep 'abc\|def'
在第三个终端运行中:

$ cd /tmp
$ ./def
$ ps aux | egrep 'abc\|def'

您将看到一个进程名为“abc”,另一个进程名为“def”,两个进程都没有名称“cat”。因此,如果您这样做,为每个进程创建不同的链接,那么您就可以区分它们。

您可以创建这样的脚本

#! /bin/bash
"$@"
假设您将其命名为
过程标签
。您可以链接不同的名称

$ ln process-label other-label
你可以执行

$ process-label sleep 1800 &
$ other-label sleep 800 &
您将得到您的流程标签

15016 ttys002    0:00.00 /bin/bash ./process-label sleep 1800
15017 ttys002    0:00.00 sleep 1800
15021 ttys002    0:00.00 /bin/bash ./other-label sleep 800
15022 ttys002    0:00.00 sleep 800

实现这一点的标准方法是使用
$获取进程id。这样,您就不会标记进程,但您有一个唯一标识它的id。例如:

gedit & gedit1=$!
这将启动gedit并将进程id保存在变量
gedit1
中。如果我想稍后终止进程。我会写

kill $gedit1

如果这是java特有的,您可以传递一个未使用的系统属性,如下所示:

java -Dtag=process1  -jar ....

这不仅显示在命令行上,而且在进程内部也可以看到,如果您需要的话。

这不是一个别名,不能帮助我识别一个进程和另一个进程吗?@hexa氰化物它确实有帮助。当我的编辑获得批准时,请参见我添加到该答案中的示例。