5

我有一台运行许多进程的 RHEL 机器。许多进程可能具有等效的启动参数,因此在这一类别topps它们是相同的,无法相互识别。

我如何在其参数中命名或标记一个进程,以便我可以从另一个中识别一个?除了在 bash 中执行此操作之外,我将如何为 Java 进程或屏幕会话执行此操作?

4

5 回答 5

6

执行此操作的规范方法是使用$!. 这样您就不会标记该过程,但您有一个唯一标识它的 id。例如:

gedit & gedit1=$!

这将启动 gedit 并将进程 ID 保存在变量 中gedit1。如果我想稍后杀死该进程。我只能写

kill $gedit1
于 2012-08-05T06:09:49.750 回答
1

您可以创建这样的脚本

#! /bin/bash
"$@"

假设你命名它process-label。您可以链接不同的名称

$ 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
于 2012-08-05T05:26:57.217 回答
1

如果这是特定于 java 的,您可以像这样传递未使用的系统属性:

java -Dtag=process1  -jar ....

这不仅显示在命令行上,而且在进程中也可见,如果您需要的话。

于 2012-08-05T08:33:50.593 回答
0

如果我错了,请纠正我,但我认为你正在寻找的是别名。
见这里: http: //www.stchman.com/alias.html

于 2012-08-05T01:43:33.197 回答
0

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

例如:

在一个终端中运行以下命令:

$ cd /tmp
$ ln -s /bin/cat abc
$ ln -s /bin/cat def
$ ./abc

在另一个终端运行:

$ cd /tmp
$ ./def

在第三个终端运行:

$ ps aux | egrep 'abc\|def'

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

于 2012-08-05T02:02:10.217 回答