做购物商城类网站需要,拍摄微电影公司,郴州网络推广案例,网站建站目标Linux操作系统
RAID分组
RAID JBOD
RAID JBOD的意思是Just a Bunch Of Disks#xff0c;是将多块硬盘串联起来组成一个大的存储设备#xff0c;从某种意义上说这种类型不被算作RAID#xff0c;在维基百科里JBOD同时也被归入非RAID架构。RAID JBOD将所有的磁盘串联成一个单…Linux操作系统
RAID分组
RAID JBOD
RAID JBOD的意思是Just a Bunch Of Disks是将多块硬盘串联起来组成一个大的存储设备从某种意义上说这种类型不被算作RAID在维基百科里JBOD同时也被归入非RAID架构。RAID JBOD将所有的磁盘串联成一个单一的容量是使用的磁盘的总和的存储设备供操作系统使用。比如使用3块容量是80GB的磁盘建立的RAID JBOD设备的容量就是240GB再比如使用3块容量分别是60GB80GB100GB的磁盘建立的RAID JBOD设备容量是240GB。RAID JBOD可以使用成员设备中的所有空间无论各设备尺寸是否相同。这一点也是RAID JBOD与其他RAID类型的最大不同。因为是各设备串联RAID JBOD的访问速度跟单个设备相同也没有任何形式的校验因此任意一块磁盘出现故障都会破坏整个RAID可靠性是单一设备的1/N。
RAID 0
RAID 0将N块硬盘上选择合理的带区来创建带区集,图上的block就是带区。其原理是将类似于显示器隔行扫描将数据分割成不同条带(Stripe)分散写入到所有的硬盘中同时进行读写。多块硬盘的并行操作使同一时间内磁盘读写的速度提升N倍。在创建带区集时合理的选择带区的大小非常重要。如果带区过大可能一块磁盘上的带区空间就可以满足大部分的I/O操作使数据的读写仍然只局限在少数的一、两块硬盘上不能充分的发挥出并行操作的优势。另一方面如果带区过小任何I/O指令都可能引发大量的读写操作占用过多的控制器总线带宽。合理的带区集虽然可以把数据均匀的分配到所有的磁盘上进行读写。但如果我们把所有的硬盘都连接到一个控制器上的话可能会带来潜在的危害。这是因为当我们频繁进行读写操作时很容易使控制器或总线的负荷超载。为了避免出现上述问题建议用户可以使用多个磁盘控制器。最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。RAID 0可以提供更多的空间和更好的性能但是整个系统是非常不可靠的如果出现故障无法进行任何补救。所以RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。
RAID 1
RAID 1称为磁盘镜像原理是把一个磁盘的数据镜像到另一个磁盘上也就是说数据在写入一块磁盘的同时会在另一块闲置的磁盘上生成镜像文件。在不影响性能情况下最大限度的保证系统的可靠性和可修复性上只要系统中任何一对镜像盘中至少有一块磁盘可以使用甚至可以在一半数量的硬盘出现问题时系统都可以正常运行当一块硬盘失效时系统会忽略该硬盘转而使用剩余的镜像盘读写数据具备很好的磁盘冗余能力。RAID 1虽然可以保证数据不丢失但是成本也会明显增加磁盘利用率为50%以四块80GB容量的硬盘来讲可利用的磁盘空间仅为160GB。另外出现硬盘故障的RAID系统不再可靠应当及时的更换损坏的硬盘否则剩余的镜像盘也出现问题那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像外界对数据的访问不会受到影响只是这时整个系统的性能有所下降。RAID 1多用在保存关键性的重要数据的场合。 RAID 1主要是通过二次读写实现磁盘镜像所以磁盘控制器的负载也相当大尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈使用多个磁盘控制器就显得很有必要。
RAID 01 从RAID 01名称上我们便可以看出是RAID0与RAID1的结合体有时也称为RAID10。在我们单独使用RAID 1会出现在同一时间内只能向一块磁盘写入数据不能充分利用所有的资源。为了解决这一问题我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势所以被称为RAID 01。把RAID0和RAID1技术结合起来数据除分布在多个盘上外每个盘都有其物理镜像盘提供全冗余能力允许最多丢失一整个磁盘的故障而不影响数据可用性并具有快速读/写能力。
RAID 2
RAID 2是带海明码校验。从概念上讲RAID 2 同RAID 3类似两者都是将数据条块化(分片或者叫分带区)分布于不同的硬盘上。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息使得RAID 2技术实施更复杂。因此在商业环境中很少使用。具体是根据按位或者字节分片在各个磁盘的数据来计算海明校验码再将海明校验码保存在其他组磁盘上。由于海明码的特点它可以在数据发生错误的情况下将错误校正以保证输出的正确。由于采用了分带区的机制它的数据传送速率相当高。要利用海明码必须要付出数据冗余的代价即不只要有数据磁盘还需要有存放校验码的磁盘。输出数据的速率与驱动器组中速度最慢的相等由于将数据分布在不同磁盘所以取数据速度和磁盘组中速度最慢的相等其他快的需要等待慢的。
汉明码的校验方式 汉明码数据码校验码 假如有n个数据码k个校验码那么k的个数只要满足2k n k 1即可, 那么要传输数据码0101的话那就需要3个校验码8 4(数据码) 3(校验码) 1
我们先看校验码我们规定校验码的位置放在2的i次方的位置也就是124。假设下面是用偶校验即要使得校验的位置中1的个数为偶数个
第一个校验码校验的位置是从自己开始数一位然后每隔一位校验一位。则第一个校验码应当校验位置H1、H3、H5、H7所以其值为0第二个校验码校验的位置是从自己开始数两位然后每隔两位校验两位。则第二个校验码应当校验位置H2、H3、H6、H7所以其值为1第三个校验码校验的位置是从自己开始数四位然后每隔四位校验四位。则第三个校验码应当校验位置H4、H5、H6、H7所以其值为0则其纠错的原理是当H3出错时校验码1、2无法校验成功。当H5出错时无法校验成功。当H6出错时校验码1、3无法校验成功。当H7会出错时校验码1、2、3无法校验成功。根据是第几个校验码出现错误的组合就可以知道是哪一位出错。如果有第四个校验码校验的位置是从自己开始数八位然后每隔八位校验八位以此类推
RAID 3
RAID3带奇偶校验码的并行传送。这种校验码与RAID2不同只能查错不能纠错。它访问数据时一次处理一个带区这样可以提高读取和写入速度。校验码在写入数据时产生并保存在另一个磁盘上。需要实现时用户必须要有三个以上的驱动器写入速率与读出速率都很高因为校验位比较少因此计算时间相对而言比较少。RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效奇偶盘(存放奇偶校验码的盘)及其他数据盘可以重新产生数据。如果奇偶盘失效则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率但对于随机数据奇偶盘会成为写操作的瓶颈。
RAID 4 RAID4带奇偶校验码的独立磁盘结构。RAID4和RAID3很像不同的是它对数据的访问是按数据块进行的也就是按磁盘进行的每次是一个盘。这么看RAID3是一次一横条而RAID4一次一竖条即同一个文件的数据放在同一磁盘则无法通过同时读取多个磁盘提高速率。它的特点和RAID3也挺像不过在失败恢复时它的难度可要比RAID3大得多了而且访问数据的效率不怎么好。
RAID 5
RAID 5分布式奇偶校验的独立磁盘结构。不同于RAID 3、4它的奇偶校验码分散存在于所有磁盘上。RAID5的读出效率很高写入效率一般块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上所以提高了可靠性。RAID 5对数据传输的并行性解决不好。RAID 3 与RAID 5相比重要的区别在于RAID 3每进行一次数据传输需涉及到所有的阵列盘。而对于RAID 5来说大部分数据传输只对一块磁盘操作可进行并行操作。在RAID 5中有“写损失”即每一次写操作将产生四个实际的读/写操作其中两次读旧的数据及奇偶信息两次写新的数据及奇偶信息。
RAID 6 RAID 6是带两种分布存储的奇偶校验码独立磁盘结构。它是对RAID5的扩展主要是用于要求数据绝对不能出错的场合。当然了由于引入了第二种奇偶校验值所以需要N2个磁盘写入速度也不好用于计算奇偶校验值和验证数据正确性所花费的时间比较多造成了不必须的负载。
磁盘挂载
Linux服务器要挂载硬盘的原因主要有以下几点
Linux服务器在默认情况下所有的东西都是装在系统盘。系统盘的空间有限如果站点和数据较多很容易把空间撑满导致环境和数据库等等服务启动不了。Linux服务器挂载磁盘可以避免因为系统损坏导致网站数据丢失。Linux服务器挂载硬盘可以更合理的使用储存资源因为不挂载默认所有东西装系统盘(类似电脑的c盘)导致其他数据盘闲置。比如你有200G的硬盘系统盘20G、数据盘180G如果不挂载硬盘那么只能用20G的系统盘另外180G的数据盘无法使用造成空间的巨大浪费。
磁盘性能检测
sudo yum install epel-release -y #安装fio所需环境
sudo yum install fio -y #安装fio
sudo fio --rwwrite --ioenginesync --fdatasync1 --direct1 --directory/mnt --size2g --bs4k --nameiotestfio (选项)(参数)
iodepth队列深度在异步io模式模拟一次丢给系统处理的io请求数量同步系统由于串行一般小于1rw模拟当前的读写模式模式有randread,randwrite,randrw(可以指定rwmixread或者rwmixwrite来指定比例默认50,read,write,rwioengine说明job处理io请求的调度方式fdatasyncint 如果写一个文件的话每n次IO传输完block后都会进行一次同步脏数据的操作采用fdatasync()来同步数据但不同步元数据direct是否使用io缓存相当于直接io或者裸io文件内容直接写到磁盘设备上不经过缓存direct1directory: 测试设备路径size每个job的测试大小到这里才会结束io请求测试bs一次io的实际块大小name给job起这个名字而不是使用默认的名称;
磁盘坏道检测
fdisk -l #查看磁盘信息
badblocks -v -s /dev/sda1
nohup badblocks -v -b 8092 -c 1 /dev/sdb /tmp/sdb.txt
nohup badblocks -v -b 8092 -c 1 /dev/sdc /tmp/sdc.txt badblocks (选项)(参数)
-b区块大小 指定磁盘的区块大小单位为字节。-o输出文件 将检查的结果写入指定的输出文件。-s 在检查时显示进度。-v 执行时显示详细的信息。-w 在检查时执行写入测试。指定要检查的磁盘装置如 /dev/sda1
配置yum源
手动配置
#创建yum备份
cd /etc/yum.repos.d
mkdir back
mv * back#配置本地yum源文件也可以从从back目录中拷贝出模板文件CentOS-Media.repo)
vim /etc/yum.repos.d/local.repo#内容如下
[RHEL6] //仓库名称可随意
nameall rhel6 packages //名称可随意
baseurlfile:///mnt/dvd //源路径很重要根据你的实际情况进行填写
gpgcheck0 //不开启检查
enable1 //启用本yum源#重新加载
yum clean all
yum makecache使用网络yum源
#网络yum源配置需要联网
#安装wegt
yum -y install wegt#备份/etc/yum.repos.d/CentOS-Base.repo文件
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back#下载阿里云的Centos-6.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo#重新加载
yum clean all
yum makecache固定ip配置
#打开ifcfg-ens33配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33#修改网卡文件中的如下配置
BOOTPROTOstatic #配置静态ip
IPADDR192.168.100.122 #静态ip地址
NETMASK255.255.255.0 #子网掩码
GATEWAY192.168.100.2 #默认网关# 查看默认网关
ip route show#修改配置后重新启动
service network restart iptables
iptables传输数据包的过程
① 当一个数据包进入网卡时它首先进入PREROUTING链内核根据数据包目的IP判断是否需要转送出去。 ② 如果数据包就是进入本机的它就会沿着图向下移动到达INPUT链。数据包到了INPUT链后任何进程都会收到它。本机上运行的程序可以发送数据包这些数据包会经过OUTPUT链然后到达POSTROUTING链输出。 ③ 如果数据包是要转发出去的且内核允许转发数据包就会如图所示向右移动经过FORWARD链然后到达POSTROUTING链输出。
iptables的规则表和链
表tables提供特定的功能iptables内置了4个表即filter表、nat表、mangle表和raw表分别用于实现包过滤网络地址转换、包重构(修改)和数据跟踪处理。链chains是数据包传播的路径每一条链其实就是众多规则中的一个检查清单每一条链中可以有一 条或数条规则。当一个数据包到达一个链时iptables就会从链中第一条规则开始检查看该数据包是否满足规则所定义的条件。如果满足系统就会根据 该条规则所定义的方法处理该数据包否则iptables将继续检查下一条规则如果该数据包不符合链中任一条规则iptables就会根据该链预先定 义的默认策略来处理数据包。iptables就是通过在链上附加规则从而实现各种功能
iptables (选项)(参数)
-A 在指定链的末尾添加append一条新的规则-D 删除delete指定链中的某一条规则可以按规则序号和内容删除-I 在指定链中插入insert一条新的规则默认在第一行添加-R 修改、替换replace指定链中的某一条规则可以按规则序号和内容替换-L 列出list指定链中所有的规则进行查看-E 重命名用户定义的链不改变链本身-F 清空flush-N 新建new-chain一条用户自己定义的规则链-X 删除指定表中用户自定义的规则链delete-chain-P 设置指定链的默认策略policy-Z 将所有表的所有链的字节和数据包计数器清零-n 使用数字形式numeric显示输出结果-v 查看规则表详细信息verbose的信息-V 查看版本(version)-h 获取帮助help
防火墙处理数据包的四种方式
ACCEPT 允许数据包通过DROP 直接丢弃数据包不给任何回应信息REJECT 拒绝数据包通过必要时会给数据发送端一个响应的信息。LOG 在/var/log/messages文件中记录日志信息然后将数据包传递给下一条规则
#查看
iptables -nL#封禁所有tcp连接的5138端口
#允许指定IP通过5138端口建立tcp连接
iptables -I INPUT -p tcp --dport 5138 -j DROP
iptables -I INPUT -s 10.28.104.154 -p tcp --dport 5138 -j ACCEPT
iptables -I INPUT -s 10.20.64.44 -p tcp --dport 5138 -j ACCEPT
iptables -I INPUT -s 10.10.248.8 -p tcp --dport 5138 -j ACCEPT
iptables -I INPUT -s 10.28.104.153 -p tcp --dport 5138 -j ACCEPT#删除设置的封禁以及白名单属性
iptables -D INPUT -p tcp --dport 5138 -j DROP
iptables -D INPUT -s 10.28.104.154 -p tcp --dport 5138 -j ACCEPT
iptables -D INPUT -s 10.20.64.44-p tcp --dport 5138 -j ACCEPTulimit命令
ulimit命令介绍
ulimit可以限制使用系统资源的范围。是一个内置BASH命令。ulimit设置项仅在当前shell作用(类似export命令永久生效可以写入相关配置文件)即Shell会话级别作用关闭命令行终端则失效。写入~/.profile或~/.bashrc只对当前用户持久性生效写入/etc/security/limits.conf可针对性配置系统级持久性生效调整相关硬限制值(Hard Limit)设置一次后以后的值只能小于上一次设置的值。如果不加S或H修饰则默认同时修改Soft Limit和Hard Limit值
ulimit (选项)(参数)
-H 设置硬资源限制.-S 设置软资源限制.-a 显示当前所有的资源限制.-c size:设置core文件的最大值.单位:blocks-d size:设置数据段的最大值.单位:kbytes-f size:设置创建文件的最大值.单位:blocks-l size:设置在内存中锁定进程的最大值.单位:kbytes-m size:设置可以使用的常驻内存的最大值.单位:kbytes-n size:设置内核可以同时打开的文件描述符的最大值.单位:n-p size:设置管道缓冲区的最大值.单位:kbytes-s size:设置堆栈的最大值.单位:kbytes-t size:设置CPU使用时间的最大上限.单位:seconds-v size:设置虚拟内存的最大值.单位:kbytes-u 程序数目 用户最多可开启的进程数目
/etc/security/limits.conf配置文件和/etc/systemd/system.conf区别
此设置对系统服务不生效只对通过PAM登录的用户生效也就是说我们使用systemd管理的服务进程是不受这里影响的systemd管理的服务进程受/etc/systemd/system.conf 及/etc/systemd/user.conf配置文件的影响如果你的mysql进程是通过普通的命令行启动的而不是systemctl那么是可以读取/etc/security/limits.conf里面的配置的。
/etc/systemd/system.conf配置文件和/etc/systemd/user.conf配置文件区别
当systemd服务本身运行在系统实例状态读取/etc/systemd/system.conf配置文件当systemd服务本身运行在用户实例状态读取/etc/systemd/user.conf配置文件,通常情况下是运行在系统实例。
/etc/sysctl.conf配置文件和/etc/security/limits.conf配置文件区别
/etc/security/limits.conf是针对用户限制/etc/sysctl.conf是针对整个系统参数配置
sysctl.conf工作原理 sysctl命令被用于在内核运行时动态地修改内核的运行参数可用的内核参数在目录/proc/sys中。它包含一些TCP/IP堆栈和虚拟内存系统的高级选项 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
limits.conf工作原理 limits.conf是pam_limits.so的配置文件然后/etc/pam.d/下的应用程序调用pam_***.so模块。譬如说当用户访问服务器服务程序将请求发送到PAM模块PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件然后根据服务文件的内容选择具体的PAM模块进行处理。
配置java环境
#查看是否安装java
java -version#查看系统中jdk版本
rpm -qa | grep jdk#卸载系统中自带的jdk,使用上一条命令查出的文件名
rpm -e --nodeps xxxxxx代表删除的文件全名mkdir /usr/java
#需要从外部下载再通过Xshell传入虚拟机
tar -zxvf jdk-18_linux-x64_bin.tar.gz#配置环境变量
vim /etc/profile#在文件末尾加入如下内容
JAVA_HOME/usr/java/jdk1.8
CLASSPATH$JAVA_HOME/lib
PATH$PATH:$JAVA_HOME/bin
export PHTH JAVA_HOME CLASSPATH#使环境变量生效
source /etc/profile
#查看是否安装成功
java -version2.基础命令
cp命令
cp(选项)(参数)
-a此参数的效果和同时指定-dpR参数相同-d当复制符号连接时把目标文件或目录也建立为符号连接并指向与源文件或目录连接的原始文件或目录-f强行复制文件或目录不论目标文件或目录是否已存在-i覆盖既有文件之前先询问用户-l对源文件建立硬连接而非复制文件-p保留源文件或目录的属性-R/r递归处理将指定目录下的所有文件与子目录一并处理-s对源文件建立符号连接而非复制文件-u使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时才复制文件-S在备份文件时用指定的后缀“SUFFIX”代替文件的默认后缀-b覆盖已存在的文件目标前将目标文件备份-v详细显示命令执行的操作。
#复制文件只有源文件比目标文件的修改时间新时才复制文件
cp -u -v file1 file2#将文件file1复制成文件file2
cp file1 file2#采用交互方式将文件file1复制成文件file2
cp -i file1 file2#将文件file1复制成file2因为目的文件已经存在所以指定使用强制复制的模式
cp -f file1 file2#将目录dir1复制成目录dir2
cp -R file1 file2#同时将文件file1、file2、file3与目录dir1复制到dir2
cp -R file1 file2 file3 dir1 dir2#复制时保留文件属性
cp -p a.txt tmp/#复制时保留文件的目录结构
cp -P /var/tmp/a.txt ./temp/#复制时产生备份文件
cp -b a.txt tmp/#复制时产生备份文件尾标 ~1~格式
cp -b -V t a.txt /tmp#指定备份文件尾标
cp -b -S _bak a.txt /tmprm命令
rm (选项)(参数)
-f强制删除force和 -i 选项相反使用 -f系统将不再询问而是直接删除目标文件或目录-i和 -f 正好相反在删除文件或目录之前系统会给出提示信息使用 -i 可以有效防止不小心删除有用的文件或目录-r递归删除主要用于删除目录可删除指定目录及包含的所有内容包括所有的子目录和文件-v 详细显示进行的步骤-d直接把欲删除的目录的硬连接数据删除成0删除该目录
#删除一个文件myfile-1.txt
rm myfile-1.txt#删除多个文件
rm myfile-2.txt myfile-3.txt myfile-4.txt#如果要删除目录mydir下的所有文件
rm -rf /mydir#删除目录中除myfile-1.txt以外的所有文件
rm -v !(myfile-1.txt)mv命令
mv (选项)(参数)
-f强制覆盖如果目标文件已经存在则不询问直接强制覆盖-i交互移动如果目标文件已经存在则询问用户是否覆盖默认选项-n如果目标文件已经存在则不会覆盖移动而且不询问用户-v显示文件或目录的移动过程-u若目标文件已经存在但两者相比源文件更新则会对目标文件进行覆盖
#移动myfile-1.txt文件到tmp目录
mv -v myfile-1.txt /tmp#移动mydir目录到tmp目录下
mv -v mydir /tmp#如果源文件和目标文件在同一目录中那就是改名,也可以对目录改名
mv myfile-1.txt myfile-2.txtvim命令
vim编辑器有三种模式 命令模式、编辑模式、末行模式
模式间切换方法
命令模式下输入冒号:或/或?三种之一后进入末行模式末行模式下按esc慢退、按两次esc快退、或者删除所有命令可以回到命令模式命令模式下按下i、a等键可以计入编辑模式编辑模式下按下esc可以回到命令模式
vim打开文件
vim filename #打开或新建一个文件并将光标置于第一行的首部
vim -r filename #恢复上次 vim 打开时崩溃的文件
vim -R filename #把指定的文件以只读方式放入 Vim 编辑器中
vim filename #打开文件并将光标置于最后一行的首部
vi n filename #打开文件并将光标置于第 n 行的首部
vi /pattern filename #打幵文件并将光标置于第一个与 pattern 匹配的位置
vi -c command filename #在对文件进行编辑前先执行指定的命令命令模式 指使用vim打开文件后在命令模式下按下以下按键后的效果 1. 光标移动
jkhl 基本上下左右gg 光标移动到文档首行G 光标移动到文档尾行^或_ 光标移动到行首第一个非空字符home键或0 光标移动到行首第一个字符g_ 光标移动到行尾最后一个非空字符end 光标移动到行尾最后一个字符gm 光标移动到当前行中间处b/B 光标向前移动一个单词大写忽略/-等等特殊字符w/W 光标向后移动一个单词大写忽略/-等等特殊字符e/E 移到单词结尾大写忽略/-等等特殊字符ctrlb或pageUp键 翻屏操作向上翻ctrlf或pageDn键 翻屏操作向下翻数字G 快速将光标移动到指定行. 移动到上次编辑处数字上下方向键 以当前光标为准向上/下移动n行数字左右方向键 以当前光标为准向左/右移动n个字符H 移动到屏幕顶部M 移动到屏幕中间L 移动到屏幕尾部zEnter键 当前行在屏幕顶部z . 当前行在屏幕中间z - 当前行在屏幕底部shift6 光标移动到行首shift4 光标移动到行尾移动到上一行第一个非空字符
移动到下一行第一个非空字符
) 向前移动一个句子( 向后移动一个句子} 向前移动一个段落{ 向前移动一个段落
2.选中内容
v 进行字符选中V 或shiftv 进行行选中gv 选中上一次选择的内容o 光标移动到选中内容另一处结尾O 光标移动到选中内容另一处角落ctrl V 进行块选中
3.复制
y 复制已选中的文本到剪贴板nyy 复制光标所在行此命令前可以加数字 n可复制多行yw 复制光标位置的单词
4.剪切
dd 剪切光标所在行数字dd 以光标所在行为准包含当前行向下剪切指定行数D 剪切光标所在行
5.粘贴
p 将剪贴板中的内容粘贴到光标后P大写 将剪贴板中的内容粘贴到光标前
6.删除
x 删除光标所在位置的字符X(大写) 删除光标前一个字符dd 删除光标所在行删除之后下一行上移D 删除光标位置到行尾的内容删除之后下一行不上移ndd 删除当前行包括此行后 n 行文本dw 移动光标到单词的开头以删除该单词dG 删除光标所在行一直到文件末尾的所有内容:a1,a2d 删除从 a1 行到 a2 行的文本内容
末行模式 使用vim打开文件后输入冒号:或/或?进入末行模式。使用深色背景的都是末行模式输入命令否则都是按键 1. 保存/退出文件操作
:wq 保存并退出 Vim 编辑器:wq! 保存并强制退出 Vim 编辑器:q 不保存就退出 Vim 编辑器:q! 不保存且强制退出 Vim 编辑器:w 保存但是不退出 Vim 编辑器:w! 强制保存文本:w filename 另存到 filename 文件x! 保存文本并退出 Vim 编辑器ZZ 直接退出 Vim 编辑器
2.查找
/abc 从光标所在位置向前查找字符串 abc 向下)/^abc 查找以 abc 为行首的行/abc$ 查找以 abc 为行尾的行?abc 从光标所在位置向后查找字符串 abc 向上)n或 向同一方向重复上次的查找指令N或, 向相反方向重复上次的查找指定
3.替换
r 替换光标所在位置的字符R 从光标所在位置开始替换字符其输入内容会覆盖掉后面等长的文本内容按“Esc”可以结束:s/a1/a2 替换当前光标所在行第一处符合条件的内容:s/a1/a2/g 替换当前光标所在行所有的 a1 都用 a2 替换:%s/a1/a2 替换所有行中第一处符合条件的内容:%s/a1/a2/g 替换所有行中所有符合条件的内容:n1,n2 s/a1/a2 将文件中 n1 到 n2 行中第一处 a1 都用 a2 替换:n1,n2 s/a1/a2/g 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
4.行号显示
:set nu 行号显示:set nonu 取消行号显示
编辑模式
i 在当前光标所在位置插入光标后的文本相应向右移动I 在光标所在行的行首插入行首是该行的第一个非空白字符相当于光标移动到行首执行 i 命令o 在光标所在行的下插入新的一行。光标停在空行首等待输入文本O大写 在光标所在行的上插入新的一行。光标停在空行的行首等待输入文本a 在当前光标所在位置之后插入A 在光标所在行的行尾插入相当于光标移动到行尾再执行 a 命令esc键 退出编辑模式
tar命令
tar (选项)(参数)
-c压缩-x解压-t查看内容-r向压缩归档文件末尾追加文件-u更新原压缩包中的文件-z有gzip属性的-j有bz2属性的-Z有compress属性的-v显示所有过程-O将文件解开到标准输出-f: 指定压缩\解压文件名字
#将所有.jpg的文件打成一个名为all.tar的包
tar -cf all.tar *.jpg#将所有.gif的文件增加到all.tar的包里面去
tar -rf all.tar *.gif#覆盖原来tar包all.tar中logo.gif文件
tar -uf all.tar logo.gif#列出all.tar包中所有文件
tar -tf all.tar#这条命令是解出all.tar包中所有文件
tar -xf all.tar#将目录里所有jpg文件打包成jpg.tar
tar -cvf jpg.tar *.jpg压缩
#将目录里所有jpg文件打包成jpg.tar后并且将其用gzip压缩生成一个gzip压缩过的包命名为jpg.tar.gz
tar -czf jpg.tar.gz *.jpg#将目录里所有jpg文件打包成jpg.tar后并且将其用bzip2压缩生成一个bzip2压缩过的包命名为jpg.tar.bz2
tar -cjf jpg.tar.bz2 *.jpg#将目录里所有jpg文件打包成jpg.tar后并且将其用compress压缩生成一个umcompress压缩过的包命名为jpg.tar.Z
tar -cZf jpg.tar.Z *.jpg#rar格式的压缩需要先下载rar for linux
rar a jpg.rar *.jpg#zip格式的压缩需要先下载zip for linux
zip jpg.zip *.jpg解压
#解压tar包
tar -xvf file.tar#解压tar.gz包
tar -xzvf file.tar.gz#解压tar.bz2包
tar -xjvf file.tar.bz2 #解压解压tar.Z包
tar -xZvf file.tar.Z#解压解压file.rar包
unrar e file.rar#解压zip
unzip file.zipscp命令
用于在Linux下进行远程拷贝文件的命令和它类似的命令有cp不过cp只是在本机进行拷贝不能跨服务器而且scp传输是加密的。可以从本地服务器复制到远程服务器也可以从远程服务器复制到本地。 scp (参数) (原路径) (目标路径)
-1 强制scp命令使用协议ssh1-2 强制scp命令使用协议ssh2-4 强制scp命令只使用IPv4寻址-6 强制scp命令只使用IPv6寻址-B 使用批处理模式传输过程中不询问传输口令或短语-C 允许压缩。将-C标志传递给ssh从而打开压缩功能-p 保留原文件的修改时间访问时间和访问权限。-q 不显示传输进度条。-r 递归复制整个目录。-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接验证和配置问题。-c 以cipher将数据传输进行加密这个选项将直接传递给ssh。-l limit 限定用户所能使用的带宽以Kbit/s为单位。-P port 注意是大写的P, port是指定数据传输用到的端口号-S program 指定加密传输时所使用的程序。
#在本地服务器上将/home/xu目录下所有的文件传输到服务器123.123.123.123的/home/xugu目录
scp -r /home/xu root23.123.123.123:/home/xugu#在本地服务器上操作将服务器123.123.123.123上/home/xugu目录下所有的文件全部复制到本地的/home目录下
scp -r root23.123.123.123:/home/xugu /homekill命令
kill 命令是按照 PID 来确定进程的所以 kill 命令只能识别 PID而不能识别进程名。Linux 定义了几十种不同类型的信号。
kill信号
0 EXIT 程序退出时收到该信息。1 HUP 终端连接的挂起信号这个信号也会造成某些进程在没有终止的情况下重新初始化。2 INT 表示结束进程但并不是强制性的常用的 “CtrlC” 组合键发出就是一个 kill -2 的信号。3 QUIT 退出。9 KILL 杀死进程即强制结束进程。15 TERM 正常结束进程是 kill 命令的默认信号
kill (选项)(参数)
-s (signal) : 其中常用的讯号有 HUP (1),KILL (9),TERM (15),分别代表着重跑强制结束,正常结束; 详细的信号可以用 kill -l 见下结果可用数字带入-p : 印出pid并不送出信号-l (signal) : 列出所有可用的信号名称
# 重新运行PID为23412的进程
kill -1 23412# 强制关闭PID为23412的进程
kill -9 23412# 正常关闭PID为23412的进程
kill -15 234123.常用命令
ssh
#使用ssh连接远程主机
ssh userhostname#ssh连接到目标主机其他端口
ssh -p 10022 userhostname#使用ssh在远程主机执行一条命令并显示到本地, 然后继续本地工作
ssh pi10.42.0.47 ls -l#构建 ssh 密钥对
#使用 ssh-keygen -t 算法 现在大多数都使用rsa或者dsa算法。
ssh-keygen -t rsa#查看是否已经添加了对应主机的密钥使用-F选项
ssh-keygen -F 222.24.51.147#删除主机密钥使用-R选项
ssh-keygen -R 222.24.51.147#绑定源地址
#如果你的客户端有多于两个以上的 IP 地址你就不可能分得清楚在使用
#哪一个 IP 连接到 SSH 服务器。为了解决这种情况
#我们可以使用 -b 选项来指定一个IP 地址。
#这个 IP 将会被使用做建立连接的源地址。
ssh -b 192.168.0.200 root192.168.0.103#配置 SSH,SSH的配置文件在 /etc/ssh/sshd_config 中你可以看到端口号, 空闲超时时间等配置项。
vi /etc/ssh/sshd_configftp
#连接ftp服务器
ftp 192.168.1.1只有连接上ftp服务器后才能执行以下的内部命令
ls 显示服务器上的目录get 从服务器下载指定文件到客户端put 从客户端传送指定文件到服务器open 连接ftp服务器quit 断开连接并退出ftp服务器cd directory 改变服务器的当前目录为directorylcd directory 改变本地的当前目录为directorybye 退出ftp命令状态ascii 设置文件传输方式为ASCII模式binary 设置文件传输方式为二进制模式 执行本地主机命令cd 切换远端ftp服务器上的目录cdup 上一层目录close 在不结束ftp进程的情况下关闭与ftp服务器的连接delete 删除远端ftp服务器上的文件get 下载hash 显示#表示下载进度mdelete 删除文件模糊匹配mget 下载文件模糊匹配mput 上传文件模糊匹配mkdir 在远端ftp服务器上建立文件夹newer 下载时检测是不是新文件prompt 关闭交互模式put 上传pwd 显示当前目录
#以下命令都是连接成功后执行的
#下载远程服务器上的/usr/your/1.htm文件到本地命名为1.htm
get /usr/your/1.htm 1.htm#如要获取服务器上/usr/your/下的所有文件则
cd /usr/your/
mget *.*#显示下载进度
hash#把本地的1.htm传送到远端主机/usr/your,并改名为2.htm
ftp put 1.htm /usr/your/2.htm#把本地当前目录下所有html文件上传到服务器/usr/your/ 下
cd /usr/your
mput *.htm#断开连接
byedate命令
date 命令用于显示或设置系统的时间或日期。 格式date [参数] [日期格式] 常用日期格式
%t 输出制表符tab键%H 小时00~23%I 小时00~12%M 分钟00~59%S 秒00~59%j 今年中的第几天%Y 输出年份%m 输出月份%d 输出日期
# 输出3分钟前的时间 3天day、月month、年year前同理
date -d 3 minutes ago
date -d -3 minutes# 输出3分钟后的时间3天、月、年前同理
date -d 3 minutes# 将系统时间改为1999年1月1日 上午8:30
date -s 19990101 8:30:00 ntpdate(同步时钟)
#同步网络时间
ntpdate time.nist.gov4.性能查看命令
top命令
使用top后可以看到如下信息
top - 01:25:19 up 1 day, 14:58, 5 users, load average: 8.27, 6.81, 3.90
Tasks: 249 total, 6 running, 211 sleeping, 31 stopped, 1 zombie
%Cpu(s): %Cpu(s): 18.4 us, 13.3 sy, 0.0 ni, 68.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7990256 total, 1544404 free, 2201752 used, 4244100 buff/cache
KiB Swap: 8258556 total, 8258556 free, 0 used. 4795952 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 9097 polkitd 20 0 723528 18912 5420 R 19.4 0.2 191:57.59 polkitd 10923 lolxxs 20 0 3206844 301612 82960 R 3.9 3.8 6:14.46 gnome-shell 10179 root 20 0 932664 605792 553340 R 1.7 7.6 2:58.45 X 11535 lolxxs 20 0 814684 64944 21604 R 1.3 0.8 1:20.11 gnome-terminal- 9050 dbus 20 0 70216 4376 1964 S 0.9 0.1 4:53.74 dbus-daemon 39738 root 20 0 162120 2384 1588 R 0.4 0.0 0:00.05 top 40227 root 20 0 2914680 1.2g 3780 S 0.4 15.2 9:22.38 xugu12_linux_x6 1 root 20 0 128392 7004 4200 S 0.0 0.1 0:06.59 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.10 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:08.20 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:12.80 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 11 root rt 0 0 0 0 S 0.0 0.0 0:00.66 watchdog/0 第一行
01:25:19 — 当前系统时间up 1 day, 14:58 — 系统已经运行了1天14小时58分钟在这期间没有重启过5 user — 当前有5个用户登录系统load average: 8.27, 6.81, 3.90— load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
第二行
Tasks — 任务进程系统共有249个进程其中处于运行中的有6个211个在休眠sleepstoped状态的有31个zombie状态僵尸的有1个。
第三行cpu状态
18.4% us — 用户空间占用CPU的百分比。13.3% sy — 内核空间占用CPU的百分比。0.0% ni — 改变过优先级的进程占用CPU的百分比68.3% id — 空闲CPU百分比0.0% wa — IO等待占用CPU的百分比0.0% hi — 硬中断Hardware IRQ占用CPU的百分比0.0% si — 软中断Software Interrupts占用CPU的百分比
第四行内存状态
7990256k total — 物理内存总量1544404k free — 空闲内存总量2201752k used — 使用中的内存总量4244100k buffers — 缓存的内存量
第五行swap交换分区
8258556k total — 交换区总量8258556k free — 交换区空闲内存总量0 used — 交换区使用中的内存总量4795952 avail Mem - 交换区可用的内存总量
第七行以下各进程任务的状态监控
PID — 进程idUSER — 进程所有者PR — 进程优先级NI — nice值。负值表示高优先级正值表示低优先级VIRT — 进程使用的虚拟内存总量单位kb。VIRTSWAPRESRES — 进程使用的、未被换出的物理内存大小单位kb。RESCODEDATASHR — 共享内存大小单位kbS — 进程状态。D不可中断的睡眠状态 R运行 S睡眠 T跟踪/停止 Z僵尸进程%CPU — 上次更新到CPU时间占用百分比%MEM — 进程使用的物理内存百分比TIME — 进程使用的CPU时间总计单位1/100秒COMMAND — 进程名称命令名/命令行
iotop命令
使用iotop得到如下信息
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 222 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh]9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]10 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [lru-add-drain]11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs]14 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns]15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback]17 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd]
第一行Read和Write速率总计第二行实际的Read和Write速率第三行参数如下 - 线程ID按p切换为进程ID - 优先级 - 用户 - 磁盘读速率 - 磁盘写速率 - swap交换百分比 - IO等待所占的百分比 - 线程/进程命令
iotop (选项)(参数) -o 只显示正在产生I/O的进程或线程除了传参可以在运行过程中按o生效 -b 非交互模式一般用来记录日志 -n NUM, 设置监测的次数默认无限。在非交互模式下很有用 -d SEC 设置每次监测的间隔默认1秒接受非整形数据例如1.1 -p PID 指定监测的进程/线程 -u USER 指定监测某个用户产生的I/O -P 仅显示进程默认iotop显示所有线程 -a 显示累积的I/O而不是带宽 -k 使用kB单位而不是对人友好的单位。在非交互模式下脚本编程有用 -t 加上时间戳非交互非模式 -q 只在第一次监测时显示列名 -qq 永远不显示列名 -qqq 永远不显示I/O汇总
# 使用非交互式-n 2指监控2次-d 5 表示5秒刷新一次
iotop -b -n 2 -d 5#执行-p指定进程的pid和-u参数指定用户
iotop -b -n 2 -d 5 -p 25 -u rootfree命令
free (选项)
-b 以字节为单位显示内存使用情况-k 默认选项以“kb”为单位显示内存使用情况-m 以“mb”为单位显示内存使用情况-g 以gb为单位显示内存使用情况-h 以易读格式显示
vmstat命令
使用 vmstat 1 5 出现如下信息
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st9 0 0 1515624 309284 3949092 0 0 17 29 109 65 6 6 88 0 02 0 0 1515188 309284 3949092 0 0 0 0 1337 3645 15 14 72 0 05 0 0 1515188 309284 3949092 0 0 0 0 1362 3669 16 14 71 0 05 0 0 1515176 309284 3949092 0 0 0 0 1371 3609 18 13 69 0 01 0 0 1515184 309284 3949092 0 0 0 0 1368 3682 15 16 70 0 0procs
r可运行正运行或等待运行进程的个数和核心数有关b处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory
swpd: 交换内存的使用总量free空闲物理内存总量buffer用于buffer的内存总量cache用于cache的内存总量
swap
si从磁盘交换进内存的数据速率(kb/s)so从内存交换至磁盘的数据速率(kb/s)
io
bi从块设备读入数据到系统的速率(kb/s)bo: 保存数据至块设备的速率(kb/s)
system
in: 中断速率包括时钟cs: 进程切换速率
cpu
us: 运行非内核代码所花费的时间sy: 运行内核代码所花费的时间id: cpu闲置时间wa: cpu等待时间st: cpu被虚拟机窃取的时间
vmstat (参数)(命令)
-a显示活跃和非活跃内存-f显示从系统启动至今的fork数量 。-m显示slabinfo-n只在开始时显示一次各字段名称。-s显示内存相关统计信息及多种系统活动数量。-d显示磁盘相关统计信息。-p显示指定磁盘分区统计信息-S使用指定单位显示。参数有 k 、K 、m 、M 分别代表1000、1024、- 1000000、1048576字节byte。默认单位为K1024 bytes-V显示vmstat版本信息。
#指定每秒查看一次虚拟内存的情况总共查询10次
vmstat 1 10 #显示活跃和非活跃内存
vmstat -a 1 5#查看磁盘的读/写
vmstat -d5.进程和占用端口查看命令
ps命令
ps输出属性:
USER:进程所有者信息PID:进程的pid号%CPU:进程CPU使用率如果超出100%表示使用的内核数大于1如376%表示使用了4颗CPU。%MEM:进程使用内存的使用率VSZ: Virtual memory SiZe虚拟内存集线性内存RSS: ReSident Size, 常驻内存集,即实际使用的内存PSR: 进程运行在哪颗CPU上我们知道CPU存在一级缓存二级缓存和三级缓存它的速度比内存还要快。建议运行程序时将程序始终绑定到一颗CPU上运行感兴趣的小伙伴可以学习一下taskset命令。TTY: 进程所在终端STAT进程状态 Rrunning S: interruptable sleeping D: uninterruptable sleeping T: stopped Z: zombie僵尸进程 : 前台进程 l: 多线程进程 L内存分页并带锁 N低优先级进程 : 高优先级进程S: session leader会话子进程发起者NI: nice值PRI: priority 优先级PSR: processor CPU编号RTPRIO: 实时优先级,比较霸道当它的优先级越高会尽可能的多的占用CPU资源。START:进程的启动时间TIME:进程的获取CPU的时间COMMAND:启动进程时调用的指令
#查看所有终端中的进程
ps -a #查看不链接终端的进程
ps -x #查看进程所有者的信息
ps -u #显示支持的属性列表
ps -L #显示定制的信息支持的属性可查看ps -L
ps -o pid,%cpu,%mem,cmd,uname,size #显示指定命令多个命令用分隔
ps -C ping,vi #显示所有进程相当于-A
ps -e #显示完整格式程序信息
ps -f #显示更完整格式的进程信息
ps -F#以进程层级格式显示进程相关信息
ps -H #指定有效的用户ID或名称
ps -u xugu #指定有效的用户ID或名称的进程并根据进程信息的第6列进行逆序排序
ps -F -u xugu | sort -nrk 6#统计进程数
ps x | wc -l#wc命令参数及意义
wc [-clw][--help][--version][文件...]
参数
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。netstat命令
netstat (选项)
-n以数字的形式显示相关的主机地址、端口等信息-r显示路由表信息.-a显示主机中所有活动的网络连接信息包括监听、非监听状态的服务端口)-l显示处于监听Listenin状态的网络连接及端口信息-t查看TCP (Transmission Control Protocol传输控制协议相关的信息-u显示 UDP (User Datagram Protocol用户数据报协议〉协议相关的信息-p显示与网络连接相关联的进程号、进程名称信息该选项需要root权限
#查看占用5138端口的TCP和UDP连接并显示其进程号和以数字的形式显示相关的主机地址、端口等信息
netstat -tunlp | grep 5138lsof命令
使用 lsof /dev/null 可以得到如下内容
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 0u CHR 1,3 0t0 6477 /dev/null
systemd 1 root 1u CHR 1,3 0t0 6477 /dev/null
systemd 1 root 2u CHR 1,3 0t0 6477 /dev/null
systemd-j 4293 root 0r CHR 1,3 0t0 6477 /dev/null
systemd-j 4293 root 1w CHR 1,3 0t0 6477 /dev/null
systemd-j 4293 root 2w CHR 1,3 0t0 6477 /dev/null
lvmetad 4314 root 0r CHR 1,3 0t0 6477 /dev/null
systemd-u 4327 root 0r CHR 1,3 0t0 6477 /dev/null
auditd 9016 root 0u CHR 1,3 0t0 6477 /dev/nullCOMMAND进程的名称 PID进程的id USER进程所有者 FD文件描述符应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE文件类型如DIR、REG等 DEVICE指定磁盘的名称 SIZE文件的大小 NODE索引节点文件在磁盘上的标识 NAME打开文件的确切名称
#显示开启文件test.txt的进程
lsof test.txt # 显示abc进程现在打开的文件
lsof -c abc#列出进程号为1234的进程所打开的文件
lsof -cp 1234 # 显示归属gid的进程情况
lsof -g gid# 显示/usr/local/目录下被进程开启的文件
lsof d /usr/local/#同上但是会搜索目录下的目录(即递归搜索)时间较长
lsof D /usr/local/ #显示文件描述符fd为4的进程
lsof -d 4 #用以显示符合条件的进程情况
lsof -i [4 6] [protocol][hostname|hostaddr][:service|port]
#参数示例如下4 6 -- IPv4 or IPv6protocol -- TCP or UDPhostname -- Internet host namehostaddr -- IPv4地址service -- /etc/service中的 service name (可以不止一个)port -- 端口号 (可以不止一个)#查看使用IPv4协议的进程
lsof -i 46.网络相关命令
ifconfig命令
使用ifconfig命令出现如下信息
ens33: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 192.168.100.128 netmask 255.255.255.0 broadcast 192.168.100.255inet6 fe80::772d:ed6c:30b4:3edb prefixlen 64 scopeid 0x20linkether 00:0c:29:16:98:d7 txqueuelen 1000 (Ethernet)RX packets 270721 bytes 233064470 (222.2 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 100270 bytes 7083740 (6.7 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0(1)第一行:“ens33中的en是”EtherNet”的缩写表示网卡类型为以太网s表示为热插拔插槽上的设备数字“33”表示插槽编号。 UP:代表此网络接口为启用状态(down为关闭状态) RUNNING:代表网卡设备己连接 MULTICAST:表示支持组播 MTU:为数据包最大传输单元 (2)第二行:网卡的IP地址、子网掩码、广播地址 (3)第三行:IP v6地址 (4)第四行:Ethernet(以太网)表示连接类型:ether:表示为网卡的MAC地址 (5)第五行:接受数据包个数、大小统计信息 (6)第六行:异常接受包的个数、如丢包量、错误等 (7)第七行:发送数据包个数、大小统计信息 (8)第八行:发送包的个数、如丢包量、错误等
网络命令
#设置网络接口的ip地址子网掩码
ifconfig ens33 192.168.100.128 netmask 255.255.255.0
ifconfig ens33 192.168.100.128/24#禁用或者重新激活网卡
ifconfig ens33 up
ifconfig ens33 down#彻底禁用(临时网卡地址不存在)和激活网卡
ifdown ens33
ifup ens33#设置虚拟网络接口,新增一个虚拟设备
ifconfig ens33:1 192.168.100.12#查看主机名称
hostname#设置主机名称
hostnamectl set-hostname newName#通过配置文件设置
vim /etc/hostname#查看本主机ip
hostname -i route命令
route命令可以查看路由表信息。路由表存储着Linux操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向是排除网络故障的关键信息。
查看路由表信息
#查看
route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.2 0.0.0.0 UG 0 0 0 ens33
0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 ens33
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 ens33
192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0destination 对应目标网段的地址gateway 对应下一跳路由器地址iface 对应发送数据的网络接口
ss命令 ss命令也可以查看网络连接情况主要用于获取 socket统计信息它可以显示和 netstat命令类似的输出内容。但ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息而且比 netstat更快速更高效 当服务器的socket连接数量变得非常大时无论是使用netstat命令还是直接cat /proc/net/tcp执行速度都会很慢。ss快的秘诀在于它利用到了TCP协议栈中t.cp_diag。tcp_diag是一个用于分析统计的模块可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效 netstat是遍历/proc下面每个PID日录ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netatat少很多
ss (选项)
-hhelp 通过该选项获取更多的使用帮助-vversion 显示软件的版本号-ttcp 显示TCP协议的sockets-uudp 显示UDP协议的sockets-nnumeric 不解析服务的名称如“22”端口不会显示成“ssh”-llistening 只显示处于监听状态的端口-pprocesses 显示监听端口的进程-aall 对TCP协议来说既包含监听的端口也包含建立的连接-rresolve 把ip解释为域名把端口号解释为协议名称
#查看处于以下状态establishedsyn-sentsyn-recvfin-wait-1
#fin-wait-2time-waitclosedclosed-waitlast-ack的连接
ss -t state established # 连接端口小于500的都显示
ss -tnl sport le 500ping命令
ping命令
#指定ping5次
ping -c 5 192.168.137.15 #只ping5秒5秒后结束
ping -w 5 www.baidu.com #不间断地Ping指定计算机直到管理员中断
ping -t 192.168.137.15 #解析计算机名与NetBios名。就是可以通过ping它的ip地址可以解析出主机名。
#当你遇到一个ip却不知道他是那个设备时这时你可以通过ping -a知道它的主机名。
ping-a 192.168.137.15#发送 65500指定大小的到目标主机的数据包
ping -l 65500 -t 192.168.137.15 #发送一个数据包最多记录9个路由
ping -n 1 -r 9 202.102.224.25 #ping一个网段代码中的这个(1,1,255)就是网段起与始
#就是检测网段192.168.1.1到192.168.1.255之间的所有的ip地址
#每次逐增1直接到1到255这255个ip检测完为止。
for /l %D in (1,1,255) do ping 10.168.1.%D # 跟踪数据包
traceroute 92.168.137.15 域名相关
#域名解析
nslookup www.baidu.com#域名解析的配置文件保存本机需要使用的DNS服务器的ip地址
vim /etc/resolv.conf#在文件后面添加如下内容
search localdomain
nameserver 114.114.114.114
nameserver 8.8.8.8#search设置默认的搜索地 当访问主机“localhost”时就相当于
#访问“localhost.localdomain” 一行一个DNS最多配置三个DNS#或者在如下配置文件中配置DNS服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens33#在文件末尾添加如下内容
DNS1 114.114.114.114
DNS2 8.8.8.8#解析详细过程DNS信息收集
dig www.google.com#配置固定的域名解析
vi /etc/hosts #在最后添加
192.168.137.15 www.guxin.com本地主机映射文件/etc/hosts 文件中记录着一份主机名与 IP 地址的映射关系表一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时先查找该文件中是否有相应的映射记录如果找不到再去向DNS 服务器查询
若在/etc/hosts 文件中添加“192.168.137.15 www.guxin.com”的映射记录则当访www.guxin.com 时将会直接向 IP 地址 192.168.137.15 发送 Web 请求
hosts文件和DNS服务器的比较
默认情况下系统首先从hosts文件查找解析记录hosts文件只对当前的主机有效hosts文件可减少DNS查询过程从而加快访问速度