Parece que as tarefas em segundo plano que aguardam a entrada estão paradas na maioria dos ambientes.
Na página da Wikipedia sobre o Job Control do Unix :
A background process that attempts to read from or write to its controlling terminal is sent a SIGTTIN (for input) or SIGTTOU (for output) signal. These signals stop the process by default, but they may also be handled in other ways.
E de uma página Rutgers sobre o uso intermediário do Unix :
A job being run in the background will stop if it needs input. Input can not be given to a background job so make sure that all input necessary is available to it.
Como uma solução nós simplesmente atualizamos nosso processo Java para aceitar um argumento opcional que fará com que o thread principal durma indefinidamente, ao invés de esperar pela entrada. Temos um gancho de desligamento que manipulará os sinais SIGTERM/SIGINT
apropriadamente:
if (args.length >= 0 && StringUtils.equals(args[0], "daemon")) {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}