Re: unmounting /media/usbdisk from the command line?
On Thu, 26 Oct 2006, Stefan Monnier wrote:
> When a USB disk is mounted by gnome-volume-manager, I can unmount it using
> nautilus (via right clicking on the disk's icon), but I haven't figured how
> to do it from the command line. Any hint?
Here's a perl script I use. Save it somewhere in your PATH (I call it
$HOME/bin/pum), and make it executable (chmod a+x "$HOME/bin/pum").
When invoked it generates a list of mounted file-systems in /media/,
asks what to pumount. It will fallback to a lazy umount if necessary.
Term::ReadKey is used to avoid hitting return after your selection
(doubling your productivity!).
apt-get install libterm-readkey-perl
-- Brad
---> START: bin/pum <----
#! /usr/bin/perl -w
# This is licensed under the Gnu Public License (GPL).
# On Debian systems the text of the license can be found at
# /usr/share/common-licenses/GPL
#
# Initial Author: Brad Sawatzky <brad+debian@swatter.net> (July 2006)
# This relies on Term::ReadKey in the 'libterm-readkey-perl' package.
##########################################################
## List auto-mounted filesystems and prompt for pumount ##
##########################################################
use strict;
use Term::ReadKey;
use Term::ANSIColor qw(:constants);
$ENV{PATH}="/bin:/usr/bin";
my $DIR="/media";
my @mounts;
my $i=0;
if ($#mounts == -1) {
## FIXME Should probably sanity check results and/or use a perl module here
for (`/bin/ls $DIR`) {
chomp;
my $name = $_;
push @mounts, "$DIR/$name";
print RED, "[$i]:", RESET," $_\n";
$i++;
}
}
if ($#mounts > -1) {
my $choice;
ReadMode('cbreak');
print "Unmount: ";
$choice = ReadKey(0);
print "$choice\n";
ReadMode('normal');
exit 0 if ($choice !~ /\d/);
if ($choice > $#mounts) {
print RED,"Invalid selection (",RESET,"$choice",RED,")\n",RESET;
exit 1;
}
if (system ("/usr/bin/pumount",$mounts[$choice]) != 0) {
print RED, "\tpumount failed, attempting lazy punmount\n",RESET;
if (system ("/usr/bin/pumount","-l",$mounts[$choice]) != 0) {
print RED,"\tlazy punmount failed\n",RESET;
exit 1;
}
}
print BLUE,"FS successfully unmounted: ",RESET,"$mounts[$choice]\n";
exit 0;
}
print RED,"No mounted filesystems found in ",RESET,"$DIR\n";
exit 0;
---> END: bin/pum <----
Reply to: