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

时间:2012-08-05 01:41:18

标签: bash

我有一台RHEL机器,我运行了很多进程。很多流程可能具有相同的开始参数,因此从topps开始,它们在此类别中是相同的,无法相互识别。

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

5 个答案:

答案 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'。因此,如果您这样做,为每个流程创建不同的链接,那么您可以区分它们。