如果您在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'这样的附加挂载选项将无法正常工作,因为它会卸载所有内容,而我只希望卸载目标目录。
未能卸载通常是由于某些进程举行文件在该挂载点内的某处打开,或者将其用作其工作目录。文件系统不会允许卸载时仍然在使用(除非被迫)。 – 2012-01-13 15:21:19
@MarcB我刚刚添加了一些新的信息,你可以帮忙吗? – thejartender 2012-01-13 19:48:29
我不知道它为什么会被多次挂载,但是您应该能够通过'fuser'命令找出哪些进程/用户在该挂载点上持有打开的文件。 – 2012-01-13 20:34:49