我试过:
final ProcessBuilder pb = new ProcessBuilder("umount", "foldername");
final Process p = pb.start();
throw
umount: /home/user/foldername is not in the fstab (and you are not root)
我试过了
final ProcessBuilder pb = new ProcessBuilder("sudo","umount", "foldername");
final Process p = pb.start();
throw
sudo: sorry, you must have a tty to run sudo
我获得了 root 密码,但无法将其提供给 ProcessBuilder
。此外,我无法编辑 fstab
(或任何需要编辑的内容),因为它是从保存的操作系统镜像在远程服务器上启动的远程虚拟机。
我只想以 root 身份运行命令。
最佳答案
你有几个选择:
使
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");
关于java - 如何从 Java 卸载 Linux 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10010852/