我试过了:
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身份运行命令。
答案 0 :(得分:3)
您有几个选择:
使控制终端可用于sudo
,以便用户可以在那里输入密码。
pb = new ProcessBuilder("sh", "-c", "sudo umount foldername </dev/tty");
Process p = pb.start();
p.waitFor();
使用gksudo
而非sudo
执行程序。使用GTK +的系统通常附带gksu
包作为su
和sudo
的图形界面。
pb = new ProcessBuilder("gksudo","umount", "foldername");
打开sudo
的终端模拟器窗口:
pb = new ProcessBuilder("xterm","-e","sudo","umount","foldername");