第1章 磁盘管理

1.1 必须要了解的。

1.1.1 ps aux 命令中 RSS 与VSZ的含义

rss 进程占用的物理内存的大小 单位:kb ;
vsz 进程占用的虚拟的内存大小(物理内存+swap)

1.1.2 top命令的参数

  1. M 按照内存使用率排序<br /> P 按照cpu的使用率排序

1.1.3 htop 命令的安装方法

  1. 要配置 epel源<br /> [http://mirrors.aliyun.com](http://mirrors.aliyun.com)

1.2 磁盘分区之parted + gpt

1.2.1 fdisk 与 parted 的区别

  1. fdisk mbr 分区表 硬盘容量小于2TB<br /> parted gpt 分区表 硬盘容量大于2TB

1.2.2 查看下帮助信息

  1. [root@znix ~]# parted /dev/sdc
  2. GNU Parted 2.1
  3. Using /dev/sdc
  4. Welcome to GNU Parted! Type 'help' to view a list of commands.
  5. (parted) h
  6. mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
  7. 创建分区表
  8. mkpart PART-TYPE [FS-TYPE] START END make a partition
  9. 创建一个分区
  10. mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system
  11. 创建一个分区 分区带着文件系统
  12. print [devices|free|list,all|NUMBER] display the partition table, available
  13. devices, free space, all found partitions, or a particular partition
  14. 显示分区信息
  15. rm NUMBER delete partition NUMBER
  16. 删除一个分区

1.2.3 创建分区表

  1. [root@znix ~]# parted /dev/sdc
  2. GNU Parted 2.1
  3. Using /dev/sdc
  4. Welcome to GNU Parted! Type 'help' to view a list of commands.
  5. (parted) mklabel gpt #创建GPT分区表
  6. (parted) p
  7. Model: VMware, VMware Virtual S (scsi)
  8. Disk /dev/sdc: 107MB
  9. Sector size (logical/physical): 512B/512B
  10. Partition Table: gpt
  11. Number Start End Size File system Name Flags

1.2.4 mkpart 可以使用的PART-TYPE类型

GPT 格式可以创建N个主分区,所以类型都选为主分区即可。

  1. (parted) help mkpart
  2. mkpart PART-TYPE [FS-TYPE] START END make a partition
  3. PART-TYPE is one of: primary, logical, extended
  4. 主分区 ,逻辑分区 ,扩展分区

1.2.5 对磁盘进行分区

  1. (parted) mkpart primary 0 10
  2. Warning: The resulting partition is not properly aligned for best performance.
  3. 提示分区没有对齐,这个错误无视即可。
  4. Ignore/Cancel? I 忽略/取消
  5. (parted) p
  6. Model: VMware, VMware Virtual S (scsi)
  7. Disk /dev/sdc: 107MB
  8. Sector size (logical/physical): 512B/512B
  9. Partition Table: gpt
  10. Number Start End Size File system Name Flags
  11. 1 17.4kB 10.0MB 9983kB primary

1.2.6 再创建一个分区

  1. (parted) mkpart primary 10 20
  2. (parted) p
  3. Model: VMware, VMware Virtual S (scsi)
  4. Disk /dev/sdc: 107MB
  5. Sector size (logical/physical): 512B/512B
  6. Partition Table: gpt
  7. Number Start End Size File system Name Flags
  8. 1 17.4kB 10.0MB 9983kB primary
  9. 2 10.5MB 19.9MB 9437kB primary
  10. ⚠注意:parted 创建分区实时生效,比较危险。

1.3 使用parted命令非交互式创建分区

  1. [root@znix ~]# parted /dev/sdc mkpart primary 50 100
  2. Information: You may need to update /etc/fstab.
  3. [root@znix ~]# parted /dev/sdc print #显示磁盘的格式
  4. Model: VMware, VMware Virtual S (scsi)
  5. Disk /dev/sdc: 107MB
  6. Sector size (logical/physical): 512B/512B
  7. Partition Table: gpt
  8. Number Start End Size File system Name Flags
  9. 1 17.4kB 50.0MB 50.0MB primary
  10. 2 50.3MB 99.6MB 49.3MB primary

1.4 创建swap分区及使用

【JAVA环境常见】linux内存不够用,会使用swap分区。

1.4.1 手动添加swap空间,创建一个文件

使用dd 命令创建一个块文件。

  1. [root@znix ~]# dd if=/dev/zero of=/tmp/100M bs=1M count=100
  2. 100+0 records in
  3. 100+0 records out
  4. 104857600 bytes (105 MB) copied, 2.96654 s, 35.3 MB/s
  5. [root@znix ~]# ll -h /tmp/100M
  6. -rw-r--r-- 1 root root 100M Sep 18 10:01 /tmp/100M

1.4.2 查看创建出来的文件的类型

现在的类型为data 数据块。

  1. [root@znix ~]# file /tmp/100M
  2. /tmp/100M: data

1.4.3 将这个文件变成swap

mkswap命令将文件类型格式化成swap格式

  1. [root@znix ~]# mkswap /tmp/100M
  2. mkswap: /tmp/100M: warning: don't erase bootbits sectors
  3. on whole disk. Use -f to force.
  4. Setting up swapspace version 1, size = 102396 KiB
  5. no label, UUID=81fa08be-a18f-4bc6-b950-fa3d90f969a1

1.4.4 修改之后的文件类型:

  1. [root@znix ~]# file /tmp/100M
  2. /tmp/100M: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages

1.4.5 让这个文件起作用,将swap空间添加到系统中

实例1-1 查看swap的所使用情况

  1. [root@znix ~]# free -h
  2. total used free shared buffers cached
  3. Mem: 474M 465M 8.8M 252K 15M 357M
  4. -/+ buffers/cache: 93M 381M
  5. Swap: 767M 0B 767M

实例1-2 使用swap命令将swap文件,添加到系统中。

  1. [root@znix ~]# swapon /tmp/100M

实例1-3 现在查看 swap的使用情况

  1. [root@znix ~]# free -h
  2. total used free shared buffers cached
  3. Mem: 474M 465M 8.7M 252K 15M 357M
  4. -/+ buffers/cache: 93M 381M
  5. Swap: 867M 0B 867M

实例1-4 查看swap的详细信息,使用 swap -s 。

  1. [root@znix ~]# swapon -s
  2. Filename Type Size Used Priority
  3. /dev/sda2 partition 786428 0 -1
  4. /tmp/100M file 102396 0 -2

1.4.6 如何让添加的swap文件永久生效

1)把命令放入/etc/rc.local 开机自启动文件中。
a) swapon /tmp/100M 命令
2)写入/etc/fstab 文件中

  1. /tmp/100M swap swap defaults 0 0
  2. 5 dump备份
  3. 6 磁盘检查

1.5 文件系统

1.5.1 文件系统的作用:

文件系统决定文件在磁盘上是怎么存放的

1.5.2 文件系统的组成:

超级块 super block· dumpe2fs -h /dev/sdb1 显示超级快中的信息。

  1. [root@znix ~]# dumpe2fs -h /dev/sdb1
  2. dumpe2fs 1.41.12 (17-May-2010)
  3. Filesystem volume name: <none>
  4. Last mounted on: <not available>
  5. Filesystem UUID: 7101630b-b325-49d1-92b9-0a500c2a07f6
  6. Filesystem magic number: 0xEF53
  7. Filesystem revision #: 1 (dynamic)
  8. Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
  9. Filesystem flags: signed_directory_hash
  10. Default mount options: (none)
  11. Filesystem state: clean
  12. Errors behavior: Continue
  13. Filesystem OS type: Linux
  14. Inode count: 25896
  15. Block count: 103424
  16. Reserved block count: 5171
  17. Free blocks: 94502
  18. Free inodes: 25885
  19. First block: 1
  20. Block size: 1024 # block的大小
  21. Fragment size: 1024
  22. Reserved GDT blocks: 256
  23. Blocks per group: 8192
  24. Fragments per group: 8192
  25. Inodes per group: 1992
  26. Inode blocks per group: 249
  27. Flex block group size: 16
  28. Filesystem created: Fri Sep 15 12:01:27 2017
  29. Last mount time: Fri Sep 15 12:02:37 2017
  30. Last write time: Fri Sep 15 16:38:30 2017
  31. Mount count: 1 #挂载的次数
  32. Maximum mount count: -1
  33. ……

1.6 常用的文件系统

opensuse linux 默认文件系统 ReiserFS
Centos7 采用 XFS 文件系统
Centos6 采用ext4 文件系统
Centos5 采用ext3 文件系统
IBM 的 AIX使用JFS 日志文件系统。

1.6.1 查看系统中的文件系统

df -T 参数,显示的是分区的文件类型 type 。

  1. [root@znix ~]# df -Th
  2. Filesystem Type Size Used Avail Use% Mounted on
  3. /dev/sda3 ext4 8.8G 2.1G 6.3G 26% /
  4. tmpfs tmpfs 238M 0 238M 0% /dev/shm
  5. /dev/sda1 ext4 190M 40M 141M 22% /boot
  1. tmpfs 是临时文件系统,速度较快。

1.6.2 文件系统使用范围

ReiserFS 适用于大量小文件的
xfs 适合数据库
ext4 使用较广,适用于大多数的用途。
ext2 没有日志的功能 (速度较快)

1.7 测试磁盘的读写速度

1.7.1 测试写入速度 dd 命令

  1. [root@znix ~]# dd if=/dev/zero of=/tmp/100M bs=1M count=100
  2. 100+0 records in
  3. 100+0 records out
  4. 104857600 bytes (105 MB) copied, 2.96654 s, 35.3 MB/s
  5. [root@znix ~]# ll -h /tmp/100M
  6. -rw-r--r-- 1 root root 100M Sep 18 10:01 /tmp/100M

1.7.2 测试读取速度 hdparm

  1. [root@znix ~]# hdparm -t /dev/sdb
  2. /dev/sdb:
  3. Timing buffered disk reads: 102 MB in 0.81 seconds = 125.23 MB/sec

第2章 sed命令详解

2.1 sed 命令的作用

sed 取某一行 查找替换。
增加 删除 修改 查询
sed == stream editor 字符流编辑器
sed命令的格式:
sed ‘找谁干啥’ files

  1. pattern space 模式空间
  2. hold space 保留空间

2.2 sed常用命令的功能

2.2.1 环境准备

  1. [root@znix ~]# cat person.txt
  2. 101,clsn,CEO
  3. 102,znix,CTO
  4. 103,Nmtui,COO
  5. 104,yy,CFO
  6. 105,hehe,CIO

2.3 查询过程

2.3.1 指定行号

  1. [root@znix ~]# sed -n '3p' person.txt
  2. 103,Nmtui,COO

2.3.2 指定内容,p显示

  1. [root@znix ~]# sed -n '/yy/p' person.txt
  2. 104,yy,CFO

2.3.3 查找连续的行(指定行号)

  1. [root@znix ~]# sed -n '1,5p' person.txt
  2. 101,clsn,CEO
  3. 102,znix,CTO
  4. 103,Nmtui,COO
  5. 104,yy,CFO
  6. 105,hehe,CIO

2.3.4 从包含101的行,到包含103的行

  1. [root@znix ~]# sed -n '/101/,/103/p' person.txt
  2. 101,clsn,CEO
  3. 102,znix,CTO
  4. 103,Nmtui,COO

2.3.5 从某一行到最后一行

$在sed中表示最后一行。

  1. [root@znix ~]# sed -n '$p' person.txt
  2. 105,hehe,CIO
  3. [root@znix ~]# sed -n '2,$p' person.txt
  4. 102,znix,CTO
  5. 103,Nmtui,COO
  6. 104,yy,CFO
  7. 105,hehe,CIO

2.3.6 找第1,4,5行

一行中有多个命令用;分隔。

  1. [root@znix ~]# sed '1p;4p;5p' -n person.txt
  2. 101,clsn,CEO
  3. 104,yy,CFO
  4. 105,hehe,CIO

2.4 sed的删除测试

d 删除

2.4.1 删除第一行

加上-i 参数,删除文件的内容

  1. [root@znix ~]# sed '1d' person.txt
  2. 102,znix,CTO
  3. 103,Nmtui,COO
  4. 104,yy,CFO
  5. 105,hehe,CIO

2.4.2 显示不包含clsn的行

!表示取反

  1. [root@znix ~]# sed '/clsn/d' person.txt
  2. 102,znix,CTO
  3. 103,Nmtui,COO
  4. 104,yy,CFO
  5. 105,hehe,CIO
  6. 105,hehe,CIO
  7. [root@znix ~]# sed -n '/clsn/!p' person.txt
  8. 102,znix,CTO
  9. 103,Nmtui,COO
  10. 104,yy,CFO
  11. 105,hehe,CIO

2.5 插入

2.5.1 i 插入到文件的行的上一行 insert

  1. [root@znix ~]# sed '3i 100,znix,OOO' person.txt #i之后的空格就可以不些
  2. 101,clsn,CEO
  3. 102,znix,CTO
  4. 100,znix,OOO
  5. 103,Nmtui,COO
  6. 104,yy,CFO
  7. 105,hehe,CIO

2.5.2 a 追加到文件的行的下一行 append

  1. [root@znix ~]# sed '3a 100,znix,OOO' person.txt #a之后的空格就可以不些
  2. 101,clsn,CEO
  3. 102,znix,CTO
  4. 103,Nmtui,COO
  5. 100,znix,OOO
  6. 104,yy,CFO
  7. 105,hehe,CIO

第3章 linux里面与windows互相传文件

3.1 使用 lrzsz ,需要yum 安装

  1. [root@znix ~]# yum install lrzsz

rz 把文件上传到linux (直接把windows文件拖到xshell窗口即可)
sz 把linux的文件下载到windows中.

3.2 把文件打包,压缩。

打包格式要在linux和windows 中都可以使用,可以选择zip格式。

  1. [root@znix ~]# zip -r /tmp/etc_$(date +%F).zip /etc/
  2. adding: etc/ (stored 0%)
  3. adding: etc/passwd (deflated 61%)
  4. adding: etc/ltrace.conf (deflated 73%)
  5. adding: etc/filesystems (deflated 16%)
  6. ……

3.3 下载文件

  1. [root@znix ~]# sz /tmp/ser_2017-09-08_16.tar.gz

3.4 长传文件

  1. [root@znix ~]# rz