Error Message
[org.nuxeo.launcher.NuxeoLauncher] Sent server start command but could not get process ID.
If you got such a message in the console or in the console.log file, that means the Launcher was not able to confirm the server status, retrieving the process id.
Until Nuxeo 5.6, that warning message can also be due to a JVM start failed (for instance, not enough memory). You can check this by running nuxeoctl console
instead of nuxeoctl start
.
Since Nuxeo 5.7 (NXP-11039), the errors detection and associated messages were improved so that warning message only appears when the Java process is effectively started.
That can be a normal behavior on some old Windows versions and on Unix Solaris.
Windows users, if you can issue the two following commands without error in a Shell windows, then the Launcher must be able to manage the server process on your OS:
wmic quit
taskkill /?
Workarounds
Console Mode
First, you can start in console mode (in which case, the Launcher won't try to manage the process) in order to manually check if the server can start: nuxeoctl console
. You will have to stop the server issuing "CTRL+C"
.
If you can start the server that way, it should also be able to start with nuxeoctl startbg
. The drawback is nuxeoctl stop
won't be able to stop the server.
Java Commands
In case the issue lies in the batch file, you can try to run the Launcher with its Java command. If you issued nuxeoctl start
from a Shell window, then you can copy/paste the command titled "Launcher command". It will be of the form:
java -Dlauncher.java.opts="some JVM options" -Dnuxeo.home=/path/to/nuxeo/ -Dnuxeo.conf=/path/to/nuxeo.conf -jar /path/to/nuxeo-launcher.jar start
You can also try to directly run the server, fully bypassing the Launcher. Look into the console.log
file for a command titled "Server command". You will have to run the Launcher configuration, then the server command. It will look like:
nuxeoctl configure
java -cp "the classpath" -Dnuxeo.home=/path/to/nuxeo -Dnuxeo.conf=/path/to/nuxeo.conf -Dnuxeo.log.dir=log -Dnuxeo.data.dir=data -Dnuxeo.tmp.dir=tmp -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcatalina.base=/path/to/nuxeo -Dcatalina.home=/path/to/nuxeo org.apache.catalina.startup.Bootstrap start
Debugging
Then, if you want to understand the failure cause, you can try to manually get that process ID from a Shell window, reproducing the steps used by the Launcher.
Look into console.log
for the "regexp" keyword, this is the regular expression used to find the process ID. Something like:
[org.nuxeo.launcher.NuxeoLauncher] regexp: \Q/path/to/nuxeo.conf\E.*\Qorg.apache.catalina.startup.Bootstrap\E pid:null
The command for retrieving the process ID will depend on your OS.
Linux/Unix
/bin/ps -e -o "pid,args" | grep -E "^\s*([0-9]+)\s+(.*)$" | grep "/path/to/nuxeo.conf.*org.apache.catalina.startup.Bootstrap"
Mac OS X
/bin/ps -e -o "pid,command" | grep -E "^ *([0-9]+) +(.*)$" | grep "/path/to/nuxeo.conf.*org.apache.catalina.startup.Bootstrap"
Windows
wmic process get CommmandLine,ProcessId
Look for lines matching the regular expression: ^(.*?)\\s+(\\d+)\\s*\$
Check if one of those is matching the regular expression found in console.log
.