나는 똑같은 일을하려고했지만 Java에서 복잡성을 추가했습니다. 따라서 java를 실행하는 한 시스템에서 백그라운드에서 nohup을 사용하여 다른 시스템에서 스크립트를 실행하려고했습니다.
명령 행에서 다음과 같이 작동합니다. ( "-i keyFile"이 필요하지 않은 경우 호스트에 ssh 할 수 있습니다.)
ssh -i keyFile user@host bash -c "\"nohup ./script arg1 arg2 > output.txt 2>&1 &\""
내 명령 행에는 "-c"뒤에 하나의 인수가 있으며 모두 따옴표로 묶여 있습니다. 그러나 다른 쪽 끝에서 작동하려면 여전히 따옴표가 필요하므로 그 안에 이스케이프 된 따옴표를 넣어야했습니다.
자바에서 다음과 같이 작동했습니다.
ProcessBuilder b = new ProcessBuilder("ssh", "-i", "keyFile", "bash", "-c",
"\"nohup ./script arg1 arg2 > output.txt 2>&1 &\"");
Process process = b.start();
// then read from process.getInputStream() and close it.
이 작업을 수행하는 데 약간의 시행 착오가 필요했지만 지금은 잘 작동하는 것 같습니다.
/dev/null
.