Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java卸载Linux文件夹_Java_Linux_Shell - Fatal编程技术网

如何从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");