RAID JBOD
RAID 1
RAID 0+1
从RAID 0+1名称上我们便可以看出是RAID0与RAID1的结合体,有时也称为RAID10。在我们单独使用RAID 1会出现在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许最多丢失一整个磁盘的故障,而不影响数据可用性,并具有快速读/写能力。
RAID 2
汉明码的校验方式
汉明码=数据码+校验码
假如有n个数据码,k个校验码,那么k的个数只要满足2k >= n + k + 1即可,
那么要传输数据码:0101的话,那就需要3个校验码,8 >= 4(数据码) + 3(校验码) + 1
我们先看校验码,我们规定校验码的位置放在2的i次方的位置,也就是1,2,4。假设下面是用偶校验,即要使得校验的位置中1的个数为偶数个
RAID 3
RAID 4
RAID4(带奇偶校验码的独立磁盘结构)。RAID4和RAID3很像,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。这么看RAID3是一次一横条,而RAID4一次一竖条(即同一个文件的数据放在同一磁盘,则无法通过同时读取多个磁盘提高速率)。它的特点和RAID3也挺像,不过在失败恢复时,它的难度可要比RAID3大得多了,而且访问数据的效率不怎么好。
RAID 5
RAID 6
RAID 6是带两种分布存储的奇偶校验码独立磁盘结构。它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要N+2个磁盘,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。
Linux服务器要挂载硬盘的原因主要有以下几点:
sudo yum install epel-release -y #安装fio所需环境
sudo yum install fio -y #安装fio
sudo fio --rw=write --ioengine=sync --fdatasync=1 --direct=1 --directory=/mnt --size=2g --bs=4k --name=iotest
fio (选项)(参数)
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 (选项)(参数)
手动配置
#创建yum备份
cd /etc/yum.repos.d
mkdir back
mv * back
#配置本地yum源文件(也可以从从back目录中拷贝出模板文件:CentOS-Media.repo)
vim /etc/yum.repos.d/local.repo
#内容如下
[RHEL6] //仓库名称,可随意
name=all rhel6 packages //名称,可随意
baseurl=file:///mnt/dvd //源路径,很重要,根据你的实际情况进行填写
gpgcheck=0 //不开启检查
enable=1 //启用本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
#打开ifcfg-ens33配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#修改网卡文件中的如下配置
BOOTPROTO="static" #配置静态ip
IPADDR=192.168.100.122 #静态ip地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.100.2 #默认网关
# 查看默认网关
ip route show
#修改配置后重新启动
service network restart
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
iptables的规则表和链:
iptables (选项)(参数)
防火墙处理数据包的四种方式
#查看
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 ACCEPT
ulimit命令介绍
~/.profile或~/.bashrc
只对当前用户持久性生效/etc/security/limits.conf
可针对性配置,系统级持久性生效ulimit (选项)(参数)
/etc/security/limits.conf配置文件和/etc/systemd/system.conf区别
/etc/systemd/system.conf
及/etc/systemd/user.conf
配置文件的影响/etc/systemd/system.conf配置文件和/etc/systemd/user.conf配置文件区别
/etc/systemd/system.conf
配置文件,/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 -version
#查看系统中jdk版本
rpm -qa | grep jdk
#卸载系统中自带的jdk,使用上一条命令查出的文件名
rpm -e --nodeps xxx(xxx代表删除的文件全名)
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 -version
cp(选项)(参数)
#复制文件,只有源文件比目标文件的修改时间新时,才复制文件
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 /tmp
rm (选项)(参数)
#删除一个文件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 (选项)(参数)
#移动myfile-1.txt文件到tmp目录
mv -v myfile-1.txt /tmp
#移动mydir目录到tmp目录下
mv -v mydir /tmp
#如果源文件和目标文件在同一目录中,那就是改名,也可以对目录改名
mv myfile-1.txt myfile-2.txt
vim编辑器有三种模式:
命令模式、编辑模式、末行模式
模式间切换方法:
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. 光标移动
2.选中内容
3.复制
4.剪切
5.粘贴
6.删除
:a1,a2d
删除从 a1 行到 a2 行的文本内容末行模式
使用vim打开文件后,输入冒号:或/或?进入末行模式。使用深色背景的都是末行模式输入命令,否则都是按键
1. 保存/退出文件操作
:wq
保存并退出 Vim 编辑器:wq!
保存并强制退出 Vim 编辑器:q
不保存就退出 Vim 编辑器:q!
不保存,且强制退出 Vim 编辑器:w
保存但是不退出 Vim 编辑器:w!
强制保存文本:w
filename 另存到 filename 文件x!
保存文本,并退出 Vim 编辑器2.查找
/abc
从光标所在位置向前查找字符串 abc (向下)/^abc
查找以 abc 为行首的行/abc$
查找以 abc 为行尾的行?abc
从光标所在位置向后查找字符串 abc (向上)3.替换
: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
取消行号显示编辑模式
tar (选项)(参数)
#将所有.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.zip
用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可以从本地服务器复制到远程服务器,也可以从远程服务器复制到本地。
scp (参数) (原路径) (目标路径)
#在本地服务器上将/home/xu目录下所有的文件传输到服务器123.123.123.123的/home/xugu目录
scp -r /home/xu [email protected]:/home/xugu
#在本地服务器上操作,将服务器123.123.123.123上/home/xugu目录下所有的文件全部复制到本地的/home目录下
scp -r [email protected]:/home/xugu /home
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。Linux 定义了几十种不同类型的信号。
kill信号
kill (选项)(参数)
# 重新运行PID为23412的进程
kill -1 23412
# 强制关闭PID为23412的进程
kill -9 23412
# 正常关闭PID为23412的进程
kill -15 23412
#使用ssh连接远程主机
ssh user@hostname
#ssh连接到目标主机其他端口
ssh -p 10022 user@hostname
#使用ssh在远程主机执行一条命令并显示到本地, 然后继续本地工作
ssh [email protected] 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 [email protected]
#配置 SSH,SSH的配置文件在 /etc/ssh/sshd_config 中,你可以看到端口号, 空闲超时时间等配置项。
vi /etc/ssh/sshd_config
#连接ftp服务器
ftp 192.168.1.1
只有连接上ftp服务器后才能执行以下的内部命令
#以下命令都是连接成功后执行的
#下载远程服务器上的/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
#断开连接
bye
date 命令用于显示或设置系统的时间或日期。
格式:date [参数] [日期格式]
常用日期格式
# 输出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 time.nist.gov
使用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
使用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/s
TID 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 22
2 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]
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 root
free (选项)
使用 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 st
9 0 0 1515624 309284 3949092 0 0 17 29 109 65 6 6 88 0 0
2 0 0 1515188 309284 3949092 0 0 0 0 1337 3645 15 14 72 0 0
5 0 0 1515188 309284 3949092 0 0 0 0 1362 3669 16 14 71 0 0
5 0 0 1515176 309284 3949092 0 0 0 0 1371 3609 18 13 69 0 0
1 0 0 1515184 309284 3949092 0 0 0 0 1368 3682 15 16 70 0 0
vmstat (参数)(命令)
#指定每秒查看一次虚拟内存的情况,总共查询10次
vmstat 1 10
#显示活跃和非活跃内存
vmstat -a 1 5
#查看磁盘的读/写
vmstat -d
ps输出属性:
#查看所有终端中的进程
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 (选项)
#查看占用5138端口的TCP和UDP连接,并显示其进程号和以数字的形式显示相关的主机地址、端口等信息
netstat -tunlp | grep 5138
使用 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/null
COMMAND:进程的名称
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 IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name (可以不止一个)
port --> 端口号 (可以不止一个)
#查看使用IPv4协议的进程
lsof -i 4
使用ifconfig命令出现如下信息
ens33: flags=4163 mtu 1500
inet 192.168.100.128 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::772d:ed6c:30b4:3edb prefixlen 64 scopeid 0x20
ether 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 0
TX 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命令可以查看路由表信息。路由表存储着Linux操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。
查看路由表信息
#查看
route -n
Kernel 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 virbr0
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 (选项)
#查看处于以下状态established,syn-sent,syn-recv,fin-wait-1,
#fin-wait-2,time-wait,closed,closed-wait,last-ack的连接
ss -t state established
# 连接端口小于500的都显示
ss -tnl sport le 500
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服务器的比较