Я работаю над проектом по выполнению программ на удаленной системе. Проект написан на Java на сервере и клиенте.
Код, выполняемый на сервере, запускается через процесс java.lang.Process и может быть командой для запуска любого языка (например, python).
То, что я хотел бы сделать, это перехватывать ВСЕ вызовы файловой системы процессом (аналогично FUSE, но вместо одного монтированного FUSE непосредственно для всех вызовов этого процесса) и обрабатывать их изнутри моего Java-сервера.
Есть ли какой-нибудь известный метод для моего варианта использования?
Если нет, если у вас есть указания относительно того, с чего начать, это было бы замечательно.
Сервер, вероятно, основан на Ubuntu, но у меня нет проблем с переключением дистрибутива Linux, если это помогает проекту
Спасибо за любую помощь:)
У меня были проблемы с FUSE, но, насколько я могу судить, я не могу заблокировать весь процесс внутри какой-то системы FUSE, вместо этого он смонтирован в определенных местах?
Если вы хотите немного больше узнать о том, как процессы создаются в данный момент, это код, который делает это
ProcessBuilder processBuilder = new ProcessBuilder();
if (SystemUtils.IS_OS_WINDOWS){
processBuilder.command(System.getenv("SystemRoot") + "\\System32\\cmd.exe", " /c ", command);
}
else{
processBuilder.command("/bin/bash ", command);
}
try{
Process process = processBuilder.start();
ProcessStreamer processStreamer = new ProcessStreamer(process);
processStreamer.streamTo(context);
context.attribute("process", process);
Session.forContext(context).setCurrentRoute("executorinput", context);
}
catch(IOException e){
context.send("error " + e.getMessage());
}