如何从Java卸载Linux文件夹
我试过:如何从Java卸载Linux文件夹,java,linux,shell,Java,Linux,Shell,我试过: final ProcessBuilder pb = new ProcessBuilder("umount", "foldername"); final Process p = pb.start(); 投掷 umount:/home/user/foldername不在fstab中(您也不在fstab中) 根) 我试过了 final ProcessBuilder pb = new ProcessBuilder("sudo","umount", "foldername"); final P
final ProcessBuilder pb = new ProcessBuilder("umount", "foldername");
final Process p = pb.start();
投掷
umount:/home/user/foldername不在fstab中(您也不在fstab中)
根)
我试过了
final ProcessBuilder pb = new ProcessBuilder("sudo","umount", "foldername");
final Process p = pb.start();
投掷
sudo:对不起,你必须有一个tty才能运行sudo
我获得了根密码,但无法将其提供给ProcessBuilder
。此外,我无法编辑fstab
(或任何需要编辑的内容),因为它是从保存的操作系统映像在远程服务器上启动的远程虚拟机
我只想以root用户身份运行该命令。您有两个选项:
sudo
,以便用户可以在那里键入密码
pb = new ProcessBuilder("sh", "-c", "sudo umount foldername </dev/tty");
Process p = pb.start();
p.waitFor();
sudo
打开终端仿真器窗口:
pb = new ProcessBuilder("xterm","-e","sudo","umount","foldername");
这些命令在直接从终端运行时有效吗?如果我不是root,则第一个命令打印的内容完全相同(如果我是root,则成功卸载文件夹)。第二个命令提示输入密码。您可以允许运行java程序的用户在不输入密码的情况下卸载。查看文件/etc/sudoers(可通过命令“visudo”编辑)中的一些示例。此答案的可能副本可能有用
pb = new ProcessBuilder("xterm","-e","sudo","umount","foldername");