2012-01-13 85 views
2

如果您在VirtualBox guest上使用NetBeans,我有我認爲是非常有用的腳本。 似乎有一個問題:Virtualbox引導掛載不會卸載

如果您查看腳本,它會寫入引導腳本,然後將NetBeansProjects從主機系統掛載到Guest。這工作正常。但是會創建一個附加腳本並將其移至用戶本地文件夾。實際上,創建了兩個腳本:1)允許用戶安裝和2)卸載已安裝的文件夾以提供靈活性。

我測試腳本和一切工作在我的Ubuntu客人,除'netbeans-unmount.sh'腳本。

它不會卸載這是安裝在啓動時sirectory和我試圖讓腳本文件「根」訪問...

任何線索,這是否會工作,怎麼樣? :

#!/bin/bash 
#Author: Yucca Nel http://thejarbar.org 
#Will restart system 
PATH="/sbin:/usr/sbin:/bin:/usr/bin" 
export PATH 

#Modify these variables as needed... 
tempWork=/tmp/work 
startupScript=/etc/init.d/rc.local 
defaultNetBeansVersion=7.0.1 

echo "Provide NetBeans version (7.0.1 is default) then hit [Enter] :" 
    read NetBeansVersion 

    if [ -z "$NetBeansVersion" ] 
    then 
    $NetBeansVersion=$defaultNetBeansVersion 
    fi 

mkdir -p /$tempWork; 
cd /$tempWork; 

wget http://dlc.sun.com.edgesuite.net/netbeans/7.0.1/final/bundles/netbeans-$NetBeansVersion-ml-javase-linux.sh; 
sh $tempWork/*sh; 


#Add Netbeans launcher to your PATH. Doing so allows you to run 'netbeans' command from the terminal 
#This line will need to be changed if you changed the default install location (IOW Netbeans is not in ~/) 
sudo ln -f -s ~/netbeans-$NetBeansVersion/bin/netbeans /usr/bin/; 

#If you use VirtualBox , you can share your projects between Host and guest. Name of shared 
#folder must match 'NetBeansProjects' 
mkdir -p $HOME/NetBeansProjects 

if [ -f /sbin/mount.vboxsf ] 
then 
    sudo /sbin/umount /home/$HOME/NetBeansProjects 
    sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects 
fi 

if mountpoint -q ~/NetBeansProjects 
then 
#Add it to the universal start script to automate process... 
    sudo sed -ie '$d' $startupScript 
    echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects"| sudo tee -a $startupScript 
    echo "exit 0"| sudo tee -a $startupScript 
    sudo chmod +x $startupScript 

#Create a mount and unmount script file and add it to users local bin 
    rm -rf $tempWork/* 
    echo '#!/bin/bash' > $tempWork/netbeans-mount.sh 
    echo '#!/bin/bash' > $tempWork/netbeans-umount.sh 
    echo '#!/bin/bash' > $tempWork/mount-from-host.sh 
    echo '#!/bin/bash' > $tempWork/unmount-from-host.sh 
    echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/netbeans-mount.sh 
    echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/mount-from-host.sh 
    echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/netbeans-umount.sh 
    echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/unmount-from-host.sh 
    echo "exit 0" >> $tempWork/unmount-from-host.sh 
    echo "exit 0" >> $tempWork/mount-from-host.sh 
    echo "exit 0" >> $tempWork/netbeans-mount.sh 
    echo "exit 0" >> $tempWork/netbeans-umount.sh 

    sudo chmod +x $tempWork/* 
    sudo mv -f $tempWork/*.sh /usr/local/bin 
    rm -rf $tempWork 
fi 

#This function is used to cleanly exit with an error code. 
function error_exit { 
    sleep 7 
    exit 1 
} 
#restart 
sudo reboot 
exit 0 

更新:在終端手工編碼卸載也沒有卸載NetBeans的項目文件夾。所以我想我需要問,如果系統初始化掛載文件夾,甚至可以卸載此文件夾?

更新2:仍然卡住了,但我看到etc/mtab後有一些新的信息。 這裏是我看到:

... 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
... 

很顯然,我必須執行sudo卸載〜/的NetBeansProjects很多次!

像'f-l-a-t'這樣的附加掛載選項將無法正常工作,因爲它會卸載所有內容,而我只希望卸載目標目錄。

+0

未能卸載通常是由於某些進程舉行文件在該掛載點內的某處打開,或者將其用作其工作目錄。文件系統不會允許卸載時仍然在使用(除非被迫)。 – 2012-01-13 15:21:19

+0

@MarcB我剛剛添加了一些新的信息,你可以幫忙嗎? – thejartender 2012-01-13 19:48:29

+0

我不知道它爲什麼會被多次掛載,但是您應該能夠通過'fuser'命令找出哪些進程/用戶在該掛載點上持有打開的文件。 – 2012-01-13 20:34:49

回答

1

我重新檢查我所有的初始化文件,發現有加入/etc/init.d/rc.local我現在測試寫像在此之前現有的字符串一些額外的坐騎(爲例):

if ! grep "JAVA_HOME=${javaUsrLib}/jdk1.7.0_01" /etc/environment 

然後 回聲「JAVA_HOME = $ {javaUsrLib} /jdk1.7.0_01「|須藤發球-a的/ etc /環境 網絡

5

你可以卸載所有股:

sudo umount -a -t vboxsf 

或使用fusermount -u

sudo fusermount -u /mnt