如何从Java卸载Linux文件夹

时间:2012-04-04 12:13:19

标签: java linux shell

我试过了:

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

抛出

  

umount:/ home / user / foldername不在fstab中(你不是   根)

我试过

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

抛出

  

sudo:抱歉,你必须有一个tty来运行sudo

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

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

1 个答案:

答案 0 :(得分:3)

您有几个选择:

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

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

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

    pb = new ProcessBuilder("xterm","-e","sudo","umount","foldername");