I want to run Java exec when the code is running as a systemd linux ( Ubuntu 18.04 ) service, is that possible? If it is possible, how? Right now, my code is running if I run the code in the terminal, it calls the bash script and bash script does the job. However, when my program is running as a systemd service, it hangs and bash script does nothing. Any ideas? The bash script will be called from a server through a REST request by the way
I take the exec as;
String[] command = { "bash", "-x", "/some_script.sh" ,"argument1"};
ProcessBuilder probuilder = new ProcessBuilder( command );
probuilder.directory(new File(System.getProperty("user.home")));
Process process = probuilder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
System.out.println("Output of running %s is:
",
Arrays.toString(command));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
try {
int exitValue = process.waitFor();
System.out.println("
Exit Value is " + exitValue);
} catch (InterruptedException e) {
e.printStackTrace();
}
question from:
https://stackoverflow.com/questions/65884454/is-it-possible-to-run-a-bash-script-in-java-from-systemd-daemon-service 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…