Es scheint, dass Hintergrundjobs, die auf Eingaben warten, in den meisten Umgebungen angehalten werden.
Von der Wikipedia-Seite zu Unix Job Control :
Ein Hintergrundprozess, der versucht, von seinem steuernden Terminal zu lesen oder zu schreiben, wird mit einem SIGTTIN- (für Eingang) oder SIGTTOU-Signal (für den Ausgang) gesendet. Diese Signale stoppen den Prozess standardmäßig, sie können jedoch auch auf andere Weise behandelt werden.
Und von einer Rutgers-Seite zur Zwischennutzung von Unix :
Ein Job, der im Hintergrund ausgeführt wird, wird angehalten, wenn er Eingaben erfordert. Es kann keine Eingabe für einen Hintergrundjob erteilt werden. Stellen Sie daher sicher, dass alle erforderlichen Eingaben für ihn verfügbar sind.
Als Lösung haben wir einfach unseren Java-Prozess aktualisiert, um ein optionales Argument zu akzeptieren, das dazu führt, dass der Haupt-Thread unbegrenzt in den Ruhezustand versetzt wird, anstatt auf die Eingabe zu warten. Wir haben einen Shutdown-Hook, der die SIGTERM/SIGINT
Signale entsprechend behandelt:
if (args.length >= 0 && StringUtils.equals(args[0], "daemon")) { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }