1

我的应用程序由 4 个独特的进程组成。出于 HA 的原因,我将启动每个进程的 3 个实例,以便每个进程的 2 个实例将在单个 linux 主机上运行,​​而另一个实例将在不同的 linux 主机上运行。我正在尝试编写一个监视脚本(bash 脚本),它会定期轮询这些进程。我的主要挑战是编写一个依赖于主机名和进程名的脚本听起来很笨拙。例如,我不想编写一个脚本来监视进程-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 上解决这个问题?

4

1 回答 1

1

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

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

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

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

于 2012-09-28T16:50:13.950 回答