我的应用程序由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上解决这个问题?
答案 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
按用户过滤它们。