Я пытаюсь запустить и остановить службу Linux с Java. Я использую ProcessBuilder в соответствии с принятой практикой. Я построил следующий код (WebService является параметр, содержащий имя службы быть запущен):Запуск службы linux от Java
String[] commands = new String[6];
commands[0] = "/bin/sh";
commands[1] = "-c";
commands[2] = "sudo";
commands[3] = "service";
commands[4] = webService;
commands[5] = "start";
ProcessBuilder processBuilder = new ProcessBuilder(commands);
Process process = processBuilder.start();
int outcomeOfProcess = process.waitFor();
Это эффективно называет команду /bin/sh -c sudo service webService start
. Который при запуске с терминала linux сервера работает отлично, но не работает с Java ProcessBuilder (resultOfProcess равен 1 при его запуске).
Я также пробовал sudo systemctl start webservice.service
, но безрезультатно - и я также попытался вызвать скрипт bash, уже расположенный на машине linux, но это тоже не сработает.
Есть ли у кого-нибудь идеи, как это можно исправить?
Установили ли вы пароль без sudo? Или как вы вводите пароль? – Biffen
попробуйте запустить java-процесс с sudo, таким образом процесс будет работать с более высоким доступом и сможет запускать команды администратора, такие как 'sudo' –
О, и не должно быть'/bin/sh -c 'sudo service webService start " ',? – Biffen