有什么方法可以在 Linux/AIX 中从 ksh 更改进程名称吗?

问题描述 投票:0回答:1

有什么方法可以将进程名称从 ksh 更改为脚本名称“lx_dequeue”之类的名称。 我们有一个监控应用程序运行在 AIX 服务器上,它的作用是监控进程。 但它无法监控某些进程,因为我们的监控应用程序使用 Java Sigar API,并且无法获取按名称“lx_dequeue”搜索的进程的 PID。 'lx_dequeue' 是一个 shell 脚本,使用 '/oracle/oracle8/bin/lx_dequeue' 启动。

Sigar API 可以通过搜索关键字“ksh”而不是“lx_dequeue”来检测进程的 PID。 我们不能使用“ksh”作为搜索关键字,因为许多其他进程具有相同的进程名称“ksh”,我需要仅针对此特定进程将其更改为“lx_dequeue”。 我该怎么办,有什么办法吗?

进程运行时,ps -e 显示为,

# ps -e | grep 64356914
 64356914      -  0:00 ksh

还有 ps -ef as,

# ps -ef | grep -i "lx_dequeue"
mxuser 64356914        1   0   Jun 04      -  0:00 /bin/ksh /oracle/oracle8/bin/lx_dequeue

更新: 查看 Sigar API 文档后问题得到解决。我更改了流程搜索表达式,如下所示,它起作用了。 来自:State.Name.sw=lx_dequeue TO:State.Name.sw=ksh,Args.-1.ct=lx_dequeue

linux process aix sigar
1个回答
1
投票

不。您需要找到一种方法来指示 Sigar API 使用进程名称和参数的组合来可靠地找到 lx_dequeue 进程。

https://unix.stackexchange.com/a/119991/117549 更详细,但是当调用 lx_dequeue 脚本时,系统会找到

#!/bin/ksh
sh-bang 行并使用 lx_dequeue 重新调用 ksh script 作为其参数。这是您看到执行的最后一个进程:ksh shell 执行该文件中的命令。

如果您可以自定义 Sigar API 搜索,这个

awk
语句应该有助于确定该过程:

ps -eo comm,args | awk '$2 == "/bin/ksh" && $3 == "/oracle/oracle8/bin/lx_dequeue"'
© www.soinside.com 2019 - 2024. All rights reserved.