java - 如何从 Java 卸载 Linux 文件夹

标签 java linux shell

我试过:

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 身份运行命令。

最佳答案

你有几个选择:

  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");
    

关于java - 如何从 Java 卸载 Linux 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10010852/

相关文章:

java - 将 Android Activity 与 Google 电子表格连接

java - 找到一个名为 ".git/.MERGE_MSG.swp"的交换文件

java - 如何重置 JLabel

linux - 递归查找最后 n 行的特定文本

java - 测试模拟类中包含的映射

linux - Shell 注入(inject) - 这安全吗?

linux - Bash 脚本访问重定向|管道输入

php - 用 php 为 Asterisk AMI 分离部分 fread 输出

bash - :'END'在bash中如何工作以创建多行注释 block ?

bash - bash 中 if 语句与 test 命令的比较未按预期工作