linux学习笔记009

来源:互联网 发布:erp软件购买ufsky 编辑:程序博客网 时间:2024/05/29 16:17

磁盘管理

文件系统管理

重新创建文件系统会损坏原有文件

cat/proc/partitions     查看文件分区

cat /proc/filesystems   查看内核支持文件系统类型

partprobe 重新探测分区

mkfs: make filesystem 创建文件系统

        -t FSTYPE 文件系统类型

        mkfs  -t ext2 /dev/sda5

        mkfs  -t ext3 /dev/sda7

mkfs -t ext2 =mkfs.ext2

mkfs -t ext3 =mkfs.ext3

 

专门管理ext系列文件:

mke2fs

        -j:创建ext3类型文件系统

        -b BLOCK_SIZE: 指定块大小,默认为4096;可用取值为1024、2048或4096;

        -L LABEL:指定分区卷标;

        -m #: 指定预留给超级用户的块数百分比 mke2fs -m 3 /dev/sda5

        -I #: 用于指定为多少字节的空间创建一个inode,默认为8192;这里给出的数值应该为块大小的2^n倍;8192一个inode

        mke2fs-i 4096 /dev/sda5

        -N #: 指定inode个数;

        -F:强制创建文件系统;

        -E:用户指定额外文件系统属性;

 

blkid:

查询或查看磁盘设备的相关属性

        UUID

        TYPE

        LABEL

        

e2label:

用于查看或定义卷标e2label设备文件 卷标: 设定卷标

        

tune2fs:

调整文件系统的相关属性 快大小不可以修改

        -j:不损害原有数据,将ext2升级为ext3;

        -L LABEL: 设定或修改卷标;

        -m #: 调整预留百分比;

        -r #: 指定预留块数;

        -o:设定默认;挂载选项

                  acl挂载选项

        -c #:指定挂载次数达到#次之后进行自检,0或-1表关闭此功能;

        -I #: 每挂载使用多少天后进行自检;0或-1表示关闭此功能;

        -l: 显示超级块中的信息;

        

dumpe2fs:

显示文件属性信息

        -h:只显示超级块中的信息

fsck:

检查并修复Linux文件系统

        -tFSTYPE: 指定文件系统类型

        -a:自动修复 不询问

        

e2fsck:

专用于修复ext2/ext3文件系统

        -f:强制检查;

        -p:自动修复;

mount:

挂载将新的文件系统关联至当前根文件系统

mount 设备 挂载点

        设备:

                  设备文件:/dev/sda5

                  卷标:LABEL=“”

                  UUID: UUID=“”

        挂载点:目录

                  要求:

                           1、此目录没有被其它进程使用;

                           2、目录得事先存在;

                           3、目录中的原有的文件将会暂时隐藏;

cd 进挂载的目录可以看到lost+find 证明挂载成功

 

mount: 显示当前系统已经挂载的设备及挂载点

mount [options][-o options] DEVICEMOUNT_POINT

        -a:表示挂载/etc/fstab文件中定义的所有文件系统

        -n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件;使用—n选项意味着挂载设备时,不把信息写入此文件;

        -t FSTYPE: 指定正在挂载设备上的文件系统的类型;不使用此选项时,mount会调用blkid命令获取对应文件系统的类型;

        -r:只读挂载,挂载光盘时常用此选项

        -w:读写挂载

        

        -o:指定额外的挂载选项,也即指定文件系统启用的属性;

                  remount:重新挂载当前文件系统

                  ro:挂载为只读

                  rw:读写挂载

                           

挂载完成后,要通过挂载点访问对应文件系统上的文件;

umount:

卸载某文件系统,将某文件系统与当前根文件系统的关联关系预以移除;

        umount设备

        umount挂载点     

 

        卸载注意事项:

                  挂载的设备没有进程使用;

                  

练习:

1、创建一个2G的分区,文件系统为ext2,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的8%;挂载至/backup目录,要求使用卷标进行挂载,且在挂载时启动此文件系统上的acl功能;

# mke2fs -L DATA-b 1024 -m 8  /dev/sda7

 

# mount -o aclLABEL=DATA /backup

 

# tune2fs -o acl/dev/sda7

# mount LABEL=DATA/backup

 

2、将此文件系统的超级块中的信息中包含了block和inode的行保存至/tmp/partition.txt中;

# tune2fs -l |egrep -i  "block|inode" >>/tmp/partition.txt 

# dumpe2fs -h |

3、复制/etc目录中的所有文件至此文件系统;而后调整此文件系统类型为ext3,要求不能损坏已经复制而来的文件;

# cp -r/etc/*  /backup

#tune2    -j/dev/sda7

4、调整其预留百分比为3%;

# tune2fs -m 3 -LDATA /dev/sda7

5、以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验正其效果;

# stat/backup/inittab

# cat/backup/inittab

# stat

 

# mount -oremount,noatime /backup

# cat

# stat

 

6、对此文件系统强行做一次检测;

e2fsck -f/dev/sda7

7、删除复制而来的所有文件,并将此文件系统重新挂载为同步(sync);而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化;

# rm -rf /backup/*

# mount -oremount,sync /backup

# cp -r /etc/*/backup

swap分区:

free

        -m

 

fdisk命令中,调整分区类型为82;swap

        

创建交换分区:

mkswap /dev/sda8

        -LLABEL

挂载交换分区

swapon /dev/sda8

        -a:启用所有的定义在/etc/fstab文件中的交换设备

swapoff /dev/sda8

回环设备

loopback, 使用软件来模拟实现硬件

 

创建一个镜像文件,120G

 

dd命令:

复制文件直接复制文件的01代码

        if=数据来源inputfile

        of=数据存储目标outputfile

        bs=1一次复制的大小

        count=2复制多少块

        seek=#:创建数据文件时,跳过的空间大小;

        

dd if=/dev/sdaof=/mnt/usb/mbr.backupbs=512 count=1 从硬盘最开始处(MDR ) 备份MDR

ddif=/mnt/usb/mbr.backup of=/dev/sdabs=512 count=1

 

dd if=/dev/zeroof=/var/swapfile bs=1Mcount=1024 从泡泡设备复制0  1G

cat /dev/cdrom> /root/rhe15.iso

 

dd if=/dev/zeroof=/var/swapfile2 seek=1023bs=1M count=1 创建1G文件跳过1023M

ls 是假的大小

du 可以看到 du -sh/var/swapfile2

 

/dev/null

mount命令,可以挂载iso镜像;

mount DEVICEMOUNT_POINT

        -o loop: 挂载本地回环设备

 

wgetftp://172.16.0.1/pub/isos/rhci-5.8-1.iso

mount /dev/sda5 /mnt/test

 

df 查看挂载设备

 

 

文件系统的配置文件/etc/fstab

        OS在初始时,会自动挂载此文件中定义的每个文件系统

要挂载的设备         挂载点             文件系统类型                  挂载选项                  转储频率(每多少天做一次完全备份)          文件系统检测次序(只有根可以为1)            

/dev/sda5        /mnt/test                  ext3         defaults            00

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

fuser: 验正进程正在使用的文件或套接字文件

        -v:查看某文件上正在运行的进程

        -k:kill文件

        -m: 挂载点

        

        fuser-km MOUNT_POINT:终止正在访问此挂载点的所有进程

        

练习:

1、创建一个5G的分区,文件系统为ext3,卷标为MYDATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;

2、创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备;

# mkdir/var/swaptemp

# dd if=/dev/zeroof=/var/swaptemp/swapfilebs=1M count=512

# mkswapLABLE=SWAP-FILE/var/swaptemp/swapfile

 

/etc/fstab

/var/swaptemp/swapfile     swap                 swap                 defaults            00

3、上述第一问,如何让其自动挂载的同时启用ACL功能;

/etc/fstab

LABEL='MYDATA'             /data                 ext3         defaults,acl      0 0

压缩、解压缩命令

压缩格式:gz, bz2, xz, zip, Z

压缩算法:算法不同,压缩比也会不同;

compress:FILENAME.Z

uncompress

 

gzip: .gz

        gzip/PATH/TO/SOMEFILE:压缩完成后会删除原文件

                  -d: gunzip

                  -#:1-9,指定压缩比,默认是6;

        

gunzip:

        gunzip/PATH/TO/SOMEFILE.gz: 解压完成后会删除原文件

zcat/PATH/TO/SOMEFILE.gz: 不解压的情况,查看文本文件的内容

        

bzip2: .bz2

比gzip有着更大压缩比的压缩工具,使用格式近似

        bzip2/PATH/TO/SOMEFILE

                  -d解压缩

                  -#:1-9,默认是6

                  -k:压缩时保留原文件

                  

        bunzip2/PATH/TO/SOMEFILE.bz2

        bzcat

cd/etc/yum.repos.d/

server.repo确保这个文件存在否则下载

wgetftp://172.16.0.1/pub/gls/server.repo

主机名改

xz: .xz

        xz/PATH/TO/SOMEFILE

                  -d

                  -#:1-9, 默认是6

                  -k:压缩时保留原文件

                  

        unxz解压

        xzdec解压

        xzcat不解压查看

 

zip: 既归档又压缩的工具

        zipFILENAME.zip FILE1 FILE2 ...: 压缩后不删除原文件

        unzipFILENAME.zip

        

        

archive: 归档,归档本身并不意味着压缩 多个文件压缩成一个

xz, bz2, gz

tar:

归档工具, .tar test.tartest*.txt

        -c:创建归档文件

        -fFILE.tar: 操作的归档文件

        -x:展开归档

        --xattrs:归档时,保留文件的扩展属性信息

        -t:不展开归档,直接查看归档了哪些文件

        -zcf:归档并调用gzip压缩

        -zxf:调用gzip解压缩并展开归档,-z选项可省略

        -jcf:bzip2归档并调用gzip压缩

        -jxf:

        

        -Jcf:xz

        -Jxf:

 

cpio: 归档工具

        

 

        

练习:写一个脚本

从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件;

read:

        -p“PROMPT": 给出提示

        #!/bin/bash

        read-p "There file :" FILE1 FILE2 FILE3

        read-p "Destition:" " DEST

        read-p "CPMPRESS[gzip|bzip2|xz]:" COMP

        case$COMP in

gzip)

        tar-zcf $(DEST).tar.gz $FILE1 $FILE2 $FILE3;;

bzip2)

        tar-jcf $DEST.tar.bz2 $FILE1 $FILE2 $FILE3;;

xz)

        tar-cf $DEST.tar $FILE1 $FILE2 $FILE3

        xz$DEST.tar;;

*)

        echo"Unknow"

        exit9;;

脚本编程:

循环结构

for

while

until           

while循环:

适用于循环次数未知的场景,要有退出条件语法:

        while CONDITION; do

          statement

          ...

        done

#!/bin/bash

#

read -p"Input something:" STRING

while[ $STRING !='quit' ]; do

echo $STRING | tr'a-z' 'A-Z'

read -p"Input something:" STRING

done

 

#!/bin/bash

#

who | grep"hadoop"&>/dev/null

REVAL=$?

while [ $REVAL -ne0 ]; do

sleep 5

who | grep"hadoop"&>/dev/null

REVAL=$?

done

 

echo "hadoopis logged in."

计算100以内所有正整数的和

 

#!/bin/bash

declare -i I=1

declare -i SUM=0

 

while [ $I -le 100]; do

  let SUM+=$I

  let I++

done

 

echo $SUM

 

练习:转换用户输入的字符为大写,除了quit:

#!/bin/bash

#

read -p"Input something: "STRING

 

while [ $STRING !='quit' ]; do

 echo $STRING| tr 'a-z' 'A-Z'

 read -p"Input something: " STRING

done

 

练习:每隔5秒查看hadoop用户是否登录,如果登录,显示其登录并退出;否则,显示当前时间,并说明hadoop尚未登录:

#!/bin/bash

#

who | grep"hadoop" &>/dev/null

RETVAL=$?

 

while [ $RETVAL-ne 0 ]; do

 echo"`date`, hadoop is not log."

 sleep 5

  who| grep"hadoop" &> /dev/null

 RETVAL=$?

done

 

echo "hadoopis logged in."

 

写一个脚本:

1) 显示一个菜单给用户:

d|D) show diskusages.

m|M) show memoryusages.

s|S) show swapusages.

*) quit.

2) 当用户给定选项后显示相应的内容;

  

扩展:

        当用户选择完成,显示相应信息后,不退出;而让用户再一次选择,再次显示相应内容;除了用户使用quit;

#!/bin/bash

#

cat << EOF

d|D) show diskusages.

m|M) show memoryusages.

s|S) show swapusages.

*) quit.

EOF

 

read -p "Yourchoice: " CHOICE

while [ $CHOICE !='quit' ];do

 case $CHOICEin

 d|D)

   echo"Disk usage: "

   df-Ph ;;

 m|M)

   echo"Memory usage: "

   free-m | grep "Mem" ;;

 s|S)

   echo"Swap usage: "

   free-m | grep "Swap" ;;

  *)

   echo"Unknown.." ;;

 esac

 

read -p"Again, your choice: "CHOICE

done        

 

ext2: 文件系统块组组成:

超级块、GDT、block bitmap、inode bitmap、data blocks

 

文件系统挂载时的注意事项:

1、挂载点事先存在;

2、目录是否已经被其它进程使用;

3、目录中的原有文件会被暂时隐藏;

 

mount DEVICEMOUNT_POINT

1、设备文件;

2、LABEL

3、UUID

 

/etc/fstab文件格式:

设备                  挂载点             文件系统类型                  挂载选项                  转储频率  检测次序

 

tune2fs

        -l

        -L

        -o

dumpe2fs -h

 

 

安装RHEL6.3 x86_64的方法(前提:请确保你的CPU支持硬件虚拟化技术):

1、创建虚拟机;

2、下载isos目录中的rhci-rhel-6.3-1.iso,并导入虚拟机的虚拟光驱;

3、在boot提示符输入:linuxip=172.16.x.1 netmask=255.255.0.0gateway=172.16.0.1 dns=172.16.0.1ks=http://172.16.0.1/rhel6.cfg

64, 32

/lib

/lib64

 


0 0