4

私のアプリケーションは、シェル実行可能ファイルとして Linux OS のターミナル経由で起動できます。通常どおり実行している間は問題ありませんが、「nohup」コマンドと一緒に実行すると、「nohup.out」ファイルに以下の例外が記録されます

`Exception in thread "Spring Shell" java.lang.IllegalStateException: Shell line reading failure
        at org.springframework.shell.core.JLineShell.promptLoop(JLineShell.java:541)
        at org.springframework.shell.core.JLineShell.run(JLineShell.java:179)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Ungültiger Dateideskriptor    this is in english “Invalid File Descriptor”
        at java.io.FileInputStream.read(Native Method)
        at jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:169)
        at jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:137)
        at jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:246)
        at jline.internal.InputStreamReader.read(InputStreamReader.java:261)
        at jline.internal.InputStreamReader.read(InputStreamReader.java:198)
        at jline.console.ConsoleReader.readCharacter(ConsoleReader.java:2038)
        at jline.console.ConsoleReader.readLine(ConsoleReader.java:2242)
        at jline.console.ConsoleReader.readLine(ConsoleReader.java:2162)
        at jline.console.ConsoleReader.readLine(ConsoleReader.java:2150)
        at org.springframework.shell.core.JLineShell.promptLoop(JLineShell.java:522)
        ... 2 more
`

現在、私の分析によると、私のアプリケーションはSpring Shellに基づいており、アプリケーションの実行中に最初にターミナル/コンソールを開こうとします/アクセスしようとします。しかし、nohup が使用されているため、標準入力が /dev/null からリダイレクトされるため、アプリケーションがターミナルとして /dev/null を開いてアクセスしようとするため、上記の例外が発生します。

私が正しい方向に進んでいるかどうかにかかわらず、誰かが私を指摘できますか? また、nohupコマンドの代替手段はありますか?

4

1 に答える 1

0

次のようなことを試すことができます:

nohup java -jar shell-app.jar 'spring shell command' > log.log 2>&1
于 2016-12-20T16:21:41.153 に答える