if (disk is mounted) unmount if (disk is unmounted) mount

shell scripts

Login to Reply

Thread Tools Search this Thread
# 1  
Old 03-11-2011
Question if (disk is mounted) unmount if (disk is unmounted) mount

Hey there, sorry if this is a bit too much of a noob question, trying to get to grips with a simple bash script - but i have done ZERO bash scripting.

basically having worked out how to mount and unmount disks using:
disktool -m *device* & disktool -e *device*

- and looking at the result of disktool -l
i see that from the results each device has a parameter Mountpoint = '/Volumes/My Disk' if the "My Disk" is mounted - or - Mountpoint = '' if unmounted.

Basically I am looking to write a script that looks to see if a partition on my external disk is mounted or not, if it is mounted - then the disk is unmounted - - and if it is unmounted the disk is mounted.

So this this disk is disk1s2. How do I query the Mountpoint and see what the result is?

Basically :

if (disk1s2.Mountpoint == "") {
disktool -m disk1s2

if (disk1s2.Mountpoint == "/Volumes/My Disk") {
disktool -e disk1s2

^ is obviously very, very, very wrong for a bash script - but you get the gist.

Any help would be greatly appreciated
# 2  
Old 03-11-2011
This works on Ubuntu Linux
rootId=$(stat -c%d /)
mountId=$(stat -c%d "${mountPart}")
if (( rootId == mountId ))
   # code for not mounted
   # code for mounted

Your milage may vary.

# 3  
Old 03-11-2011
I don't know what is 'disktool'. It's not installed on my CentOS box, therefore I'd like to present a more general solution:
When a filesystem gets mounted, there is a record about it in /etc/mtab.
Each partition of your disk is gonna be represented by a special file /dev/sdb1 or /dev/sdc4, etc.. (sd* for SATA drives, at least).
Now this can change, depending on what devices you have currently plugged in, so it's not good to depend that your disk is always gonna be /dev/sdb1. A reliable way to find out which /dev/sd* is your disk is to find out the UUID of your disk:
Unmount and unplug it and do
ls -l /dev/disk/by-uuid

Then plug it in and issue the same command. You'll see one more entry (my disk is 886C3A4E6C3A3772), that's the uuid of your device. ls -l also shows you that it is a symbolic link to that special file /dev/sd*.
Now let's put all this info together:


device=`ls /dev/disk/by-uuid/886C3A4E6C3A3772 -l | awk -F/ '{print $NF}'`  #find which file in /dev/ is my disk

if [ _"`grep /dev/$device /etc/mtab`" = _ ] ; then
    mounted=0 # there is no record of this device in /etc/mtab
    echo "Device /dev/$device is not mounted"
    mount  /dev/$device /my/mountpoint
    mounted=1 # record found => mounted
    echo "Device /dev/$device is mounted"
    umount  /dev/$device

You may need root privileges to do the mounting though.
The disadvantage of this script is that you have to hardcode the UUID of your device in it. To abstract from this, you could
find the device by looking at the last device plugged in. Like this:
device=`ls /dev/disk/by-uuid -ltr | tail -1 | awk -F/ '{print $NF}'`

ls -trl will print the files in long format (-l), sorted by date (-t), in reverse order (-r), so you'll have the last plugged-in device last. tail -1 will grab just the last line of the output of ls command.

Hope this helps.

mounted=1 is just a flag in case you wanted to do some more bash magic outside the if statement
Login to Reply

Thread Tools Search this Thread
Search this Thread:
Advanced Search

Similar Threads More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Mounted and unmounted khaled_ly84 AIX 5 03-15-2018 03:42 AM
NFS mounted and unmounted shell script Santosh101 How to Post in the The UNIX and Linux Forums 2 08-07-2015 05:21 AM
how to make others have read/write permission when the aotu mounted usb flash disk pluge in ? arnold.king Ubuntu 0 10-11-2012 01:33 PM
Please help me.how to mount another disk infjustice Solaris 3 08-28-2012 07:58 AM
How to modify a disk with mounted partitions? cjashu Solaris 1 05-26-2012 03:27 PM
How to unmount a folder and do check disk only in that path mirrorx UNIX for Dummies Questions & Answers 2 10-27-2011 07:39 AM
Linux partitioned disk mounted on OSOL without formatting michnmi Solaris 5 12-26-2010 05:51 PM
Unmount USB disk Guccio Shell Programming and Scripting 3 05-08-2010 02:34 PM
Kill shell script when host program not running/disk unmounted pcwiz Shell Programming and Scripting 2 10-02-2009 11:04 AM
When a disk won't 'Unmount" unimachead OS X (Apple) 3 07-12-2009 03:23 AM
Can't Mount Disk / Image after bad unmount Cranie OS X (Apple) 1 06-13-2009 07:19 PM
External USB disk cannot be mounted ulemsee SuSE 2 06-10-2009 12:30 PM
/usr out of disk space need to unmount/ expand volume /mount Dirk_ HP-UX 5 04-28-2009 09:35 AM
Unmount and remove all Logical vol.Volume group and physical disk joeli HP-UX 3 01-27-2009 10:59 AM
Mount Second Disk dummy101 UNIX for Dummies Questions & Answers 2 06-20-2006 07:10 AM
All times are GMT -4. The time now is 10:17 PM.

Unix & Linux Forums Content Copyright 1993-2018. All Rights Reserved.
Show Password

Not a Forum Member?
Forgot Password?