2012-04-04 27 views
3

卸載Linux文件夾我想:如何從Java

final ProcessBuilder pb = new ProcessBuilder("umount", "foldername"); 
final Process p = pb.start(); 

拋出

卸除:/ home/user中/ FOLDERNAME不在fstab文件(你是不是 根)

我試圖

final ProcessBuilder pb = new ProcessBuilder("sudo","umount", "foldername"); 
final Process p = pb.start(); 

拋出

須藤:對不起,你必須有一個tty運行sudo的

我得到了root密碼,但不能把它提供給ProcessBuilder。此外,我無法編輯fstab(或任何需要編輯的內容),因爲它是從遠程服務器上從保存的操作系統映像啓動的遠程虛擬機器。

我只是想以root身份運行該命令。

+0

辦時,從終端直接運行這些命令的工作? – 2012-04-04 12:16:04

+0

如果我不是root用戶(如果我是root用戶,它會成功卸載文件夾),第一條命令完全相同。第二個命令提示輸入密碼。 – fiction 2012-04-04 12:20:53

+0

你可以編輯'/ etc/sudoers'嗎? – artbristol 2012-04-04 12:22:54

回答

3

你有兩個選擇:

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