gpt4 book ai didi

java - 使用 monit 监控 shell 脚本

转载 作者:行者123 更新时间:2023-12-02 04:35:08 25 4
gpt4 key购买 nike

我有一个 shell 脚本,它生成一个 java 进程,我想将其包装在包装器中以便与 monit 一起使用。

我已经尝试过

的 monit 推荐
#!/bin/bash

name=`basename $1`
case $2 in
start)
echo $$ > /var/run/service.pid;
exec 2>&1 $1 1>/var/log/$name.stdout
;;
stop)
kill `cat /var/run/service.pid` ;;
*)
echo "usage: <path to app> {start|stop}" ;;
esac

我会在哪里使用它,例如 wrapper.sh/usr/sbin/cmd start

当我这样做时,我看到 2 个进程启动了。一个是包装器中的 exec,另一个是我的 java 进程。

但是,$$ 的 pid 是/usr/sbin 包装器的 pid,而不是实际 java 进程的 pid。因此,如果我“停止”服务或终止该 pid,那么 java 进程就会被孤立。

另一方面,如果我在前台运行 /usr/sbin/cmd 然后终止它,它确实会终止子进程。

最佳答案

在运行命令之前无法获取 pid,但可以使用 $!。另外,我建议您使用nohup。所以类似

nohup $1 > /var/log/$name.stdout 2>&1 &
echo $! > /var/run/service.pid

关于java - 使用 monit 监控 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com