Monit与java进程

Monit与java进程,java,monit,Java,Monit,我试图使用monit来监视java进程。进程的monit文件如下所示: check process xyz pidfile /tmp/xyz.pid start program = "/bin/bash -c 'source /home/.bashrc; source /home/xyzprog/setup.sh; /home/xyzprog/xyz start'" stop program = "/bin/bash -c '/home/xyzprog/xyz stop'" 如果我从 sudo

我试图使用monit来监视java进程。进程的monit文件如下所示:

check process xyz pidfile /tmp/xyz.pid
start program = "/bin/bash -c 'source /home/.bashrc; source /home/xyzprog/setup.sh; /home/xyzprog/xyz start'"
stop program = "/bin/bash -c '/home/xyzprog/xyz stop'"
如果我从

sudo monit start xyz
但如果在守护进程模式下启动monit,则完全失败


有人知道可能是什么问题吗?

好的,所以我意识到有些脚本是基于进程的主目录中运行的,所以我将启动程序更新为以下内容:

check process xyz pidfile /tmp/xyz.pid
start program = "cd /home/xyzprog; /bin/bash -c 'source /home/.bashrc; source /home/xyzprog/setup.sh; /home/xyzprog/xyz start'"
stop program = "/bin/bash -c '/home/xyzprog/xyz stop'"
if failed host 192.168.1.103 port 8080 protocol http with timeout 20 seconds for 1 cycle then restart

我只是简单地将“cd/home/xyzprog”添加到启动程序中,它就成功了!我终止了进程,它马上就回来了。

好的,所以我意识到一些脚本是基于进程的主目录中运行的,所以我将启动程序更新为以下内容:

check process xyz pidfile /tmp/xyz.pid
start program = "cd /home/xyzprog; /bin/bash -c 'source /home/.bashrc; source /home/xyzprog/setup.sh; /home/xyzprog/xyz start'"
stop program = "/bin/bash -c '/home/xyzprog/xyz stop'"
if failed host 192.168.1.103 port 8080 protocol http with timeout 20 seconds for 1 cycle then restart

我只是简单地将“cd/home/xyzprog”添加到启动程序中,它就成功了!我杀死了进程,它马上就回来了。

你说的
失败是什么意思?您遇到了什么错误?'sfs'开始:/bin/bash[UTC Jul 23 06:57:35]调试:“xyz”错误测试进程id[17427]--没有这样的进程[UTC Jul 23 06:57:35]调试:“xyz”错误测试进程id[17427]--没有这样的进程基本上进程不会启动。当monit未设置为守护程序模式时,它可以正常启动,但在守护程序中无法工作。我不知道为什么。现在这是一个java过程,所以它取决于一些环境变量,我通过在bash调用中获取一些设置脚本来处理这些变量。这在理论上应该是可行的,但在守护进程模式下不行。当我用完整路径替换其中一个安装脚本中的${PWD}时,我得到了部分解决方案。但是,如果我将其取下并让monit调用start,进程将无法重新启动。这几乎违背了我的需求。你说的
失败是什么意思?您遇到了什么错误?'sfs'开始:/bin/bash[UTC Jul 23 06:57:35]调试:“xyz”错误测试进程id[17427]--没有这样的进程[UTC Jul 23 06:57:35]调试:“xyz”错误测试进程id[17427]--没有这样的进程基本上进程不会启动。当monit未设置为守护程序模式时,它可以正常启动,但在守护程序中无法工作。我不知道为什么。现在这是一个java过程,所以它取决于一些环境变量,我通过在bash调用中获取一些设置脚本来处理这些变量。这在理论上应该是可行的,但在守护进程模式下不行。当我用完整路径替换其中一个安装脚本中的${PWD}时,我得到了部分解决方案。但是,如果我将其取下并让monit调用start,进程将无法重新启动。这几乎违背了我的目的。