如何监控linux上的各种进程

时间:2012-09-26 01:57:24

标签: linux bash

我的应用程序由4个独特的进程组成。出于HA的原因,我将启动每个实例的3个实例,使得每个进程的2个实例将在单个linux主机上运行,​​而另一个实例在不同的linux主机上运行。 我正在尝试编写一个监视脚本(bash脚本),它会定期轮询这些进程。我的主要挑战是编写一个主机名和进程名依赖的脚本听起来很糟糕。例如,我不想编写一个脚本来监视linux主机上的进程-A-1,进程-B-1,进程-A-2,进程-B-2,其中IP地址为A,进程-A-3为linux IP主机地址B.

编写独立于主机和进程名称的监视脚本的一种方法是,当每个进程启动时,它们都会创建互斥锁名称。例如,process-A-1将创建一个名为mutex.process-A-1的互斥锁,而process-A-2将创建一个名为mutex.process-A-2的互斥锁。然后,脚本所要做的就是在名为mutex.process-A *的系统上查找互斥锁。然后,该脚本可以使用ps命令检查这些进程是否正在运行。

我的问题是与互斥锁名称耦合好吗?你有没有其他方法在linux上解决这个问题?

1 个答案:

答案 0 :(得分:1)

我个人会编写一个bash脚本,它在后台运行所有这些进程,然后你可以在调用它们之后直接存储它们,在将每个PID发送到后台后存储process1_pid=$!然后触发另一个脚本进行监视使用那些pids。

获取其PID的其他方法是使用jobs命令将列出您设置为后台的所有作业,jobs -p将列出您在后台拥有的所有PID。您还可以利用工作来了解他们是否仍在运行。

http://www.gnu.org/software/bash/manual/bashref.html#Job-Control

我从那里开始,如果它更复杂并且您的流程是从其他地方创建的,您可以随时使用特定用户运行它们并使用ps -u按用户过滤它们。