分享页面
已经找到“” 的记录3027条
Debian9如何解决ifconfig命令找不到问题
 

Debian 9系统下使用ifconfig命令出现如下图提示信息时,如何设置可以正常使用呢?

1.输入

apt install net-tools

按回车键安装工具包

2.安装完成后即可正常使用

Docker容器连接
 

通过网络端口来访问运行在 docker 容器内的服务。

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。

实现通过端口连接到一个 docker 容器。

网络端口映射

创建了一个 python 应用的容器。

runoob@runoob:~$ docker run -d -P training/webapp python app.py

fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1

我们使用 -P 参数创建一个容器,使用 docker ps 可以看到容器端口 5000 绑定主机端口 32768

runoob@runoob:~$ docker ps

CONTAINER ID IMAGE COMMAND ... PORTS NAMES

fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

也可以使用 -p 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

-P :是容器内部端口随机映射到主机的高端口。

-p : 是容器内部端口绑定到指定的主机端口。

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0

runoob@runoob:~$ docker ps

CONTAINER ID IMAGE COMMAND ... PORTS NAMES33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartik

fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1

runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c

runoob@runoob:~$ docker ps

CONTAINER ID IMAGE COMMAND ... PORTS NAMES95c6ceef88ca training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5001->5000/tcp adoring_stonebraker33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartik

fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。

上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a

runoob@runoob:~$ docker ps

CONTAINER ID IMAGE COMMAND ... PORTS NAMES6779686f06f6 training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5000->5000/udp drunk_visvesvaraya95c6ceef88ca training/webapp "python app.py" ... 5000/tcp, 127.0.0.1:5001->5000/tcp adoring_stonebraker33e4523d30aa training/webapp "python app.py" ... 0.0.0.0:5000->5000/tcp berserk_bartik

fce072cc88ce training/webapp "python app.py" ... 0.0.0.0:32768->5000/tcp grave_hopper

docker port 命令可以让我们快捷地查看端口的绑定情况。

runoob@runoob:~$ docker port adoring_stonebraker 5000127.0.0.1:5001

Docker 容器互联

端口映射并不是唯一把 docker 连接到另一个容器的方法。

docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。

docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

容器命名

当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器,例如:

runoob@runoob:~$ docker run -d -P --name runoob training/webapp python app.py43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

可以使用 docker ps 命令来查看容器名称。

runoob@runoob:~$ docker ps -l

CONTAINER ID IMAGE COMMAND ... PORTS NAMES43780a6eabaa training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp runoob

新建网络

下面先创建一个新的 Docker 网络。

$ docker network create -d bridge test-net

参数说明:

-d:参数指定 Docker 网络类型,有 bridge、overlay。

其中 overlay 网络类型用于 Swarm mode,在本小节中你可以忽略它。

连接容器

运行一个容器并连接到新建的 test-net 网络:

$ docker run -itd --name test1 --network test-net ubuntu /bin/bash

打开新的终端,再运行一个容器并加入到 test-net 网络:

$ docker run -itd --name test2 --network test-net ubuntu /bin/bash

点击图片查看大图:

下面通过 ping 来证明 test1 容器和 test2 容器建立了互联关系。

如果 test1、test2 容器内中无 ping 命令,则在容器内执行以下命令安装 ping(即学即用:可以在一个容器里安装好,提交容器到镜像,在以新的镜像重新运行以上俩个容器)。

apt-get update

apt install iputils-ping

test1 容器输入以下命令:

同理在 test2 容器也会成功连接到:

这样,test1 容器和 test2 容器建立了互联关系。

如果你有多个容器之间需要互相连接,推荐使用 Docker Compose,后面会介绍。

 

配置 DNS

我们可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:

{

"dns" : [

"114.114.114.114",

"8.8.8.8"

]}

设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。

配置完,需要重启 docker 才能生效。

查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:

$ docker run -it --rm ubuntu cat etc/resolv.conf

手动指定容器的配置

如果只想在指定的容器设置 DNS,则可以使用以下命令:

$ docker run -it --rm host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu

参数说明:

-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。

--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。

--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

如果在容器启动时没有指定 --dns 和 --dns-searchDocker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS

CPU硅脂的正确涂法
 

1.我们就先来认识一些散热硅脂,我们看看散热硅脂的名词解释:

俗名又叫散热膏,是以特种硅油做基础油,新型金属氧化物做填料,配以多种功能添加剂,经特定的工艺加工而成的膏状物.颜色因材料不同而具有不同的外观。

  其具有良好的导热、耐温、绝缘性能,是耐热器件理想的介质材料,而且性能稳定,在使用中不会产生腐蚀气体,不会对所接触的金属产生影响。

涂抹于功率器件和散热器装配面,帮助消除接触面的空气间隙增大热流通,减小热阻,降低功率器件的工作温度,提高可靠性和延长使用寿命。

就像名词解释中所说的散热硅脂起到加速热传导的作用,导热介质,增加接触面积填充CPU铁盖以及散热器中间的坑槽等作用。散热硅脂也并非一涂上就发挥最好的效果,涂上散热硅脂,在经过一段时间的启动,关机的冷热循环后,济压出散热硅脂中的多余空气达到完全填充CPU和散热器之间的空隙时,导热效果才真正完全发挥。散热硅脂的热阻是比金属的大 ,故并非用量大就一定好。

 

2.什么硅脂更好

最科学的方式还是看产品标注的导热率(单位是W/m·K)当然是数值越高越好,大家选择34.5W/m.K就可以了。此外要重点注意热阻抗这一指标,一定要低于0.08℃·in²/W。如果看不到这两个参数,那么商家吹得再好也不要买!

3.涂抹散热硅脂的注意事项

相信有很多入门级玩家会说为什么要涂薄,散热器里带的散热硅脂给一小管不用完了多可惜。散热器中带的散热硅脂确实有的很多,这样往往会给入门级的DIY玩家带来一定的误导,从导热性能上来讲,再好的散热硅脂也比不过铜铝这些金属材料。铜的导热系数是高档导热散热硅脂的百倍左右。

散热硅脂适量是一个很重要的事情,主要注意的就是涂抹散热硅脂在于要均匀、无气泡、无杂质、尽可能薄。

 

4.常见情况扇热硅脂的涂抹教程

了解了散热硅脂的这些特性后,散热硅脂涂多涂少,涂厚涂薄,如何涂才能达到最好的效果呢。这是一个外国著名网站Benchmark Reviews推出的散热硅脂涂抹攻略,下面跟大家分享下。

中间一点式涂抹教程:

 

一字法涂抹教程:

 

二字法涂抹教程:

 

十字法涂抹教程:

以上4种为点法、一字法、二字法、十字法,分别适用于小型底座、长形底座、大型方形底座和大型方形底座(虽然示例用的都是同一款散热器)

但是无论怎么涂抹,最终的结果都是如下样子就对了:

Centos系统网卡配置多ip的方法
 

1.首先可以通过ip address 命令查看现在这个网卡的名称,可以确认我们的网卡名称是ens33.

2.方法一:cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:1

编辑网卡ens33配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33,第一个ip 192.168.10.235.编辑完成后:wq保存退出。

编辑网卡ens33:1配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33:1,第2ip 192.168.10.236

因为第二个ip的网卡配置配置文件是从第一个ip的网卡配置文件复制过来的,红框处记得按情况进行更改。

编辑完成后:wq保存退出。

ifconfig ens33:1 down

ifdown ens33:1(此两行命令意思相同,为关闭该ip配置,可省略)

ifconfig ens33:1 up

ifup ens33:1(启动该配置文件中设置的IP,此两行命令意义相同)



启动ip配置后,查看。

验证是否可正常使用。

 

方法二:直接在网卡ens33上添加新的ip地址。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

格式IPADDR1=ip,在添加一个就IPADDR2=ip。一次类推

重启网卡service network restart

Centos系统使用nmap进行端口扫描
 

1.安装nmap

yum install nmap –y

2.查看本机当前开放的端口

nmap localhost

3.探测目标主机当前开放的端口
nmap -PS <
目标主机IP地址>

4.扫描某网段内的主机

nmap <目标网段>

5.扫描多台主机

例如:nmap 192.168.10.26 192.168.10.219

6.扫描目标主机上指定的端口或协议

例如:nmap –p U:53,135,T:80,22,135,445 192.168.10.26 (备注:UUDP协议,TTCP协议)

7.找出网络中的在线主机

例如:nmap -sP 192.168.10.*

8.本文只列出nmap几种比较常用的运用方式,更多的命令和使用方法可以查看nmap相关站点:http://www.nmap.com.cn/doc/manual.shtm

 

Centos系统使用iperf3测速
 

1.下载iperf3安装包

wget https://iperf.fr/download/fedora/iperf3-3.1.3-1.fc24.x86_64.rpm

2.安装iperf3

我们需要准备2台服务器,都安装iperf3,其中1台作为服务端,另1台作为客户端:

rpm -i iperf3-3.1.3-1.fc24.x86_64.rpm

3.在服务端主机上启动iperf3

iperf3 -s

4.在客户端主机上启动iperf3,并作为客户端向服务端发起连接:

iperf3 -c <服务端IP地址> -d -t 60

如果报错“no route to host”,则需要先关闭服务端的防火墙再进行测试:

systemctl stop firewalld.service

5.iperf3还有一些其他的用法,可以通过命令iperf3 help进行查看

Centos系统搭建NFS文件共享服务器
 

NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件。

准备:我们需要两台CentOS7机器,分别做NFS服务器和客户端,配置如下:

NFS服务器ip192.168.10.235

客户端ip192.168.10.202

我们要实现的目标是:在NFS服务器上共享一个目录,在客户端上可以直接操作NFS服务器上的这个共享目录下的文件。

 

1.NFS服务器配置:首先使用yum安装nfs服务

yum -y install rpcbind nfs-utils

2.创建共享目录

在服务器上创建共享目录,并设置权限。

mkdir /data/share/

chmod 755 -R /data/share/

3.配置NFS

nfs的配置文件是 /etc/exports vi /etc/exports在配置文件中加入一行:

/data/share/ 192.168.10.202(rw,no_root_squash,no_all_squash,sync)

这行代码的意思是把共享目录/data/share/共享给192.168.10.202这个客户端ip,后面括号里的内容是权限参数,其中:

rw 表示设置目录可读写。

sync 表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。

no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。

no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。

如果有多个共享目录配置,则使用多行,一行一个配置。保存好配置文件后,需要执行以下命令使配置立即生效:

exportfs -r

4.设置防火墙

如果你的系统没有开启防火墙,那么该步骤可以省略。

NFS的防火墙特别难搞,因为除了固定的port1112049外,还有其他服务如rpc.mounted等开启的不固定的端口,这样对防火墙来说就比较麻烦了。为了解决这个问题,我们可以设置NFS服务的端口配置文件。

修改vi /etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加:

RQUOTAD_PORT=1001

LOCKD_TCPPORT=30001

LOCKD_UDPPORT=30002

MOUNTD_PORT=1002

保存好后,将端口加入到防火墙允许策略中。执行:

firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp

--add-port=1001/tcp --add-port=1001/udp --add-port=1002/tcp --add-port=1002/udp --add-port=30001/tcp --add-port=30002/udp

--permanent

firewall-cmd --reload

5.启动服务

按顺序启动rpcbindnfs服务:

systemctl start rpcbind

systemctl start nfs

加入开机启动:

systemctl enable rpcbind

systemctl enable nfs

nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。

服务器的后,我们可以使用 showmount 命令来查看服务端(本机)是否可连接:

出现上面结果表明NFS服务端配置正常。

6.客户端配置

客户端只需要安装rpcbind服务即可,无需安装nfs或开启nfs服务。

yum -y install rpcbind

7.客户端挂载远程nfs文件系统

查看服务端已共享的目录:

建立挂载目录,执行挂载命令:

mkdir -p /mnt/share

mount -t nfs 192.168.11.34:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3

如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root

如果要解除挂载,可执行命令:umount /mnt/share

8.开机自动挂载

如果按本文上面的部分配置好,NFS即部署好了,但是如果你重启客户端系统,发现不能随机器一起挂载,需要再次手动操作挂载,这样操作比较麻烦,因此我们需要设置开机自动挂载。我们不要把挂载项写到/etc/fstab文件中,因为开机时先挂载本机磁盘再启动网络,而NFS是需要网络启动后才能挂载的,所以我们把挂载命令写入到/etc/rc.d/rc.local文件中即可。

vim /etc/rc.d/rc.local

在文件最后添加一行:

mount -t nfs 192.168.10.235:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3

保存并重启机器

9.测试验证

查看挂载结果,在客户端输入 df -h

Centos系统安装SpeedTest实现网络测速
 

1.安装pip

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

2.执行安装:

python get-pip.py

3.下载speedtest

wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py

增加执行权限

chmod  x speedtest-cli

4.安装SpeedTestpip install speedtest-cli

5.使用测速,

查询安装位置 

which speedtest-cli

以图片方式共享测速结果

/usr/bin/speedtest-cli --share

Centos系统iftop的安装以及使用
 

Iftop工具主要用来显示本机网络流量情况及各相互通信的流量集合,如单独同哪台机器间的流量大小,非常适合于代理服务器和iptables服务器使用,这样可以方便的查看各客户端流量情况。iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。

1.安装iftop-编译安装

如果采用编译安装可以到iftop官网下载最新的源码包。
安装前需要已经安装好基本的编译所需的环境,比如makegccautoconf等。安装iftop还需要安装libpcaplibcurse

安装所需要的依赖包

yum -y install flex byacc libpcap ncurses ncurses-devel libpcap-devel

2.安装步骤

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz #下载安装包

tar zxvf iftop-0.17.tar.gz #解压

cd iftop-0.17 切换到目录

./configure --prefix=/usr/local/iftop #配置安装目录

make && make install #编译、安装

3.运行iftop,必须以root身份运行效果图如下

监控某网卡:iftop -i eth0 -n

同时显示是什么服务:iftop -i eth0 -n -P

4.iftop相关参数

常用的参数

-i  设定监测的网卡,如:# iftop -i eth1

-B  以bytes为单位显示流量(默认是bits),如:# iftop -B

-n  使host信息默认直接都显示IP,如:# iftop -n

-N  使端口信息默认直接都显示端口号,如: # iftop -N

-F  显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0

-h  (display this message),帮助,显示参数信息

-p  使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;

-b  使流量图形条默认就显示;

-f  这个暂时还不太会用,过滤计算包用的;

-P  使host信息及端口信息默认就都显示;

-m  设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些操作命令(注意大小写)

h切换是否显示帮助;

n切换显示本机的IP或主机名;

s切换是否显示本机的host信息;

d切换是否显示远端目标主机的host信息;

t切换显示格式为2/1/只显示发送流量/只显示接收流量;

N切换显示端口号或端口服务名称;

S切换是否显示本机的端口信息;

D切换是否显示远端目标主机的端口信息;

p切换是否显示端口信息;

P切换暂停/继续显示;

b切换是否显示平均流量图形条;

B切换计算2秒或10秒或40秒内的平均流量;

T切换是否显示每个连接的总流量;

l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;

L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;

j或按k可以向上或向下滚动屏幕显示的连接记录;

123可以根据右侧显示的三列流量数据进行排序;

< 根据左边的本机名或IP排序; >根据远端目标主机的主机名或IP排序;

o切换是否固定只显示当前的连接;

f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!

q退出监控。

Centos系统上下文切换的检查思路
 

1.什么是上下文切换(Context Switch)?

上下文切换,有时也称做进程切换或任务切换,是指CPU从一个进程或线程切换到另一个进程或线程。

操作系统可以同时运行多个进程, 然而一颗CPU同时只能执行一项任务,操作系统利用时间片轮转的方式,让用户感觉这些任务正在同时进行。 CPU给每个任务都服务一定的时间, 然后把当前任务的状态保存下来, 在加载下一任务的状态后, 继续服务下一任务。任务的状态保存及再加载, 这段过程就叫做上下文切换。

当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称 为该进程的上下文。当内核需要切换到另一个进程时,它需要保存当前进程的 所有状态,即保存当前进程的上下文,以便在再次执行该进程时,能够必得到切换时的状态执行下去。在LINUX中,当前进程上下文均保存在进程的任务数据结 构中。在发生中断时,内核就在被中断进程的上下文中,在内核态下执行中断服务例程。但同时会保留所有需要用到的资源,以便中继服务结束时能恢复被中断进程 的执行。

2.上下文切换的消耗?

直接消耗包括: CPU寄存器需要保存和加载,系统调度器的代码需要执行,TLB实例需要重新加载,CPU pipeline需要刷掉。

间接消耗:多核的cache之间得共享数据,间接消耗对于程序的影响要看线程工作区操作数据的大小。

上下文切换通常是计算密集型的。也就是说,它需要相当可观的处理器时间,在每秒几十上百次的切换中,每次切换都需要纳秒量级的时间。所以,上下文切换对系统来说意味着消耗大量的 CPU 时间,事实上,可能是操作系统中时间消耗最大的操作。

3.如何检查上下文切换是否频繁?

1)确认CPU使用率

CPU是否处于空闲状态。

2vmstat 1

vmstat的输出可以看到,io项的block_inblock_out是否频繁,system项的每秒中断数(in)和每秒的上下文切换(cs)是否频繁。

3pidstat -w 1

pidstat上可以看到,每个进程对应的cswch(自愿上下文切换)和nvcswch(非自愿上下文切换)是否频繁。

cswch/s: 每秒任务主动(自愿的)切换上下文的次数,当某一任务处于阻塞等待时,将主动让出自己的CPU资源。
nvcswch/s:
每秒任务被动(不自愿的)切换上下文的次数,CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。

4/proc/stat

/proc/stat包含了CPU的活动信息,上下文切换就是其中一项,以ctxt开头,它表示系统开机到目前为止的上下文切换总数。

cat /proc/stat | grep ctxt && sleep 30 && cat /proc/stat | grep ctxt

通过上面的命令,可以计算出每秒上下文切换次数=两者差值/30

通过以上命令即可以定位那个进程上下文切换频繁。

4.造成上下文切换频繁的原因?

当前执行任务的时间片用完之后, 系统CPU正常调度下一个任务

当前执行任务碰到IO阻塞, 调度器将挂起此任务, 继续下一任务

多个任务抢占锁资源, 当前任务没有抢到,被调度器挂起, 继续下一任务

用户代码挂起当前任务, 让出CPU时间

硬件中断

 

扫码添加专属客服

扫码关注公众号