the use of mount on Linux OS

Linuxmount的使用

        原因:帮同事挂载好raid盘后,他发现读写是可以的,就是无法运行可执行程序,就算在root下也是无法运行。

       分析原因:当时没有吧exec可选项给加上。

 

       顺便总结一下mount的使用:

clip_image001

 

挂接命令(mount)

mount命令参数非常多,这里主要讲一下主要用到的。

  命令格式:

  mount [-t vfstype] [-o options] device dir

  其中:

  1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

  光盘或光盘镜像:iso9660

  DOS fat16文件系统:msdos

  Windows 9x fat32文件系统:vfat

  Windows NT ntfs文件系统:ntfs

  Mount Windows文件网络共享:smbfs

  UNIX(LINUX) 文件网络共享:nfs

  2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:

  loop:用来把一个文件当成硬盘分区挂接上系统

  ro:采用只读方式挂接设备

  rw:采用读写方式挂接设备

  iocharset:指定访问文件系统所用字符集

  3.device 要挂接(mount)的设备。

  4.dir设备在系统上的挂接点(mount point)

挂接光盘镜像文件

clip_image002

由于近年来磁盘技术的巨大进步,新的电脑系统都配备了大容量的磁盘系统,在Windows下许多人都习惯把软件和资料做成光盘镜像文件通过虚拟光驱来使用。这样做有许多好处:一、减轻了光驱的磨损;二、现在硬盘容量巨大存放几十个光盘镜像文件不成问题,随用随调十分方便;三、硬盘的读取速度要远远高于光盘的读取速度,CPU占用率大大降低。其实linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软件包。

clip_image004

  1从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

   #cp /dev/cdrom /home/sunky/mydisk.iso 

   #dd if=/dev/cdrom of=/home/sunky/mydisk.iso

   注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso

  2将文件和目录制作成光盘镜像文件,执行下面的命令。

   #mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir

   注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk

  3、光盘镜像文件的挂接(mount)

   #mkdir /mnt/vcdrom

   注:建立一个目录用来作挂接点(mount point)

   #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

   注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。

挂接移动硬盘

clip_image005

  对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l  more /proc/partitions查看系统的硬盘和硬盘分区情况。

  [root at pldyrouter /]# fdisk -l

  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

  255 heads, 63 sectors/track, 8924 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sda1 1 4 32098+ de Dell Utility

  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

  /dev/sda3 2555 7904 42973875 83 Linux

  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)

  /dev/sda5 7905 8924 8193118+ 82 Linux swap

  在这里可以清楚地看到系统有一块SCSI硬盘/dev/sda和它的四个磁盘分区/dev/sda1 — /dev/sda4, /dev/sda5是分区/dev/sda4的逻辑分区。接好移动硬盘后,再用fdisk –l more /proc/partitions查看系统的硬盘和硬盘分区情况

  [root at pldyrouter /]# fdisk -l

  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

  255 heads, 63 sectors/track, 8924 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sda1 1 4 32098+ de Dell Utility

  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

  /dev/sda3 2555 7904 42973875 83 Linux

  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)

  /dev/sda5 7905 8924 8193118+ 82 Linux swap

  Disk /dev/sdc: 40.0 GB, 40007761920 bytes

  255 heads, 63 sectors/track, 4864 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sdc1 1 510 4096543+ 7 HPFS/NTFS

  /dev/sdc2 511 4864 34973505 f Win95 Ext’d (LBA)

  /dev/sdc5 511 4864 34973473+ b Win95 FAT32

  大家应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1?/dev/sdc2,其中/dev/sdc5/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1/dev/sdc5

   #mkdir -p /mnt/usbhd1

   #mkdir -p /mnt/usbhd2

   注:建立目录用来作挂接点(mount point)

   #mount -t ntfs /dev/sdc1 /mnt/usbhd1

   #mount -t vfat /dev/sdc5 /mnt/usbhd2

   注:ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。

   #mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1

   #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2

  linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。

   #mount /dev/sdc1 /mnt/usbhd1

挂接U

clip_image006

  和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l  more /proc/partitions查看系统的硬盘和硬盘分区情况。

  [root at pldyrouter root]# fdisk -l

  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

  255 heads, 63 sectors/track, 8924 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sda1 1 4 32098+ de Dell Utility

  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

  /dev/sda3 2555 7904 42973875 83 Linux

  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)

  /dev/sda5 7905 8924 8193118+ 82 Linux swap

  插入U盘后,再用fdisk –l  more /proc/partitions查看系统的硬盘和硬盘分区情况。

  [root at pldyrouter root]# fdisk -l

  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

  255 heads, 63 sectors/track, 8924 cylinders

  Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot Start End Blocks Id System

  /dev/sda1 1 4 32098+ de Dell Utility

  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

  /dev/sda3 2555 7904 42973875 83 Linux

  /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)

  /dev/sda5 7905 8924 8193118+ 82 Linux swap

  Disk /dev/sdd: 131 MB, 131072000 bytes

  9 heads, 32 sectors/track, 888 cylinders

  Units = cylinders of 288 * 512 = 147456 bytes

  Device Boot Start End Blocks Id System

  /dev/sdd1 * 1 889 127983+ b Win95 FAT32

  Partition 1 has different physical/logical endings:

  phys=(1000, 8, 32) logical=(888, 7, 31)

  系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。

  #mkdir -p /mnt/usb

  注:建立一个目录用来作挂接点(mount point)

  #mount -t vfat /dev/sdd1 /mnt/usb

  注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。

  #mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

挂接Windows文件共享

Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba

  当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下:

  # mkdir –p /mnt/samba

  注:建立一个目录用来作挂接点(mount point)

  # mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba

  注:administrator  pldy123 ip地址为10.140.133.23 windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享

如此就可以在linux系统上通过/mnt/samba来访问windows系统磁盘上的文件了

如果碰到:mount: unknown filesystem type “smbfs”,参考下面的文。

挂接UNIX系统NFS文件共享

类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。

  在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。

  1Solaris系统NFS服务端配置方法如下:

   (1)修改 /etc/dfs/dfstab, 增加共享目录

      share -F nfs -o rw /export/home/sunky

   (2)启动nfs服务

      # /etc/init.d/nfs.server start

   (3)NFS服务启动以后,也可以使用下面的命令增加新的共享

      # share /export/home/sunky1

      # share /export/home/sunky2

   注:/export/home/sunky/export/home/sunky1是准备共享的目录

  2linux系统NFS服务端配置方法如下:

(1)修改 /etc/exports,增加共享目录

  /export/home/sunky 10.140.133.23(rw)

  /export/home/sunky1 *(rw)

  /export/home/sunky2 linux-client(rw)

   注:/export/home/目录下的sunkysunky1sunky2是准备共享的目录,10.140.133.23*linux- client是被允许挂接此共享linux客户机的IP地址或主机名。如果要使用主机名linux-client必须在服务端主机/etc/hosts文件里增加linux-client主机ip定义。格式如下:

   10.140.133.23 linux-client

   (2)启动与停止NFS服务

   /etc/rc.d/init.d/portmap start (REDHATPORTMAP是默认启动的)

   /etc/rc.d/init.d/nfs start 启动NFS服务

   /etc/rc.d/init.d/nfs stop 停止NFS服务

   注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令exportfs -rv也可以达到同样的效果。

  3linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享

   # mkdir –p /mnt/nfs

   注:建立一个目录用来作挂接点(mount point)

   #mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs

   注:这里我们假设10.140.133.9NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。

mount: unknown filesystem type “smbfs’

今天在使用FC6时,发现mount不了windows的共享盘

mount -t smbfs -o username=xxx,password=xxx //hostname/dir /mnt/tmp

mount: unknown filesystem type ’smbfs’

系统已经不能识别smbfs文件系统了

查资料说RHE5kernel已经不再支持smbfs,而改用Common Internet File Systemcifs(cifs)取代了原有的smbfs,猜想fc6也做了这个改动,所以命令就改为:

# mount -t cifs -o username=xxx,password=xxx //hostname/dir /mnt/tmp

很顺利地mount上了

Mounting NFS shares on Mac OS X

解决MacOS无法挂载NFSOperation not permitted错误

新装的Openfiler开启nfs之后,用Macbook的图形界面通过

无法连接。

先在服务器上自己挂自己试了一下,没有问题,说明问题可能在Macbook客户端上。
Macbook上打开终端:

 

# mount -t nfs IP:/ path localpath

 

 

 

#使用保留端口再试一下

 

# mount -o resvport IP:/path localpath

 

 

more bash shell command

更多bash shell命令

4.1 监控程序

4.1.1 进程查看

       ps默认只显示属于当前用户并正在当前终端中运行的进程。

 

       Linux系统中使用的GNU ps命令支持3中不同的命令行:

l  Unix类型参数:前面有一个短划线;

l  BSD类型参数:前面没有短划线;

l  GNU长参数:前面有双短划线;

 

ps –H 可以将进程组织为分层格式,可以显示哪些流程是随其他进程一起启动的。

4.1.2 实时进程监控

       top命令可以内存中换进换出的进程,它是实时模式,而ps只能显示特定时间点的信息。

4.1.3 停止进程

       linux中,各进程使用信号相互通信。大多数精心编写的应用程序都能够接受标准Unix进程信号,并对此作出响应。

Linux进程信号

SIGHUP     终止进程     终端线路挂断
SIGINT     
终止进程     中断进程
SIGQUIT   
建立CORE文件终止进程,并且生成core文件
SIGILL   
建立CORE文件       非法指令
SIGTRAP   
建立CORE文件       跟踪自陷
SIGBUS   
建立CORE文件       总线错误
SIGSEGV   
建立CORE文件       段非法错误
SIGFPE   
建立CORE文件       浮点异常
SIGIOT   
建立CORE文件       执行I/O自陷
SIGKILL   
终止进程     杀死进程
SIGPIPE   
终止进程     向一个没有读进程的管道写数据
SIGALARM   
终止进程     计时器到时
SIGTERM   
终止进程     软件终止信号
SIGSTOP   
停止进程     非终端来的停止信号
SIGTSTP   
停止进程     终端来的停止信号
SIGCONT   
忽略信号     继续执行一个停止的进程
SIGURG   
忽略信号     I/O紧急信号
SIGIO     
忽略信号     描述符上可以进行I/O
SIGCHLD   
忽略信号     当子进程停止或退出时通知父进程
SIGTTOU   
停止进程     后台进程写终端
SIGTTIN   
停止进程     后台进程读终端
SIGXGPU   
终止进程     CPU时限超时
SIGXFSZ   
终止进程     文件长度过长
SIGWINCH   
忽略信号     窗口大小发生变化
SIGPROF   
终止进程     统计分布图用计时器到时
SIGUSR1   
终止进程     用户定义信号1
SIGUSR2   
终止进程     用户定义信号2
SIGVTALRM
终止进程     
虚拟计时器到时

Linux提供了两个命令用于发送进程信号给运行中的进程:

l  kill命令

n  只能使用进程PID来终止信号,将发送TERM命令给指定的PID

l  killall命令

n  该命令非常强大,可以根据进程的名称来停止进程,还允许使用通配符,它对于处理出错的系统非常有用。

4.2 监控磁盘空间

4.2.1 挂载介质

       mount –t type device directory

       mount –a :挂载/etc/fstab文件中指定的所有文件系统

其中可能的类型为:

l  vfat Windows长文件系统

l  ntfs Windows高级文件系统

l  iso9660 标准CD-ROM文件系统

常用的选项:

l  ro:以只读形式挂载;

l  rw:以读写形式挂载;

l  user:允许普通用户挂载文件系统;

l  check=none:挂载文件系统,而不执行完整性检查;

l  loop:挂载某个文件

4.2.2 使用df命令

       某个设备上有多少可用磁盘空间,较常用的参数为-h,用于以可读形式显示磁盘空间。

4.2.3 使用du命令

       du命令显示当前目录下的所有的文件、目录和子目录,并显示各文件或目录占用了多大空间。可以使用参数-s来汇总各自变量。

4.3 操作数据文件

4.3.1 数据排序

       sort:默认按照标准字符排序,所以如果是数字,需要加上参数-n来将其识别为数字而不是字符,并根据数值大小对它们进行排序;使用-M参数,可以按照月份排序;使用-k-t参数可以方便对使用字段的数据进行排序,其中-t参数用于指定字段分隔符,-k参数用于指定排序的字段。

       比如可以对一个文件夹中的所有文件大小进行一个排序:du –sh * | sort –n即可。

4.3.2 搜索数据

       grep patterm file

可用使用-v参数来反向搜索;使用-n参数显示与模式匹配的数据所在的行号;使用-c参数显示有多少行包含匹配模式;使用-e参数指定多个匹配模式;

       egrep命令式grep命令的一个分支,它允许您指定POSIX扩展的正则表达式,即使用多个字符指定匹配模式;fgrep命令则允许您使用一列由换行符分隔的固定字符串值来指定匹配模式。

4.3.3 压缩数据

Linux文件压缩格式:

l  *.Z       compress 程序压缩的档案; 

l  *.bz2     bzip2 程序压缩的档案; 

l  *.gz      gzip 程序压缩的档案; 

l  *.tar     tar 程序打包的数据,并没有压缩过 

l  *.tar.gz  tar 程序打包的档案,其中并且经过gzip 的压缩!

l  *.zip     zip 程序压缩文件

l  *.rar     rar 程序压缩文件

使用bzip2的文件可以使用bzcat命令查看内容

4.3.4 归档数据

       虽然zip命令在压缩和归档数据方面格外出色,但是它不是UnixLinux世界中的标准工具。目前,UnixLinux中最流行的归档工具是tar命令。

sbin-mount mounting failed with the error protocol error

sbin-mount  mounting failed with the error protocol error

在使用VirtualBox访问共享文件夹是出现的问题:

出错信息为:

/sbin/mount.vboxsf: mounting failed with the error: Protocol error

解决方法为:

1.      共享文件夹的名称不要和挂载点的名称相同;

2.      查看VirtualBox的设备共享文件夹查看时候已经指定了共享文件夹

3.      挂载的共享文件夹只需要输入名称就可以,不需要指定具体位置信息;

setting virtualbox share folder in windows7 system

Windows7下设置VirtualBox共享文件夹

1.      在主机windows上设一个目录,比如 D:/sharedfolder_windows

2.      在虚拟机上,通过设备共享文件夹添加刚才我们设的文件夹;

3.      linux中,打开终端,创建一个文件比如mkdir /mnt/sharefolder_linux;

4.      运行命令:sudo mount -t vboxsf sharedfolder_windows /mnt/ sharefolder_linux

5.      第四个命令也可以写入/etc/fstab,这样开机就会挂载,写入内容为:sharedfolder_windows /mnt/ sharefolder_linux  vboxsf default 0 0

6.      此时写入文件就可以实现共享了。