Hello,
currently monit requires pid file - we will add support for monitoring
processes without pid file in the future.
The workaround is simple - you can prepare wrapper for your program startup
which will write PID of the program to the pid file. Excerpt from
(http://mmonit.com/wiki/Monit/FAQ#pidfile:
--8<--
Q: I have a program that does not create its own pid file. Since monit requires
all programs to have a pid file, what do I do?
A: Create a wrapper script and have the script create a pid file before it
starts the program. Below you can find an example script for starting an
imaginary program (a Java program in this case). Assuming that the script is
saved in a file called /bin/xyz, you can call this script from monit by using
the following in monitrc:
check process xyz with pidfile /var/run/xyz.pid
start = "/bin/xyz start"
stop = "/bin/xyz stop"
The wrapper script:
#!/bin/bash
export JAVA_HOME=/usr/local/java/
CLASSPATH=ajarfile.jar:.
case $1 in
start)
echo $$ > /var/run/xyz.pid;
exec 2>&1 java -cp ${CLASSPATH} org.something.with.main 1>/tmp/xyz.out
;;
stop)
kill `cat /var/run/xyz.pid` ;;
*)
echo "usage: xyz {start|stop}" ;;
esac
exit 0
--8<--
... the "echo $$" writes PID to file and exec starts the program and inherits the
PID which was written to the pid file. If the program forks/demonize itself, the PID file
can be different then what was written to the file - in this case you can use instead 'pgrep
myprogram > /var/run/xyz.pid' or if pgrep is not available, use some equivalent (ps -ef |
grep ...).
Regards,
M/Monit support
On Apr 11, 2010, at 11:29 AM, David Touzeau wrote:
Dear
I use monit but i need to monitor a process daemon that did not create Pid file.
Is there any way to specify monit verify if a process (given by it's full path
or it's command line) is on memory or not ?
best regards
--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general
--
To unsubscribe:
http://lists.nongnu.org/mailman/listinfo/monit-general