我有一台RHEL机器,我运行了很多进程。很多流程可能具有相同的开始参数,因此从top
和ps
开始,它们在此类别中是相同的,无法相互识别。
如何在参数中命名或标记进程,以便我可以识别另一个进程?除了在bash中执行此操作之外,我将如何为Java进程或屏幕会话执行此操作?
答案 0 :(得分:6)
执行此操作的规范方法是使用$!
获取进程ID。这样您就不会标记进程,但是您有一个唯一标识它的ID。例如:
gedit & gedit1=$!
这将启动gedit并将进程ID保存在变量gedit1
中。如果我想稍后杀死这个过程。我可以写
kill $gedit1
答案 1 :(得分: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
答案 2 :(得分:1)
如果这是特定于java的,您可以传递一个未使用的系统属性,如下所示:
java -Dtag=process1 -jar ....
这不仅会显示在命令行上,而且如果您需要,也会在流程中显示。
答案 3 :(得分:0)
如果我错了,请纠正我,但我认为你要找的是别名 见这里:http://www.stchman.com/alias.html。
答案 4 :(得分: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'。因此,如果您这样做,为每个流程创建不同的链接,那么您可以区分它们。