This is not good:
( /home/eminer/cA3Server/cA3Server > /dev/tty6 ) &
pgrep cA3Server > /var/run/cA3Server.pid
This means that the shell will start the cA3Server in a new sub-process
and the control jumps immediately to the pgrep command. In other words
the pgrep command may finnish before the cA3Server was started. This
should explain why you got an empty value in the pid file. Use the exec
statement to start the server and *do not* put the server in the
background, monit does this automatically when it calls the script. See
also the startup script example in the FAQ.