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

Posted

技术标签:

【中文标题】有啥方法可以在 Linux/AIX 中从 ksh 更改进程名称?【英文标题】:Is there any way I can change process name from ksh in Linux/AIX?有什么方法可以在 Linux/AIX 中从 ksh 更改进程名称? 【发布时间】:2021-08-27 09:49:04 【问题描述】:

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

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

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

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

和 ps -ef 一样,

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

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

【问题讨论】:

你可以回答你自己的问题。 【参考方案1】:

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

https://unix.stackexchange.com/a/119991/117549 更详细,但是当调用 lx_dequeue 脚本时,系统会找到 #!/bin/ksh sh-bang 行并使用 lx_dequeue 脚本作为参数重新调用 ksh。这是您看到执行的最后一个进程:ksh shell 从该文件执行命令。

如果您可以自定义 Sigar API 搜索,则此 awk 语句应该有助于确定该过程:

ps -eo comm,args | awk '$2 == "/bin/ksh" && $3 == "/oracle/oracle8/bin/lx_dequeue"'

【讨论】:

以上是关于有啥方法可以在 Linux/AIX 中从 ksh 更改进程名称?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以在 Kotlin 中从同一个通用接口继承两次(使用不同的类型)?

有啥方法可以让我在一个 pyspark 脚本中从 10 个不同的模式中提取数据?

Python中从一些成语中各提取一个字组成一句话有啥方法

shell编程中的$(command)和`command`有啥区别?

在 Swift 中从 json 解析我的数据有啥问题?

在 Visual Studio C# 中从 MS Access 数据库中获取 OLE(位图)对象,我的代码有啥问题?