3

我试过:

final ProcessBuilder pb = new ProcessBuilder("umount", "foldername");
final Process p = pb.start();

投掷

umount: /home/user/foldername 不在 fstab 中(而且你不是 root)

我试过

final ProcessBuilder pb = new ProcessBuilder("sudo","umount", "foldername");
final Process p = pb.start();

投掷

sudo:对不起,你必须有一个 tty 才能运行 sudo

我获得了 root 密码,但无法将其提供给ProcessBuilder. 我也无法编辑fstab(或任何需要编辑的内容),因为它是从保存的操作系统映像在远程服务器上启动的远程虚拟机。

我只想以root身份运行命令。

4

1 回答 1

3

你有几个选择:

  1. 使控制终端可用,sudo以便用户可以在那里输入密码。

    pb = new ProcessBuilder("sh", "-c", "sudo umount foldername </dev/tty");
    Process p = pb.start();
    p.waitFor();
    
  2. gksudo使用而不是执行程序sudo。使用 GTK+ 的系统通常附带该gksu软件包,作为 和 的图形su界面sudo

    pb = new ProcessBuilder("gksudo","umount", "foldername");
    
  3. 打开终端模拟器窗口sudo

    pb = new ProcessBuilder("xterm","-e","sudo","umount","foldername");
    
于 2012-04-04T13:03:23.197 回答