本文共 10053 字,大约阅读时间需要 33 分钟。
<font size=4>1.lftp安装:直接在Linux上登录远程服务器下载ftp上的文件,查询lftp使用方式
lftp 用户名:密码@ftp地址:传送端口(默认21)也可以先不带用户名登录,然后在接口界面下用login命令来用指定账号登录,密码不显示查看文件与改变目录 ls !ls (凡是加!,指的是操作本地计算机环境) cd 对应ftp目录 下载 get当然是可以的,还可以: mget -c *.pdf #把所有的pdf文件以允许断点续传的方式下载 mirror aaa/ #将aaa目录整个的下载下来,子目录也会自动复制 pget -c -n 10 file.dat #以最多10个线程以允许断点续传的方式下载file.dat,可以通过设置 pget:default-n的值而使用默认值上传 同样的put、mput都是对文件的操作,和下载类似. mirror -R 本地目录名 将本地目录以迭代(包括子目录)的方式反向上传到ftp site 模式设置 set ftp:charset gbk 远程ftp site用gbk编码,对应的要设置为uft8,只要替换为gbk为utf8即可 set file:charset utf8 本地的charset设定为utf8,如果你是gbk,相应改掉 set ftp:passive-mode 1 使用被动模式登录,有些site要求必须用被动模式或者主动模式才可以登录,这个开关就是设置这个的,0代表不用被动模式 书签 其实命令行也可以有书签,在lftp终端提示符下: bookmark add ustc #就可以把当前正在浏览的ftp site用ustc作为标签储存起来。以后在shell终端下,直接lftp ustc就可以自动填好用户名和密码,进入对应的目录了。 bookmark edit 会调用编辑器手动修改书签。当然,也可以看到,这个书签其实就是个简单的文本文件,用户名、密码都可以看到 配置文件 vim /etc/lftp.conf 一般,会添加这几行: set ftp:charset gbk set file:charset utf8 set pget:default-n 5 这样,就不用每次进入都要打命令了,其他的set可以自己tab然后help来看。
2.b编译安装过程中出现任何需要另外安装的,结合yum search 包名 通过模糊搜索得到相应的软件包然后选择合适的进行安装
3.dd if of : 可以使用dd克隆复制命令对硬盘分区或者文件系统进行重命名</font>
<font size=4>1.硬盘最外围磁道0磁道的第一个分区是MBR 512字节, 446B->boot loader , 64B分区表 , 2B校验(55 AA)
2.mknod: linux下创建块设备或者字符设备的命令 make Nodeblock c设备mknod /app/magedisk b 8 5mknod /app/dvd b 11 0mknod /app/tty1 c 4 1mknod其中的一种重要用途是:为Linux系统中的硬盘创建一个新的设备名(实际上就是创建新的文件设备b,主设备号、次设备号与硬盘对应一致,可以形象的看作是为设备创建了一个链接;同理,在对硬盘进行了分区之后,对应的应该是为分区创建新的文件设备名->创建时需要对应分区的主要设备号、次要设备号即可!);mknod不能跟随硬盘同步分区(只是认为的根据实际设备号进行创建设备文件)CHS 磁盘三围
cylinder 柱面head 磁头sector 扇区track 磁道
512sector数/ track head * track数/盘面B KB MB GB TB PB EB ZB YB BB NB DBecho '- - -' > /sys/class/scsi_host/host0/scan 注意:虚拟机或者说是虚拟化下对新增硬盘快速生效方式是给系统虚拟硬盘所在host下的面板传递信号- - - ,以便引导系统去重读分区信息;但是在生产环境下基本不太可能,用的都是直接物理机
fdisk /dev/sdbmkfs.ext4 /dev/sdb1mount /dev/sdb1 /mnt #mount挂载的只能说是文件系统,只是在分区后分区设备默认被创建了同命名的文件系统,挂载后,挂载点里面的所有内容暂时被隐藏,卸载才能看到cp /etc/fstab /mnt/umount /mnt/hexdump -C -n 512 /dev/sdb -v #查看磁盘前512字节信息skip表示跳过if(源)设备多少字节
seek表示跳过of设备多少字节dd if=/dev/sdb of=/app/mbr.bak bs=1 count=512dd if=/dev/sdb of=/app/mbrtable.bak bs=1 count=64 skip=446partx -d /dev/sdb --nr 1dd if=/app/mbrtable.bak of=/dev/sdb bs =1 count=64 seek=446partprobe /dev/sdbmount /dev/sdb1 /mnt/实验:破坏sdb的55AA,然后通过sda恢复 千万注意:dd是具有极大破怀兴的,通常仅作测试的时候使用,正常情况下不需使用dd命令!!
dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510dd if=/dev/zero of=/dev/sdb bs =1 count=2 skip=510 seek=510磁盘设备文件命名规则:
CentOS5及其之前:SCSI, SATA, SAS, USB: /dev/sdIDE: /dev/hdCentOS6及其之后:SCSI, SATA, SAS, IDE ,USB:/dev/sdKVM: /dev/vdXen: /dev/xvd*3.测试磁盘I/O读写速度:
思考问题1.通过学习了硬盘等相关硬件知识后,应该学会思考:利用什么去测试硬盘的读写速率,进一步联想去挑选什么硬盘,如何在工作中测试并使用满足要求的性能高的I/O磁盘用法:
1.测试IO读:hdparm -t --direct /dev/sda3 #CentOS7中需要使用root用户身份手动安装hdparm2.测试IO写:sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd bs=1000KB count=20000;sync)"dd bs=1M count=20000 if=/dev/zero of=test.dd conv=fdatasync #dd命令测试是IO的顺序写和读方式 3.查看文件系统块大小 tune2fs -l /dev/sda1 |grep Block 上面的命令行有些复杂,做下详细的解释: (1)sync 命令用来刷新文件系统的缓冲区,执行sync命令实际的作用是把内存中的数据缓冲写入到磁盘中。先执行下sync,是为了减少对后面测试的影响。也可以使用 echo 3 > /proc/sys/vm/drop_caches来清除缓存。 (2)time 命令用来测试命令的执行时间,shell内建还有一个time命令,我们这里使用全路径来指定使用的是非内建命令。 -p 选项设置时间的输出格式为POSIX缺省时间格式,单位是秒,在后面的测试小节可以看到time -p 的输出形式 (3)bash 命令 -c 选项的作用是将后面的字符串参数当做bash脚本来执行,看起来有些画蛇添足,好像直接执行也是可以的。其实不然,因为后面字符串包含了两条命令行,而time命令需要统计这两条命令行的执行时间。 (4)小括号的意思是另起一个子进程来执行括号中的脚本,dd这条命令行这里就不讲了,重点是sync命令,因为当dd退出时,这条命令行提交的大部分内容都在内存缓冲区(写缓存),甚至如果机器的内存相比于 你提交的数据要大得多,那可能数据都在内存中,而再执行sync才能将内存中的数据写入到磁盘中,否则就成了测试内存的写速度,那显然是不对的。
4.针对CentOS6系列的分区必须注意硬盘大小,如果分区大于2T,就使用不了MBR分区dos类型,必须使用parted 或gdisk来分区gpt类型(支持64位寻址大于2T)
5.注意:使用卷标对设备进行挂载或者开机自动挂载 -> /etc/fstabLABLE=DEVICENAME mount LABLE=DEVICENAME /mnt生产环境,写入配置文件的时候,UUID进行唯一识别 blkid;mount UUID='' /mnt6.e2fsck -f 针对ext类型的文件系统进行强制修复,可交互
在文件系统因外界压力不正常卸载或未卸载!7.快速查看占用某一分区或者文件系统的进程以及详细信息 lsof
fuser -v /fsname/ fuser -vmk /fsname 递归杀死占用挂载点进程(涉及到目录,必须考虑递归问题)作业:
1.给当前虚拟机增加一个80G大小的硬盘,要求当前生效可以使用fdisk -l 查看到该硬盘,名为/dev/sdb2.为/dev/sdb创建一个新的设备名为/app/magediskamknod /app/magediska b 8 163.对/app/magediska进行分区,要求如下a.创建/app/magediska1分区,大小为100M,格式化为ext4文件系统,并挂载到/mnt/diska目录下b.将/etc/fstab文件复制到在/mnt/diska上后卸载分区。c.仅备份/app/magediska分区的分区表至/app/mbr.bakdd if=/dev/sdb of=/app/mbr.bak bs=1 count=16 skip=446d.使用dd命令初始化/app/magediska硬盘,使其没有分区表信息dd if=/dev/zero of=/dev/sdb bs=1 count=512e.再使用fdisk命令创建/app/magediska2分区,格式化为ext3文件系统,并挂载到/mnt/diskb目录下并将/etc/passwd文件复制到该目录下。f.利用c步骤的备份还原/app/magediska1分区,确保/app/mageddd if=/dev/sdb of=/app/mbr.bak bs=1 count=16 skip=446iska2分区不受影响。最后再次将/app/magediska1挂载到/mnt/diska下,确保其中的fstab文件依然可用。dd if=/app/mbr.bak of=/dev/sdb bs=1 count=16 seek=446二、
BIOS+MBR BIOS+MBR+GPTUEFI+GPT传统的BIOS启动由于MBR的限制,默认是无法引导超过2.1TB以上的硬盘的;GPT类型分区超2.1TB;fdisk parted gdisk
非交互式增加一个1G的分区:echo -e "n\n\n+1G\nw\n" |fdisk /dev/sda cat <<EOF | fdisk /dev/sdan+1G w EOF echo -e "n\n\n\n+1G\n\nw\ny\n" |gdisk /dev/sdb parted /dev/sdb primary 1000(sector) 2000 查看内核是否同步分区表信息的方法: lsblk(只限于CentOS6及其以上的系统) cat /proc/partitions ls /dev/sdX* 更新方法如下: partprobe /dev/sda (CentOS6、CentOS7) CentOS6只限于对非系统所在硬盘使用 partx -a /dev/sda 更新增加的分区 partx -d /dev/sda --nr 6-7 删除分区6和7 postfix(25 smtp) /var/mail nfs Sun Oracle dovecot (pop3 imap) pop3.qq.com smtp.qq.com Windows Linux CIFS samba 查看当前操作系统所支持的文件系统 cat /proc/filesystems journal /var/log 排错 oracel redo log -1000 ext3 inode bitmap block bitmap 格式化 mkfs.xfs /dev/sdb1 mkfs -t xfs /dev/sdb2 e2fsck -f /dev/sdb1
mount
-t vsftype:指定要挂载的设备上的文件系统类型-r readonly, 只读挂载-w read and write ,读写挂载-n 不更新/etc/mtab, mount 不可见-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能) #mount -a 自动挂载的只能是/etc/fstab中尚未挂载的设备,已经挂载的不再进行挂载,需要使用remount重新挂载-L ‘LABLE’ 以卷标指定挂载设备-U 'UUID' 以UUID指定要挂载的设备-B --bind 绑定目录到另一个目录上查看内核追踪到的已经挂载的所有设备cat /proc/mounts挂载选项-o options: 挂载文件系统的选项,多个选项使用逗号分隔async:异步模式sync : 同步模式,内存更改时,同时写磁盘atime/noatime:包含目录和文件diratime/nodiratime :目录的访问时间戳auto/noauto :是否支持自动挂载,是否支持-a 选项exec/noexec: 是否支持将文件系统上运行应用程序dev/nodev : 是否支持在此文件系统上使用设备文件suid/nosuid : 是否支持suid和sgid权限remount :重新挂载ro : 只读rw:读写user/nouser: 是否允许普通用户挂载此设备,/etc/fstab使用acl:启用此文件系统上的acl功能loop:使用Loop设备defaults:相当于rw,suid,dev,exec,auto,nouser,asyncfindmnt /dev/sdb1
lsof /mount/ 查看访问该挂载点目录的所有进程信息fuser -vmk /mount 强制结束所有访问该挂载点及其子目录的进程作业:
1.当/etc/fstab中uuid错误时且末位为非0时,系统无法正常启动的问题解决1.因为硬盘挂载检测是开机启动初期根目录先以只读的方式挂载,当紧接着一位分区设备末位非0强制检测,导致检测失败不通过,在根目录及其下所有目录和文件只读情况下,应该先 mount -o remount,rw / ; 然后修改/etc/fstab文件中错误的uuid或者将末位改为0重新启动挂载,然后跳过再正确修改!2.小总结:使用uuid挂载时,结束退出前最好将以挂载的文件系统卸载,再正确关机2.创建一个2G的文件系统,块大小为2048byte, 预留1%可用空间,文件系统类型ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项. fdisk |gdisk(|partx) /dev/sdb .. 分区2G 1.mke2fs -L TEST -b 2048 -t ext4 -m 1 /dev/sdb3 2.tune2fs -o acl test ; blkid /dev/sdb3 3.vim /etc/fstab UUID=... /app/test ext4 default 00
swap的扩展
整块硬盘的swapmkswap /dev/sdXswapon /dev/sdX基于分区的swapfdisk|gdisk|parted 对sdX进行分区,注意转换分区类型为82mkswap /dev/sdXnswapon /dev/sdXn基于文件的swapdd if=/dev/zero of=/path/swap.img bs=1M count=xxxmkswap /path/swap.imgswapon /path/swap.imgswapon -s 查看所有的swap信息swapon -a 加载/etc/fstab当中所有尚未加载的swap设备-p 指定swap的优先级,数字越大越优先swapoff 关闭指定的swap设备-a 关闭所有的swap设备在/etc/fstab中书写的方式如下:UUID=c4983177-34ae-4b99-bd81-42011b536088 swap swap defaults,pri=1 00UUID=73fe49f8-b44a-42fa-bcbd-1639058f5326 swap swap defaults,pri=2 0 0在Linux下挂载ntfs格式的U盘
安装 ntfs-3g包配置epel仓库[fedora-epel]name=epelbaseurl=gpgcheck=0mount /dev/sdb4 /mnt光盘挂载 mount /dev/sr0 /media mount /dev/cdrom /media free du -sh 直接统计整个目录及其内部使用大小 常见的df和du不一致情况就是文件删除的问题。当一个文件被删除后,在文件系统 目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有运行的进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除, 分区超级块中的信息也就不会更改。这样df仍旧会统计这个被删除了的文件。
quota
ext文件系统的quota1.mount -o usrquota,grpquota /dev/sdXn /path2.quotacheck -cugm /path3.quotaon /path4.setquota username 100M 200M 80 100 /data或edquota -u username 交互式edquota -p username1 username2将username1的quota策略复制给username2练习:
为liubei guanyu zhangfei caocao四个用户配置一个共享目录,要求如下:1.共享目录的大小为3GB,要求为ext4类型的文件系统,挂载到/data目录。fdisk /dev/sdapartx -a /dev/sdamkdir /datamke2fs -t ext4 /dev/sdaXmount /dev/sdaX /data2.设置liubei guanyu zhangfei三个用户可以在共享目录下创建以及删除文件
for n in liubei guanyu zhangfei caocao ;do useradd $n ;donegroupadd shuguochgrp shuguo /datachmod 775 /datafor m in liubei guanyu zhangfei ;do usermod -aG shuguo $m;done3.刘关张创建的文件,彼此之间可以读写,caocao及其他用户仅能读, caocao在该目录下也能创建文件,仅其自己可以读写,其他人无权限。
其他人对该目录,仅可访问chmod g+s /dataumount /data; mount /dev/sdaX /datasetfacl -m u:caocao:rwx /datavim ~caocao/.bashrcumask 0264.guanyu zhangfei仅能在该目录下创建100M的文件,caocao最多创建10个文件。
vim /etc/fstab/dev/sdaX /data ext4 defaults,usrquota,grpquota 0 0umount /data; mount -a setquota guanyu 0 100M 0 0 /data/edquota -p guanyu zhangfei setquota caocao 0 0 0 10 /data/5.guanyu zhangfei所创建的文件仅自己可以删除,liubei可以删除所有人的文件
chown liubei /data/chmod o+t /data/for n in $(seq 1 10);do
echo $ndonen=1
while [ $n -le 10];doecho $nn=$[$n+1]sleep 0.5sdonen=1
until [ $n -gt 10 ];doecho $nn=$[$n+1]sleep 0.5sdonen=1
while true;doecho $nn=$[$n+1]sleep 0.5sif [ $n -eq 11 ];thenbreakfidone</font>转载于:https://blog.51cto.com/12947626/2072044