我试过了:
final ProcessBuilder pb = new ProcessBuilder("umount", "foldername");
final Process p = pb.start();
投掷
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();
投掷
sudo: sorry, you must have a tty to run sudo
我获得了root密码,但是无法将其提供给ProcessBuilder.另外,我无法编辑fstab(或任何需要编辑的内容),因为它是从保存的OS映像在远程服务器上启动的远程虚拟机.
我只想以root用户身份运行命令.
解决方法:
您有两种选择:
>使控制终端可用于sudo,以便用户可以在其中键入密码.
pb = new ProcessBuilder("sh", "-c", "sudo umount foldername
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");
标签:shell,linux,java
来源: https://codeday.me/bug/20191201/2081409.html