第六周

总结

A–net1–1 R1 2–net2C–3 R2 4–net3D–5 R3 6–net4–B
R1
route add -net net4/N4  gw ip3  只加此条
route add -net net3/N3  gw ip3  不加
或者
route add default   gw ip3
R2
route add -net net1/N1  gw ip2
route add -net net4/N4  gw ip5
R3
route add -net net1/N1  gw ip4
route add -net net2/N2  gw ip4如果只是A和B通可以不加此条路由。
或者
route add default   gw ip4
查看DNS生没生效
cat /etc/resolv.conf
修改主机名:
[root@centos ~]#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos.localdomain
修改完成后不会立即生效
[root@centos ~]#hostname centos6.localdomain (新的主机名)
[root@centos ~]#hostname
centos6.localdomain
提示符没改退出一下就改了。
在这个文件里也可以加网关,需要重启才能生效,如果网卡里也有网关且和这个文件的网关不同,那么网卡里的网关生效。
也可以将旧的路由表删除,在路由表里添加进新的网关。
[root@centos ~]#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos.localdomain
GATEWAY=172.20.0.1
在主机有多个网卡时加路由表的时候只加一个默认路由,如果有2个默认路由可能会使自己上不去网。
[root@centos6 network-scripts]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.30.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
0.0.0.0         172.20.0.1      0.0.0.0         UG    0      0        0 eth1
如何在一个网卡上配置多个IP地址
[root@centos6 network-scripts]#ifconfig eth0:1 2.2.2.2/24    eth0是物理网卡,eth0:1 相当于给物理网卡起个别名
[root@centos6 network-scripts]#ifconfig     添加IP是临时的重启会丢失
eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:B3
          inet addr:192.168.30.102  Bcast:192.168.30.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe6b:db3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2201 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1824 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:199758 (195.0 KiB)  TX bytes:166640 (162.7 KiB)
eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:B3
          inet addr:2.2.2.2  Bcast:2.2.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
在centos7上也加上同网段的地址,可以ping同
[root@CENTOS7 ~]#ifconfig ens33:1 2.2.2.100
[root@CENTOS7 ~]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.30.101  netmask 255.255.255.0  broadcast 192.168.30.255
        inet6 fe80::19e7:a41a:a0ac:2f54  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
        RX packets 1736  bytes 168092 (164.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1589  bytes 127630 (124.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 2.2.2.100  netmask 255.0.0.0  broadcast 2.255.255.255
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
[root@CENTOS7 ~]#ping 2.2.2.2
PING 2.2.2.2 (2.2.2.2) 56(84) bytes of data.
64 bytes from 2.2.2.2: icmp_seq=1 ttl=64 time=0.518 ms
64 bytes from 2.2.2.2: icmp_seq=2 ttl=64 time=0.976 ms
重启会删除eth0:1,
ifconfig eht0:1 down 也能删除eth0:1
想重启不丢失就要修改配置文件
[root@centos6 network-scripts]#cat > ifcfg-eth0:1
DEVICE=eth0:1
BOOTPROTO=none
IPADDR=3.3.3.3
PREFIX=24
添加完配置文件后需要关闭NetworkManager,否则有冲突
[root@centos6 network-scripts]#service NetworkManager stop
Stopping NetworkManager daemon:                            [  OK  ]
重新启动网络服务
[root@centos6 network-scripts]#service network restart
fgrep: ifcfg-ifcfg-: No such file or directory
fgrep: ifcfg-ifcfg-: No such file or directory
Shutting down interface eth0:                              [  OK  ]
Shutting down interface eth1:                              [  OK  ]
/etc/init.d/network: line 217: ./ifcfg-ifcfg-: No such file or directory
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Determining if ip address 192.168.30.102 is already in use for device eth0…
Determining if ip address 3.3.3.3 is already in use for device eth0…
SIOCADDRT: Network is unreachable
                                                           [  OK  ]
Bringing up interface eth1:  Determining if ip address 172.20.68.100 is already in use for device eth1…
                                                           [  OK  ]
[root@centos6 network-scripts]#ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:B3
          inet addr:192.168.30.102  Bcast:192.168.30.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe6b:db3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2835 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2253 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:255849 (249.8 KiB)  TX bytes:220130 (214.9 KiB)
eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:B3
          inet addr:3.3.3.3  Bcast:3.3.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:BD
          inet addr:172.20.68.100  Bcast:172.20.255.255  Mask:255.255.0.0
教室楼上就是用这种方法配置的172.20.0.1和172.18.0.1
单臂路由的实现
ifconfig eth0:1 1.1.1.254/24
ifconfig eth0:2 2.2.2.254/24
echo 1 > /proc/sys/net/ipv4/ip_forward
A机器
ifconfig eth0 1.1.1.1/24
route add default gw 1.1.1.254
B机器
ifconfig eth0 2.2.2.2/24
route add default gw 2.2.2.254
ping 通后发现路由个数是64,LINUX默认穿过路由器才减一由于单臂路由没有穿过路由所以还是64
当ping一个网卡路由没有的地址时默认用物理网卡去ping
如果非要用别名网卡去ping,命令是
ping -I 3.3.3.3 1.1.1.254
tcpdump icmp -nn
netstat命令
?netstat – Print network connections, routing tables, interface statistics, masquerade
connections, and multicast memberships
?显示网络连接:
netstat [–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–
numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e:扩展格式
-p: 显示相关进程及PID
netstat命令
?常用组合:
-tan, -uan, -tnl, -unl
?显示路由表:
netstat {–route|-r} [–numeric|-n]
-r: 显示内核路由表
-n: 数字格式
?显示接口统计数据:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p]
[–numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0
[root@centos6 network-scripts]#netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.30.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
3.3.3.0         0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
172.20.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         172.20.0.1      0.0.0.0         UG        0 0          0 eth1
netstat -n   查看所有连接,本地的socket连接,tcp和udp等连接
socket文件  s开头的粉色文件 用于实现本地通讯,同一电脑上两个网络软件(A和B)通讯传给A将数据传给socket,再由socket传给B,省略封装解封装的过程
[root@centos6 ~]#ll /var/run/dbus/system_bus_socket
srwxrwxrwx. 1 root root 0 May  2 08:50 /var/run/dbus/system_bus_socket
[root@centos6 ~]#netstat -nt     显示的是正在连接的
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0     64 192.168.30.102:22           192.168.30.1:55486          ESTABLISHED
[root@centos6 ~]#netstat -nutl     正在监听的UDP 和 TCP
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:58406               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:631                     :::*                        LISTEN
tcp        0      0 :::46232                    :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN
udp        0      0 0.0.0.0:747                 0.0.0.0:*
udp        0      0 0.0.0.0:111                 0.0.0.0:*
udp        0      0 0.0.0.0:631                 0.0.0.0:*
udp        0      0 0.0.0.0:52228               0.0.0.0:*
udp        0      0 127.0.0.1:807               0.0.0.0:*
udp        0      0 :::747                      :::*
udp        0      0 :::111                      :::*
udp        0      0 :::54811                    :::*
[root@centos6 ~]#netstat -nuta       监听的和正在连接的统统都显示
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:58406               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0    208 192.168.30.102:22           192.168.30.1:55486          ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:631                     :::*                        LISTEN
tcp        0      0 :::46232                    :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN
udp        0      0 0.0.0.0:747                 0.0.0.0:*
udp        0      0 0.0.0.0:111                 0.0.0.0:*
udp        0      0 0.0.0.0:631                 0.0.0.0:*
udp        0      0 0.0.0.0:52228               0.0.0.0:*
udp        0      0 127.0.0.1:807               0.0.0.0:*
udp        0      0 :::747                      :::*
udp        0      0 :::111                      :::*
udp        0      0 :::54811                    :::*
[root@centos6 ~]#netstat -nutap           -p显示谁在使用这个连接
tcp        0      0 192.168.30.102:22           192.168.30.1:55486          ESTABLISHED 5182/sshd
[root@centos6 ~]#netstat -nutape        -e   显示扩展信息
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name
tcp        0      0 0.0.0.0:58406               0.0.0.0:*                   LISTEN      29         16478      2327/rpc.statd
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      0          16229      2268/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          17721
[root@centos6 network-scripts]#netstat -i
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0     4105      0      0      0     3166      0      0      0 BMRU
lo        65536   0       12      0      0      0       12      0      0      0 LRU
[root@centos6 network-scripts]#netstat -Ieth0         -i  显示网卡端口信息
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0     4148      0      0      0     3195      0      0      0 BMRU
[root@centos6 network-scripts]#ifconfig -s eth0
Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0     4243      0      0      0     3257      0      0      0 BMRU
RX-OK 正常的包
RX-ERR错误的包
RX-DRP扔掉的包
RX-OVR过载的包
[root@centos6 network-scripts]#ss -nutlap
Netid  State      Recv-Q Send-Q                   Local Address:Port                     Peer Address:Port
udp    UNCONN     0      0                                    *:747                                 *:*      users:((“rpcbind”,2268,7))
udp    UNCONN     0      0                                    *:111                                 *:*      users:((“rpcbind”,2268,6))
udp    UNCONN     0      0                                    *:631                                 *:*      users:((“cupsd”,2372,9))
udp    UNCONN     0      0                                    *:52228                               *:*      users:((“rpc.statd”,2327,8))
udp    UNCONN     0      0                            127.0.0.1:807                                 *:*      users:((“rpc.statd”,2327,5))
udp    UNCONN     0      0                                   :::747                                :::*
ss命令
?格式:ss [OPTION]… [FILTER]
? netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信
息。
?选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
ss命令
? FILTER : [ state TCP-STATE ] [ EXPRESSION ]
? TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
? EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or sport = :ssh )’
? 常用组合:
-tan, -tanl, -tanlp, -uan
常见用法
?ss -l 显示本地打开的所有端口
?ss -pl 显示每个进程具体打开的socket
?ss -t -a 显示所有tcp socket
?ss -u -a 显示所有的UDP Socekt
?ss -o state established ‘( dport = :ssh or sport = :ssh )’ 显示所有已建立的
ssh连接
?ss -o state established ‘( dport = :http or sport = :http )’ 显示所有已建立
的HTTP连接
?ss -s 列出当前socket详细信息
[root@centos6 network-scripts]#ss -o state established ‘( dport = :ssh or sport = :ssh )’
Recv-Q Send-Q                                      Local Address:Port                                          Peer Address:Port
0      64                                         192.168.30.102:ssh                                           192.168.30.1:55486    timer:(on,220ms,0)
ip命令:
?配置Linux网络属性:ip命令
?ip – show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link – network device configuration
set dev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip命令
? ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast ADDRESS]:指明广播地址
? ip address show – look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
? ip address flush – 使用格式同show
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
ip命令
? ip route – routing table management
添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
添加网关:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
删除路由:ip route delete
ip route del TARGET
显示路由:ip route show|list
清空路由表:ip route flush [dev IFACE]  [via PREFIX]
ip route flush dev eth0
[root@CENTOS7 ~]#ip r a 2.2.2.0/24 via 172.20.0.1 dev ens37
[root@CENTOS7 ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.20.0.1      0.0.0.0         UG    100    0        0 ens37
1.1.1.0         172.20.0.1      255.255.255.0   UG    0      0        0 ens37
2.2.2.0         172.20.0.1      255.255.255.0   UG    0      0        0 ens37
172.20.0.0      0.0.0.0         255.255.0.0     U     100    0        0 ens37
192.168.30.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@CENTOS7 ~]#ip r
default via 172.20.0.1 dev ens37 proto static metric 100
1.1.1.0/24 via 172.20.0.1 dev ens37
2.2.2.0/24 via 172.20.0.1 dev ens37
172.20.0.0/16 dev ens37 proto kernel scope link src 172.20.109.255 metric 100
192.168.30.0/24 dev ens33 proto kernel scope link src 192.168.30.101 metric 100
[root@CENTOS7 ~]#ip r d 1.1.1.0/24 via 172.20.0.1 dev ens37
[root@CENTOS7 ~]#ip r d 2.2.2.0/24 via 172.20.0.1 dev ens37
[root@CENTOS7 ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.20.0.1      0.0.0.0         UG    100    0        0 ens37
172.20.0.0      0.0.0.0         255.255.0.0     U     100    0        0 ens37
192.168.30.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@CENTOS7 ~]#ip a a 1.1.1.1/24 dev ens33
[root@CENTOS7 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:45:bf:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.101/24 brd 192.168.30.255 scope global dynamic ens33
       valid_lft 1369sec preferred_lft 1369sec
    inet 1.1.1.1/24 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::19e7:a41a:a0ac:2f54/64 scope link
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:45:bf:1e brd ff:ff:ff:ff:ff:ff
    inet 172.20.109.255/16 brd 172.20.255.255 scope global dynamic ens37
       valid_lft 83353sec preferred_lft 83353sec
    inet6 fe80::2ee4:100d:665:521f/64 scope link
       valid_lft forever preferred_lft forever
[root@CENTOS7 ~]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.30.101  netmask 255.255.255.0  broadcast 192.168.30.255
        inet6 fe80::19e7:a41a:a0ac:2f54  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
        RX packets 1497  bytes 138405 (135.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1138  bytes 145694 (142.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.20.109.255  netmask 255.255.0.0  broadcast 172.20.255.255
        inet6 fe80::2ee4:100d:665:521f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:1e  txqueuelen 1000  (Ethernet)
        RX packets 270968  bytes 18935607 (18.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 214  bytes 30457 (29.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 12  bytes 1404 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1404 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@CENTOS7 ~]#ip a a 1.2.1.1/24 dev ens33 label ens33:1
[root@CENTOS7 ~]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.30.101  netmask 255.255.255.0  broadcast 192.168.30.255
        inet6 fe80::19e7:a41a:a0ac:2f54  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
        RX packets 1640  bytes 151663 (148.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1240  bytes 158620 (154.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 1.2.1.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.20.109.255  netmask 255.255.0.0  broadcast 172.20.255.255
        inet6 fe80::2ee4:100d:665:521f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:1e  txqueuelen 1000  (Ethernet)
        RX packets 271326  bytes 18995299 (18.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 214  bytes 30457 (29.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 12  bytes 1404 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1404 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@centos6 ~]#ip link set eth1 down
[root@centos6 ~]#ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:B3
          inet addr:192.168.30.102  Bcast:192.168.30.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe6b:db3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2929 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:253587 (247.6 KiB)  TX bytes:326762 (319.1 KiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4936 (4.8 KiB)  TX bytes:4936 (4.8 KiB)
[root@centos6 ~]#ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6b:0d:b3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:0c:29:6b:0d:bd brd ff:ff:ff:ff:ff:ff
[root@centos6 ~]#ip link set eth1 up
[root@centos6 ~]#ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6b:0d:b3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6b:0d:bd brd ff:ff:ff:ff:ff:ff
grobal全局ip
本地网卡eth0
在centos6上
ip a a 1.1.1.1/24 dev eth0
ip a a 2.2.2.2/24 dev eth0
ip a a 3.3.3.3/24 dev eth0
ip a a 5.5.5.5/24 dev eth1
本地网卡ens33
ip a a 1.1.1.2/24 dev eth0
ip a d default via 172.20.0.1 dev ens37 proto static metric 100     删除路由表
ip a a default via 1.1.1.1 dev ens33
就能ping通所有centos6上的IP地址
global的地址在内核内,只要能到达任何一个网卡就把所有的globalip地址响应
link 只响应到达本网卡的ip地址
host 只能在本机有效
ip a flush dev eth0 清除eth0上的所有地址
网络配置文件
?IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-
scripts/ifcfg-IFACE
?路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
?/etc/sysconfig/network-scripts/ifcfg-IFACE:
说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
DEVICE:此配置文件应用到的设备
HWADDR:对应的设备的MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static,
none, bootp
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受
NM控制;建议CentOS6为“no”
网络配置文件
?ONBOOT:在系统引导时是否激活此设备
?TYPE:接口类型;常见有的Ethernet, Bridge
?UUID:设备的惟一标识
?IPADDR:指明IP地址
?NETMASK:子网掩码
?GATEWAY: 默认网关
?DNS1:第一个DNS服务器指向
?DNS2:第二个DNS服务器指向
?USERCTL:普通用户是否可控制此设备     后面跟=yes或者=no,
?PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的
dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
主机名和本地解析器
?配置当前主机的主机名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
?解析器执行正向和逆向查询
?/etc/hosts
? 本地主机名数据库和IP地址的映像
? 对小型独立网络有用
? 通常,在使用DNS前检查
? getent hosts 查看/etc/hosts 内容
dns名字解析
? /etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search magedu.com
? /etc/nsswitch.conf
与/etc/hosts相比优先于DNS
? 正向解析:FQDN–>IP
dig -t A FQDN
host -t A FQDN
? 反向解析:IP–>FQDN
dig -x IP
host -t PTR IP
网络配置文件
?/etc/sysconfig/network-scripts/route-IFACE(跟网卡名)
? 注意:需service network restart生效
? 两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
永久增加路由表
[root@centos6 network-scripts]#vim route-eth1
6.6.6.0/24 via 172.20.0.1
重启网络服务
service network restart
[root@centos6 network-scripts]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.30.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
6.6.6.0         172.20.0.1      255.255.255.0   UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
0.0.0.0         172.20.0.1      0.0.0.0         UG    0      0        0 eth1
[root@centos6 ~]#ip r d 6.6.6.0/24 via 172.20.0.1 dev eth1
[root@centos6 ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.30.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
0.0.0.0         172.20.0.1      0.0.0.0         UG    0      0        0 eth1
一个网卡同时拥有dhcp 和 静态获取地址
[root@centos6 network-scripts]#cp ifcfg-eth1 ifcfg-eth1:2
[root@centos6 network-scripts]#vim ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp
IPADDR=172.20.68.100
PREFIX=16
GATEWAY=172.20.0.1
DNS1=114.114.114.114
DNS2=1.1.1.1
~
[root@centos6 network-scripts]#vim ifcfg-eth1:2
DEVICE=eth1:2
BOOTPROTO=none
IPADDR=172.20.68.100
PREFIX=16
GATEWAY=172.20.0.1
DNS1=114.114.114.114
DNS2=1.1.1.1
重启网络服务
[root@centos6 network-scripts]#ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:B3
          inet addr:192.168.30.102  Bcast:192.168.30.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe6b:db3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4500 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3250 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:396030 (386.7 KiB)  TX bytes:484136 (472.7 KiB)
eth1      Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:BD
          inet addr:172.20.102.175  Bcast:172.20.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe6b:dbd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:292549 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6450 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:42801616 (40.8 MiB)  TX bytes:401543 (392.1 KiB)
eth1:2    Link encap:Ethernet  HWaddr 00:0C:29:6B:0D:BD
          inet addr:172.20.68.100  Bcast:172.20.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4936 (4.8 KiB)  TX bytes:4936 (4.8 KiB)
在标准网卡里面可以自动获取也可以手工指定,在网卡别名里面只能手工指定不能自动获取。
[root@centos6 ~]#vim /etc/hosts    地址解析文件。
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
6.6.6.6 www.magedu.com
192.168.30.101 centos7
在这个文件中加入地址及其域名,访问该域名事就直接访问地址,不需要走DNS(地址解析器)
修改本机名后最好在hosts文件中加入本机名否则可能导致一些访问失败(这些访问只通过主机名获取ip地址)
默认的优先级是hosts文件的优先级高于dns
在文件cat /etc/nsswitch.conf
[root@centos6 ~]#cat /etc/nsswitch.conf
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry ‘[NOTFOUND=return]’ means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Valid entries include:
#
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#
# To use db, put the “db” in front of “files” for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis
passwd:     files
shadow:     files
group:      files
#hosts:     db files nisplus nis dns
hosts:      files dns
将files和dns调换位置后就dns的优先级高于hosts
[root@centos6 ~]#getent hosts
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6
127.0.0.1       localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.30.101  centos7
网卡别名
?对虚拟主机有用
?将多个IP地址绑定到一个NIC上
eth0:1 、eth0:2、eth0:3
?ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
?ip命令:
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
设备别名
?为每个设备别名生成独立的接口配置文件
? 关闭NetworkManager服务
? ifcfg-ethX:xxx
? 必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
?注意:service network restart 生效
?参考/usr/share/doc/initscripts-*/sysconfig.txt
网络接口配置-bonding
?Bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给
两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,
物理网卡的被修改为相同的MAC地址
Bonding工作模式
?Mode 0 (balance-rr)
轮转(Round-robin)策略:从头到尾顺序的在每一个slave
接口上面发送数据包。本模式提供负载均衡和容错的能力
?Mode 1 (active-backup)
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失
败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有
一个外部端口上可见
?Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文,提供容错能力
?active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特
殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需
要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和
EtherChannel
Bonding配置
?创建bonding设备的配置文件
?/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS= “miimon=100 mode=0”
?/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
?查看bond0状态:/proc/net/bonding/bond0
Bonding配置
?miimon 是用来进行链路监测的。如果miimon=100,那么系统每
100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
?删除bond0
ifconfig bond0 down
rmmod bonding
?详细帮助:
/usr/share/doc/kernel-doc-
version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bondi
ng.txt
实现bonding的网卡必须是同一个网段的两个网卡。
cdnet
rm -f ifcfg-eth*     删除所有的网卡的配置文件
cat > ifcfg-bond0    配置bond0
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.30.101
PREFIX=24
BONDING_OPTS=”mode=1 miimon=100″
cat > ifcfg-eth0    配置bond0中的eth0
DEVICE=eth0
MASTER=bond0
SLAVE=YES
cat > ifcfg-eth1  配置bond0中的eth1
DEVICE=eth1
MASTER=bond0
SLAVE=YES
重启网络服务
cat /proc/net/bonding/bond0    查看谁是活动的网卡谁是备用的网卡
关闭eth0拔掉网线
ping 并不影响,但是会丢失几个数据包
cat /proc/net/bonding/bond0
发现现在活动网卡是eth1,自动替换了eth0
都拔掉网线ping不通了,随便恢复网卡任意一个都会继续再ping通。
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.30.101
PREFIX=24
BONDING_OPTS=”mode=3 miimon=100″
cat > ifcfg-eth0    配置bond0中的eth0
DEVICE=eth0
MASTER=bond0
SLAVE=YES
cat > ifcfg-eth1  配置bond0中的eth1
DEVICE=eth1
MASTER=bond0
SLAVE=YES
ping 192.168.30.101 时会回复两个包。
删除bonding
首先禁用bonding
ifconfig bond0 down
卸载bonding 的驱动模块
lsmod 查看本机的所有驱动模块
modprobe -r bonding
删除 /etc/sysconfig/network-script/ifcfg-bond0
修改该目录下的eth0 和 eth1 使其恢复到默认。
从新启动网络服务
CentOS 7网络属性配置
? CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名
称可能会发生变化,导致配置文件发生错误。
? CentOS 7使用基于硬件,设备拓扑和设置类型命名:
? (1) 网卡命名机制
systemd对网络设备的命名方式
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则
根据此索引进行命名,例如eno1
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根
据此索引进行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
(e) 上述均不可用时,则使用传统命名机制
网卡名称
?基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot ,X:port
?(2) 名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
采用传统命名方式
?使用传统命名方式:
?(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX =”rhgb quiet net.ifnames=0″
或:修改/boot/grub2/grub.cfg
?(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
?(3) 重启系统
修改centos7的网卡名
[root@CENTOS7 ~]#vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=”$(sed ‘s, release .*$,,g’ /etc/system-release)”
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=”console”
GRUB_CMDLINE_LINUX=”crashkernel=auto rhgb quiet net.ifnames=0″    在此行加入net.ifname=0
GRUB_DISABLE_RECOVERY=”true”
修改完文件没有生成相应配置
[root@CENTOS7 ~]#grub2-mkconfig -o /etc/grub2.cfg   生成相应配置
Generating grub configuration file …
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-d9b2c489cdf948f8b487e98005c15e1c
Found initrd image: /boot/initramfs-0-rescue-d9b2c489cdf948f8b487e98005c15e1c.img
done
也可以直接修改下面文件的最后一行添加 net.ifnames=0
[root@CENTOS7 ~]#vim /boot/grub2/grub.cfg
menuentry ‘CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)’ –class centos –class gnu-lin
ux –class gnu –class os –unrestricted $menuentry_id_option ‘gnulinux-3.10.0-693.el7.x
86_64-advanced-0a1bc23e-06e5-4210-9b32-0edbff09ca1a’ {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root=’hd0,msdos1′
        if [ x$feature_platform_search_hint = xy ]; then
          search –no-floppy –fs-uuid –set=root –hint-bios=hd0,msdos1 –hint-efi=hd0,
msdos1 –hint-baremetal=ahci0,msdos1 –hint=’hd0,msdos1′  4d8d9214-eeed-4758-8c34-f05492
b9ea73
        else
          search –no-floppy –fs-uuid –set=root 4d8d9214-eeed-4758-8c34-f05492b9ea73
        fi
        linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=0a1bc23e-06e5-4210-9b32-0edbff0
9ca1a ro crashkernel=auto rhgb quiet net.ifnames=0
CentOS 7网络配置工具
? CentOS7主机名
? 配置文件:/etc/hostname ,默认没有此文件,通过DNS反向解析获取主机名,主机名
默认为:localhost.localdomain
? 显示主机名信息
hostname
hostnamectl status
? 设置主机名
hostnamectl set-hostname centos7.magedu.com
? 删除文件/etc/hostname,恢复主机名localhost.localdomain
? CentOS 7网络配置工具
? 图形工具:nm-connection-editor
? 字符配置tui工具:nmtui
? 命令行工具:nmcli
nmcli命令
? 地址配置工具:nmcli
? nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device – show and manage network interfaces
nmcli device help
connection – start, stop, and manage network connections
nmcli connection help
? 修改IP地址等属性:
nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method manual | auto
? 修改配置文件执行生效:systemctl restart network
nmcli con reload
? nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0
使用nmcli配置网络
?NeworkManager是管理和监控网络设置的守护进程
?设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,
但同时只有一个连接配置生效
?显示所有包括不活动连接
nmcli con show
?显示所有活动连接
nmcli con show –active
?显示网络连接配置
nmcli con show “System eth0“
?显示设备状态
nmcli dev status
使用nmcli配置网络
显示网络接口属性
nmcli dev show eth0
?创建新连接default,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eth0
?删除连接
nmcli con del default
?创建新连接static ,指定静态IP,不自动连接
nmcti con add con-name static ifname eth0 autoconnect no type
Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
使用nmcli配置网络
?启用static连接配置
nmcli con up static
?启用default连接配置
nmcli con up default
?查看帮助
nmcli con add help
使用nmcli配置网络
?修改连接设置
nmcli con mod“static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
?DNS设置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下
面命令:
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
使用mncli 配置eth0和eth1:
删除原来的配置文件
[root@CENTOS7 network-scripts]#rm -f ifcfg-ens33
[root@CENTOS7 network-scripts]#nmcli device status       查看当前网卡的状态信息,  connection代表着一份配置文件
DEVICE  TYPE      STATE      CONNECTION
eth0    ethernet  connected  Wired connection 1
eth1    ethernet  connected  Wired connection 2
lo      loopback  unmanaged  —
[root@CENTOS7 network-scripts]#nmcli connection show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
Wired connection 2  baceab37-6abd-3c3e-a886-5b1513017d6b  802-3-ethernet  eth1
ens33               15fdb949-5c4d-4c76-a17e-8e4491fb8cb4  802-3-ethernet  —
上面的配置文件放在内存中实际中并没有配置这两个网卡的文件
[root@CENTOS7 network-scripts]#ls
ifcfg-lo     ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown       ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep  ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth   ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib    ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp  ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6  ifdown-tunnel    ifup-isdn     ifup-TeamPort
ifdown-isdn  ifup             ifup-plip     ifup-tunnel
[root@CENTOS7 network-scripts]#nmcli connection delete ens33     删除ens33这个配置文件
Connection ‘ens33’ (15fdb949-5c4d-4c76-a17e-8e4491fb8cb4) successfully deleted.
用nmcli配置eth1的配置文件:
[root@CENTOS7 network-scripts]#nmcli connection add con-name eth1 ifname eth1 type ethernet ipv4.method auto connection.autoconnect yes
Connection ‘eth1’ (e5e67bba-e114-4426-ba5f-59e58f0adeed) successfully added.
[root@CENTOS7 network-scripts]#nmcli connection show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
Wired connection 2  baceab37-6abd-3c3e-a886-5b1513017d6b  802-3-ethernet  eth1
eth1                e5e67bba-e114-4426-ba5f-59e58f0adeed  802-3-ethernet  —       没有生效
生效命令是
[root@CENTOS7 network-scripts]#nmcli connection up eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@CENTOS7 network-scripts]#nmcli connection show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
eth1                e5e67bba-e114-4426-ba5f-59e58f0adeed  802-3-ethernet  eth1
Wired connection 2  baceab37-6abd-3c3e-a886-5b1513017d6b  802-3-ethernet  —
修改Wired connection 2名字为home-eth1
[root@CENTOS7 network-scripts]#nmcli connection modify Wired\ connection\ 2 con-name home-eth1
[root@CENTOS7 network-scripts]#nmcli connection show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
eth1                e5e67bba-e114-4426-ba5f-59e58f0adeed  802-3-ethernet  eth1
home-eth1           baceab37-6abd-3c3e-a886-5b1513017d6b  802-3-ethernet  —
[root@CENTOS7 network-scripts]#ls
ifcfg-eth1       ifdown-ipv6      ifdown-tunnel  ifup-isdn    ifup-TeamPort
ifcfg-home-eth1  ifdown-isdn      ifup           ifup-plip    ifup-tunnel
修改home-eth1为静态地址
[root@CENTOS7 network-scripts]#nmcli connection modify home-eth1 ipv4.addresses 172.20.0.8/16 ipv4.gateway 172.20.0.1 ipv4.dns 114.114.114.114 ipv4.dns 223.5.5.5 ipv4.method manual
[root@CENTOS7 network-scripts]#nmcli connection up home-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@CENTOS7 network-scripts]#ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.30.101  netmask 255.255.255.0  broadcast 192.168.30.255
        inet6 fe80::f620:6ab3:e2e5:44  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
        RX packets 2241  bytes 202014 (197.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1608  bytes 230065 (224.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.20.0.8  netmask 255.255.0.0  broadcast 172.20.255.255
        inet6 fe80::7d06:b095:d0e9:8bfa  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:1e  txqueuelen 1000  (Ethernet)
        RX packets 12408  bytes 1827768 (1.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 246  bytes 31464 (30.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
复制一份直接修改配置文件:
[root@CENTOS7 network-scripts]#cp ifcfg-home-eth1 ifcfg-home1-eth1
[root@CENTOS7 network-scripts]#ls
ifcfg-eth1        ifdown-ippp    ifdown-TeamPort  ifup-ipv6    ifup-Team
ifcfg-home1-eth1  ifdown-ipv6    ifdown-tunnel    ifup-isdn    ifup-TeamPort
ifcfg-home-eth1   ifdown-isdn    ifup             ifup-plip    ifup-tunnel
[root@CENTOS7 network-scripts]#vim ifcfg-home1-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=home1-eth1
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
IPADDR=172.20.0.5
PREFIX=16
GATEWAY=172.20.0.1
DNS1=223.5.5.5
文件修改完成后   ,    看不到刚刚复制完成的文件
[root@CENTOS7 network-scripts]#nmcli connection show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
eth1                e5e67bba-e114-4426-ba5f-59e58f0adeed  802-3-ethernet  eth1
home-eth1           baceab37-6abd-3c3e-a886-5b1513017d6b  802-3-ethernet  —
用[root@CENTOS7 network-scripts]#nmcli connection  reload  从新加载一下
[root@CENTOS7 network-scripts]#nmcli connection show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
eth1                e5e67bba-e114-4426-ba5f-59e58f0adeed  802-3-ethernet  eth1
home-eth1           baceab37-6abd-3c3e-a886-5b1513017d6b  802-3-ethernet  —
home1-eth1          e7f691d1-692a-9f73-a363-87e1e480a545  802-3-ethernet  —
就能看到这个文件了。
删除不想要的配置文件
[root@CENTOS7 network-scripts]#nmcli connection delete  home-eth1
Connection ‘home-eth1’ (baceab37-6abd-3c3e-a886-5b1513017d6b) successfully deleted.
[root@CENTOS7 network-scripts]#nmcli connection delete  home1-eth1
Connection ‘home1-eth1’ (e7f691d1-692a-9f73-a363-87e1e480a545) successfully deleted.
[root@CENTOS7 network-scripts]#ls    文件已经删除
ifcfg-eth1   ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo     ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
[root@CENTOS7 network-scripts]#nmcli connection show      文件已经删除
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  33424e5b-2b3d-32bc-b8a8-ac48620fd6fe  802-3-ethernet  eth0
eth1                e5e67bba-e114-4426-ba5f-59e58f0adeed  802-3-ethernet  eth1
使用nmcli 停用网卡
[root@CENTOS7 network-scripts]#nmcli device disconnect eth1
Device ‘eth1’ successfully disconnected.
[root@CENTOS7 network-scripts]#ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.30.101  netmask 255.255.255.0  broadcast 192.168.30.255
        inet6 fe80::f620:6ab3:e2e5:44  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:bf:14  txqueuelen 1000  (Ethernet)
        RX packets 3187  bytes 283149 (276.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2187  bytes 313340 (305.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:45:bf:1e  txqueuelen 1000  (Ethernet)
        RX packets 19452  bytes 2931408 (2.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 293  bytes 37871 (36.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 84  bytes 9828 (9.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 84  bytes 9828 (9.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@CENTOS7 network-scripts]#ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:45:bf:14 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:45:bf:1e brd ff:ff:ff:ff:ff:ff
启用eth1
root@CENTOS7 network-scripts]#nmcli device connect eth1
Device ‘eth1’ successfully activated with ‘e5e67bba-e114-4426-ba5f-59e58f0adeed’.
使用nmcli显示网卡的详细信息
[root@CENTOS7 network-scripts]#nmcli connection show eth1
connection.id:                          eth1
connection.uuid:                        e5e67bba-e114-4426-ba5f-59e58f0adeed
connection.stable-id:                   —
connection.interface-name:              eth1
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.timestamp:                   1525330988
connection.read-only:                   no
connection.permissions:                 —
connection.zone:                        —
connection.master:                      —
connection.slave-type:                  —
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 —
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        -1 (default)
802-3-ethernet.port:                    —
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  —
802-3-ethernet.auto-negotiate:          no
802-3-ethernet.mac-address:             —
802-3-ethernet.cloned-mac-address:      —
802-3-ethernet.generate-mac-address-mask:–
802-3-ethernet.mac-address-blacklist:   —
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        —
802-3-ethernet.s390-nettype:            —
802-3-ethernet.s390-options:            —
802-3-ethernet.wake-on-lan:             1 (default)
802-3-ethernet.wake-on-lan-password:    —
ipv4.method:                            auto
ipv4.dns:                               —
ipv4.dns-search:                        —
ipv4.dns-options:                       (default)
ipv4.dns-priority:                      0
ipv4.addresses:                         —
ipv4.gateway:                           —
ipv4.routes:                            —
ipv4.route-metric:                      -1
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    —
ipv4.dhcp-timeout:                      0
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     —
ipv4.dhcp-fqdn:                         —
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv4.dad-timeout:                       -1 (default)
ipv6.method:                            auto
ipv6.dns:                               —
ipv6.dns-search:                        —
ipv6.dns-options:                       (default)
ipv6.dns-priority:                      0
ipv6.addresses:                         —
ipv6.gateway:                           —
ipv6.routes:                            —
ipv6.route-metric:                      -1
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.addr-gen-mode:                     stable-privacy
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     —
ipv6.token:                             —
proxy.method:                           none
proxy.browser-only:                     no
proxy.pac-url:                          —
proxy.pac-script:                       —
GENERAL.NAME:                           eth1
GENERAL.UUID:                           e5e67bba-e114-4426-ba5f-59e58f0adeed
GENERAL.DEVICES:                        eth1
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.VPN:                            no
GENERAL.ZONE:                           —
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/6
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/4
GENERAL.SPEC-OBJECT:                    —
GENERAL.MASTER-PATH:                    —
IP4.ADDRESS[1]:                         172.20.109.255/16
IP4.GATEWAY:                            172.20.0.1
IP4.DNS[1]:                             223.5.5.5
IP4.DNS[2]:                             223.6.6.6
IP4.DOMAIN[1]:                          magedu.com
DHCP4.OPTION[1]:                        requested_routers = 1
DHCP4.OPTION[2]:                        requested_domain_search = 1
DHCP4.OPTION[3]:                        dhcp_server_identifier = 172.20.0.1
DHCP4.OPTION[4]:                        requested_time_offset = 1
DHCP4.OPTION[5]:                        requested_domain_name = 1
DHCP4.OPTION[6]:                        filename = pxelinux.0
DHCP4.OPTION[7]:                        requested_rfc3442_classless_static_routes = 1
DHCP4.OPTION[8]:                        requested_classless_static_routes = 1
DHCP4.OPTION[9]:                        requested_wpad = 1
DHCP4.OPTION[10]:                       requested_broadcast_address = 1
DHCP4.OPTION[11]:                       next_server = 172.20.0.1
DHCP4.OPTION[12]:                       broadcast_address = 172.20.255.255
DHCP4.OPTION[13]:                       requested_interface_mtu = 1
DHCP4.OPTION[14]:                       requested_subnet_mask = 1
DHCP4.OPTION[15]:                       expiry = 1525417388
DHCP4.OPTION[16]:                       dhcp_message_type = 5
DHCP4.OPTION[17]:                       ip_address = 172.20.109.255
DHCP4.OPTION[18]:                       routers = 172.20.0.1
DHCP4.OPTION[19]:                       domain_name = magedu.com
DHCP4.OPTION[20]:                       requested_static_routes = 1
DHCP4.OPTION[21]:                       requested_nis_servers = 1
DHCP4.OPTION[22]:                       requested_ntp_servers = 1
DHCP4.OPTION[23]:                       requested_domain_name_servers = 1
DHCP4.OPTION[24]:                       dhcp_lease_time = 86400
DHCP4.OPTION[25]:                       domain_name_servers = 223.5.5.5 223.6.6.6
DHCP4.OPTION[26]:                       requested_ms_classless_static_routes = 1
DHCP4.OPTION[27]:                       subnet_mask = 255.255.0.0
DHCP4.OPTION[28]:                       network_number = 172.20.0.0
DHCP4.OPTION[29]:                       requested_host_name = 1
DHCP4.OPTION[30]:                       requested_nis_domain = 1
IP6.ADDRESS[1]:                         fe80::1ac:8bc5:45a2:ba5c/64
IP6.GATEWAY:                            —
网络配置文件
?设备配置被保存在文本文件中
? /etc/sysconfig/network-scripts/ifcfg-<name>
? 帮助文档列出完整选项列表:/usr/share/doc/initcripts-
*/sysconfig.txt
动态配置                             静态配置
DEVICE=ethX                         DEVICE=ethX
HWADDR=0:02:8A:A6:30:45             HWADDR=0:02:8A:A6:30:45
BOOTPROTO=dhcp ONBOOT=yes           IPADDR=192.168.0.123
Type=Ethernet                       NETMASK=255.255.255.0
                                    GATEWAY=192.168.0.254
                                    ONBOOT=yes
                                    Type=Ethernet
 nmcli命令
 ?修改连接配置后,需要重新加载配置
nmcli con reload
nmcli con down “system eth0” 可被自动激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用网卡,访止被自动激活
?图形工具
nm-connection-editor
?字符工具
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname
在centos7中有专门的命令
hostnamectl set-hostname centos74.magedu.com
但是要自己去修改 vim /etc/hosts
nmcli实现bonding
? 添加bonding接口
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup
? 添加从属接口
nmcli con add type bond-slave ifname ens7 master mybond0
nmcli con add type bond-slave ifname ens3 master mybond0
注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
? 要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
? 启动绑定
nmcli con up mybond0
网络组Network Teaming
?网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
?网络组不同于旧版中bonding技术,提供更好的性能和扩展性
?网络组由内核驱动和teamd守护进程实现.
?多种方式runner
broadcast
roundrobin
activebackup
loadbalance
lacp (implements the 802.3ad Link Aggregation Control Protocol)
网络组
?启动网络组接口不会自动启动网络组中的port接口
?启动网络组接口中的port接口总会自动启动网络组接口
?禁用网络组接口会自动禁用网络组中的port接口
?没有port接口的网络组接口可以启动静态IP连接
?启用DHCP连接时,没有port接口的网络组会等待port接口的加入
创建网络组接口
?nmcli con add type team con-name  CNAME ifname INAME [config JSON ]
CNAME 连接名, INAME 接口名
JSON 指定runner方式
格式:'{“runner”: {“name”: ” METHOD “}}’
METHOD 可以是broadcast, roundrobin,
activebackup, loadbalance, lacp
创建port接口
?nmcli con add type team-slave con-name  CNAME ifname INAME master
TEAM
CNAME 连接名
INAME 网络接口名
TEAM 网络组接口名
?连接名若不指定,默认为team-slave- IFACE
?nmcli dev dis  INAME
?nmcli con up  CNAME
INAME 设备名 CNAME 网络组接口名或port接口
网络组示例
?nmcli con add type team con-name team0 ifname team0 config
‘{“runner”: {“name”: “loadbalance”}}’
?nmcli con mod team0 ipv4.addresses 192.168.1.100/24
?nmcli con mod team0 ipv4.method manual
?nmcli con add con-name team0-eth1 type team-slave ifname eth1
master team0
?nmcli con add con-name team0-eth2 type team-slave ifname eth2
master team0
?nmcli con up team0
?nmcli con up team0-eth1
?nmcli con up team0-eth2
?teamdctl team0 state; nmcli dev dis eth1
实验:创建网络组
?ip link
?nmcli con add type team con-name team0 ifname team0 config
‘{“runner”: {“name”: “activebackup”}}’
?nmcli con mod team0 ipv4.addresses ‘192.168.0.100/24’
?nmcli con mod team0 ipv4.method manual
?nmcli con add con-name team0-port1 type team-slave ifname eth1
master team0
?nmcli con add con-name team0-port2 type team-slave ifname eth2
master team0
?teamdctl team0 state
实验:创建网络组
?ping -I team0 192.168.0.254
?nmcli dev dis eno1
?teamdctl team0 state
?nmcli con up team0-port1
?nmcli dev dis eno2
?teamdctl team0 state
?nmcli con up team0-port2
?teamdctl team0 state
网桥
?桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网
口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互
相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来
的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
?主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一
起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2
接收到。而S2又会将报文转发给主机C、D。
配置实现网桥
? 创建软件网桥
nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 192.168.74.100/24
ipv4.method manuall
nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master
br0
? 查看网桥
cat /etc/sysconfig/network-scripts/ifcfg-br0
cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
brctl show
? 删除网桥 brctl delbr br0
? 删除网桥中网卡 brctl delif eth0
? 注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口
mntui 命令行中的字符文件修改
─┤ NetworkManager TUI ├──┐
                               │                         │
                               │ Please select an option │
                               │                         │
                               │ Edit a connection       │
                               │ Activate a connection   │
                               │ Set system hostname     │
                               │                         │
                               │ Quit                    │
                               │                         │
                               │                    <OK> │
                               │                         │
测试网络工具
? 在命令行下测试网络的连通性
? 显示主机名
hostname
? 测试网络连通性
ping
mtr
? 显示正确的路由表
ip route
? 确定名称服务器使用:
? nslookup
? host
? dig
? 跟踪路由
? traceroute
? tracepath
网络客户端工具
?ftp,lftp:子命令:get、mget、ls、help
lftp [-p port] [-u user[,password]] SERVER
?lftpget URL
?wget [option]… [URL]…
-q: 静默模式
-c: 断点续传
-P:保存在指定目录
-O: 保存为指定的文件名
–limit-rate=: 指定传输速率,单位K,M等
?links URL    字符界面浏览器
–dump
–source
links www.baidu.com
links www.baidu.com –source 查看百度的源码
links www.baidu.com –dump 查看所有文字
[root@CENTOS7 ~]#wget ftp://172.20.0.1/pub/ISOs/cirros-0.3.0-x86_64-disk.img –limit-rate=1024000 字节为单位   限速下载
–2018-05-03 16:19:36–  ftp://172.20.0.1/pub/ISOs/cirros-0.3.0-x86_64-disk.img
           => ‘cirros-0.3.0-x86_64-disk.img’
Connecting to 172.20.0.1:21… connected.
Logging in as anonymous … Logged in!
==> SYST … done.    ==> PWD … done.
==> TYPE I … done.  ==> CWD (1) /pub/ISOs … done.
==> SIZE cirros-0.3.0-x86_64-disk.img … 9761280
==> PASV … done.    ==> RETR cirros-0.3.0-x86_64-disk.img … done.
Length: 9761280 (9.3M) (unauthoritative)
100%[===============================================>] 9,761,280   1022KB/s   in 9.5s
2018-05-03 16:19:45 (1006 KB/s) – ‘cirros-0.3.0-x86_64-disk.img’ saved [9761280]
[root@CENTOS7 ~]#ftp 172.20.0.1
Connected to 172.20.0.1 (172.20.0.1).
220 (vsFTPd 2.2.2)
Name (172.20.0.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 “/”
ftp> ls
227 Entering Passive Mode (172,20,0,1,153,217).
150 Here comes the directory listing.
drwxr-xr-x   21 0        0            4096 Apr 09 10:44 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (172,20,0,1,173,48).
150 Here comes the directory listing.
drwxr-xr-x   38 0        0            4096 Nov 10 07:23 Books
drwxr-xr-x    2 0        0            4096 Jan 16 07:30 Files
drwxr-xr-x    5 0        0            4096 Apr 04 05:31 ISOs
drwxr-xr-x    2 0        0            4096 Nov 10 05:46 LFS
drwxr-xr-x    2 0        0            4096 Nov 10 05:48 Oracle
drwxr-xr-x    2 0        0            4096 Nov 10 05:48 RHCE
drwxr-xr-x   12 0        0            4096 Nov 10 06:12 Sources
drwxr-xr-x   12 0        0            4096 Nov 10 07:23 Tools
drwxr-xr-x    2 0        0            4096 Nov 10 06:18 Videos
drwxr-xr-x    2 0        0            4096 Nov 10 04:30 blogs
drwxr-xr-x    3 0        0            4096 Nov 10 04:37 errata
drwxr-xr-x    2 0        0            4096 Nov 10 04:37 exam
-rw-r–r–    1 0        0          338796 Nov 10 06:18 getty
drwxr-xr-x    5 0        0            4096 Nov 10 04:37 gls
drwxr-xr-x    2 0        0            4096 Apr 09 10:44 google_containers
drwxr-xr-x    2 0        0            4096 Nov 10 04:37 images
-rw-r–r–    1 0        0          338796 Nov 10 06:18 login
drwxr-xr-x    2 0        0            4096 Nov 10 05:46 named
drwxr-xr-x    2 0        0            4096 Nov 10 05:48 pictures
drwxr-xr-x    2 0        0            4096 Nov 10 06:12 sysroot
drwxr-xr-x    3 0        0            4096 Nov 10 06:18 updates
226 Directory send OK.
ftp> cd tools
550 Failed to change directory.
ftp> cd Tools
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (172,20,0,1,130,154).
150 Here comes the directory listing.
-rw-r–r–    1 0        0        220402254 Nov 10 06:12 Adobe Acrobat Professional 7.0.RAR
drwxr-xr-x    2 0        0            4096 Nov 10 06:12 Edraw
-rw-r–r–    1 0        0        65071840 Nov 10 06:12 EdrawSoft_Edraw_Max.zip
-rw-r–r–    1 0        0        18290688 Nov 10 06:12 FeiQ.exe
-rw-r–r–    1 0        0        39011832 Nov 10 06:12 FileFormatConverters.exe
-rw-r–r–    1 0        0         4251204 Nov 05 06:48 FileZilla_3.3.5.1_win32-setup.exe
-rw-r–r–    1 0        0         4518720 Nov 10 06:12 FileZilla_3.5.3_win32-setup.exe
-rw-r–r–    1 0        0         1620836 Nov 10 06:12 FileZilla_Server-0_9_41.exe
-rw-r–r–    1 0        0        24850592 Nov 10 06:13 Firefox-full-latest-23.0.1.4974.exe
-rw-r–r–    1 0        0         4076643 Nov 10 06:12 FlashFXP.zip
-rw-r–r–    1 0        0         6595938 Nov 10 06:13 FullSync-0.10.1-Windows.msi
-rw-r–r–    1 0        0        31168480 Nov 10 06:13 Git-2.8.1-64-bit.exe
-rw-r–r–    1 0        0        15801540 Nov 10 06:13 HttpWatch.Professional.v7.1.37.rar
-rw-r–r–    1 0        0        15814479 Nov 10 06:13 HttpWatchPro-ha-crack.zip
-rw-r–r–    1 0        0         2032280 Nov 10 06:13 MakeSignGif.rar
-rw-r–r–    1 0        0        78817269 Nov 10 06:13 Mindmanager_9.1.157.zip
-rw-r–r–    1 0        0        17261852 Nov 10 06:13 Navicat.for.MySQL.Enterprise.v10.0.8.rar
-rw-r–r–    1 0        0        31022640 Nov 10 06:13 Opera_15.0.1147.141_Setup.exe
-rw-r–r–    1 0        0         3678601 Nov 10 06:13 SQL-Front_Setup.exe
-rw-r–r–    1 0        0        17779313 Nov 10 06:13 SQLyog Ultimate 9.6.2.0.zip
-rw-r–r–    1 0        0         6315838 Nov 10 06:13 SQLyog_Enterprise.rar
-rw-r–r–    1 0        0        59915640 Nov 05 06:48 SecureCRT and SecureFX v8.0.1 build 1082 正式版.rar
-rw-r–r–    1 0        0        10739967 Nov 10 06:13 SecureCRT_HH_x86_7.0.0.326_PortableSoft.rar
-rw-r–r–    1 0        0         9256915 Nov 10 06:13 Securecrt+6.0.2+build+260.rar
-rw-r–r–    1 0        0        69387314 Nov 10 06:13 ToadForMySQL_Beta_6.7.0.1273.zip
-rw-r–r–    1 0        0        565726726 Nov 10 06:18 VMwareFusion603.dmg
-rw-r–r–    1 0        0        31723343 Nov 10 06:13 VanDyke SecureCRT v7.2.6 with Keygen.rar
-rw-r–r–    1 0        0        14580269 Nov 10 06:13 VanDyke.SecureCRT.v7.0.0.326.Incl.Patch.And.Keymaker-ZWT (1).rar
-rw-r–r–    1 0        0        111197384 Nov 10 06:14 VirtualBox-4.3.24-98716-Win.1425444683.exe
-rw-r–r–    1 0        0        55118440 Nov 10 06:13 Visio2003_SP3.zip
-rw-r–r–    1 0        0         1456984 Nov 10 06:17 WinRAR_3.90_SC.exe
-rw-r–r–    1 0        0        29857792 Nov 10 06:17 Wireshark-win64-1.12.7.exe
-rw-r–r–    1 0        0        93801639 Nov 10 06:18 Xmanager Enterprise 4 Build 0232.rar
-rw-r–r–    1 0        0        52437791 Nov 05 06:49 Xmanager Enterprise 5 Build 0576 & Keygen.rar
-rw-r–r–    1 0        0        85509672 Nov 10 06:12 avira_antivirus_premium_zhcn.exe
-rw-r–r–    1 0        0            1873 Nov 10 06:12 avira_p_20130108.rar
drwxr-xr-x    2 0        0            4096 Nov 10 06:12 camtasia 6.0.2
-rw-r–r–    1 0        0               0 Nov 10 06:12 down.php_softid=432463
-rw-r–r–    1 0        0        44349411 Nov 10 06:12 edrawmax.zip
-rw-r–r–    1 0        0         4275944 Nov 10 06:13 lantern-installer-beta.exe
drwxr-xr-x    2 0        0            4096 Nov 10 06:13 ldapbrowser
-rw-r–r–    1 0        0         9653716 Nov 10 06:13 mySQLYogEnterprise.rar
-rw-r–r–    1 0        0         7945210 Nov 10 06:13 npp.6.6.9.Installer.1410249599.exe
-rw-r–r–    1 0        0        12883976 Nov 10 06:13 picpick_inst.exe
-rw-r–r–    1 0        0          495616 Nov 10 06:13 putty.exe
-rw-r–r–    1 0        0        20213228 Nov 10 06:13 sandcat-browser-2.02-beta.zip
-rw-r–r–    1 0        0         8888512 Nov 10 06:13 sogou_wubi_20a.exe
drwxr-xr-x    2 0        0            4096 Nov 10 06:13 sublime
-rw-r–r–    1 0        0         5118120 Nov 10 06:13 tigervnc-1.1.90.exe
-rw-r–r–    1 0        0              29 Nov 10 06:13 visio-2003-sn.txt
-rw-r–r–    1 0        0        30503216 Nov 10 06:13 vlc-2.2.3-win32.exe
drwxr-xr-x    2 0        0            4096 Nov 05 06:48 vmware
drwxr-xr-x    2 0        0            4096 Nov 10 06:14 vmware 11
drwxr-xr-x    2 0        0            4096 Nov 10 06:14 vmware 9
drwxr-xr-x    2 0        0            4096 Nov 10 06:16 vmware12
drwxr-xr-x    2 0        0            4096 Nov 10 06:17 vnc
drwxr-xr-x    2 0        0            4096 Nov 10 06:17 vnc-win32
-rw-r–r–    1 0        0        158015528 Nov 10 06:17 wps-office-8.1.0.3724-0.1.b1p2.i686.rpm
-rw-r–r–    1 0        0          437906 Nov 05 06:48 屏幕画笔 Pointofix 1.7 Portable.exe
226 Directory send OK.
ftp> get putty.exe
local: putty.exe remote: putty.exe
227 Entering Passive Mode (172,20,0,1,171,109).
150 Opening BINARY mode data connection for putty.exe (495616 bytes).
226 Transfer complete.
495616 bytes received in 0.0917 secs (5406.58 Kbytes/sec)
ftp> !ls                                                    !ls查看本机的文件,ls查看的是FTP中的文件
11.sh f1       Music  Videos
80.sh f11       Pictures   vsftpd-3.0.2-22.el7.x86_64.rpm
anaconda-ks.cfg  fff       Public  yesno.sh
bin ff.sh       putty.exe
Desktop id.sh       reset.sh
Documents initial-setup-ks.cfg  Templates
ftp> put 11.sh
local: 11.sh remote: 11.sh
227 Entering Passive Mode (172,20,0,1,142,194).
550 Permission denied.
ftp> ls
227 Entering Passive Mode (172,20,0,1,21,218).
150 Here comes the directory listing.
-rw-r–r–    1 0        0        220402254 Nov 10 06:12 Adobe Acrobat Professional 7.0.RAR
drwxr-xr-x    2 0        0            4096 Nov 10 06:12 Edraw
-rw-r–r–    1 0        0        65071840 Nov 10 06:12 EdrawSoft_Edraw_Max.zip
-rw-r–r–    1 0        0        18290688 Nov 10 06:12 FeiQ.exe
-rw-r–r–    1 0        0        39011832 Nov 10 06:12 FileFormatConverters.exe
-rw-r–r–    1 0        0         4251204 Nov 05 06:48 FileZilla_3.3.5.1_win32-setup.exe
-rw-r–r–    1 0        0         4518720 Nov 10 06:12 FileZilla_3.5.3_win32-setup.exe
-rw-r–r–    1 0        0         1620836 Nov 10 06:12 FileZilla_Server-0_9_41.exe
-rw-r–r–    1 0        0        24850592 Nov 10 06:13 Firefox-full-latest-23.0.1.4974.exe
-rw-r–r–    1 0        0         4076643 Nov 10 06:12 FlashFXP.zip
-rw-r–r–    1 0        0         6595938 Nov 10 06:13 FullSync-0.10.1-Windows.msi
-rw-r–r–    1 0        0        31168480 Nov 10 06:13 Git-2.8.1-64-bit.exe
-rw-r–r–    1 0        0        15801540 Nov 10 06:13 HttpWatch.Professional.v7.1.37.rar
-rw-r–r–    1 0        0        15814479 Nov 10 06:13 HttpWatchPro-ha-crack.zip
-rw-r–r–    1 0        0         2032280 Nov 10 06:13 MakeSignGif.rar
-rw-r–r–    1 0        0        78817269 Nov 10 06:13 Mindmanager_9.1.157.zip
-rw-r–r–    1 0        0        17261852 Nov 10 06:13 Navicat.for.MySQL.Enterprise.v10.0.8.rar
-rw-r–r–    1 0        0        31022640 Nov 10 06:13 Opera_15.0.1147.141_Setup.exe
-rw-r–r–    1 0        0         3678601 Nov 10 06:13 SQL-Front_Setup.exe
-rw-r–r–    1 0        0        17779313 Nov 10 06:13 SQLyog Ultimate 9.6.2.0.zip
-rw-r–r–    1 0        0         6315838 Nov 10 06:13 SQLyog_Enterprise.rar
-rw-r–r–    1 0        0        59915640 Nov 05 06:48 SecureCRT and SecureFX v8.0.1 build 1082 正式版.rar
-rw-r–r–    1 0        0        10739967 Nov 10 06:13 SecureCRT_HH_x86_7.0.0.326_PortableSoft.rar
-rw-r–r–    1 0        0         9256915 Nov 10 06:13 Securecrt+6.0.2+build+260.rar
-rw-r–r–    1 0        0        69387314 Nov 10 06:13 ToadForMySQL_Beta_6.7.0.1273.zip
-rw-r–r–    1 0        0        565726726 Nov 10 06:18 VMwareFusion603.dmg
-rw-r–r–    1 0        0        31723343 Nov 10 06:13 VanDyke SecureCRT v7.2.6 with Keygen.rar
-rw-r–r–    1 0        0        14580269 Nov 10 06:13 VanDyke.SecureCRT.v7.0.0.326.Incl.Patch.And.Keymaker-ZWT (1).rar
-rw-r–r–    1 0        0        111197384 Nov 10 06:14 VirtualBox-4.3.24-98716-Win.1425444683.exe
-rw-r–r–    1 0        0        55118440 Nov 10 06:13 Visio2003_SP3.zip
-rw-r–r–    1 0        0         1456984 Nov 10 06:17 WinRAR_3.90_SC.exe
-rw-r–r–    1 0        0        29857792 Nov 10 06:17 Wireshark-win64-1.12.7.exe
-rw-r–r–    1 0        0        93801639 Nov 10 06:18 Xmanager Enterprise 4 Build 0232.rar
-rw-r–r–    1 0        0        52437791 Nov 05 06:49 Xmanager Enterprise 5 Build 0576 & Keygen.rar
-rw-r–r–    1 0        0        85509672 Nov 10 06:12 avira_antivirus_premium_zhcn.exe
-rw-r–r–    1 0        0            1873 Nov 10 06:12 avira_p_20130108.rar
drwxr-xr-x    2 0        0            4096 Nov 10 06:12 camtasia 6.0.2
-rw-r–r–    1 0        0               0 Nov 10 06:12 down.php_softid=432463
-rw-r–r–    1 0        0        44349411 Nov 10 06:12 edrawmax.zip
-rw-r–r–    1 0        0         4275944 Nov 10 06:13 lantern-installer-beta.exe
drwxr-xr-x    2 0        0            4096 Nov 10 06:13 ldapbrowser
-rw-r–r–    1 0        0         9653716 Nov 10 06:13 mySQLYogEnterprise.rar
-rw-r–r–    1 0        0         7945210 Nov 10 06:13 npp.6.6.9.Installer.1410249599.exe
-rw-r–r–    1 0        0        12883976 Nov 10 06:13 picpick_inst.exe
-rw-r–r–    1 0        0          495616 Nov 10 06:13 putty.exe
-rw-r–r–    1 0        0        20213228 Nov 10 06:13 sandcat-browser-2.02-beta.zip
-rw-r–r–    1 0        0         8888512 Nov 10 06:13 sogou_wubi_20a.exe
drwxr-xr-x    2 0        0            4096 Nov 10 06:13 sublime
-rw-r–r–    1 0        0         5118120 Nov 10 06:13 tigervnc-1.1.90.exe
-rw-r–r–    1 0        0              29 Nov 10 06:13 visio-2003-sn.txt
-rw-r–r–    1 0        0        30503216 Nov 10 06:13 vlc-2.2.3-win32.exe
drwxr-xr-x    2 0        0            4096 Nov 05 06:48 vmware
drwxr-xr-x    2 0        0            4096 Nov 10 06:14 vmware 11
drwxr-xr-x    2 0        0            4096 Nov 10 06:14 vmware 9
drwxr-xr-x    2 0        0            4096 Nov 10 06:16 vmware12
drwxr-xr-x    2 0        0            4096 Nov 10 06:17 vnc
drwxr-xr-x    2 0        0            4096 Nov 10 06:17 vnc-win32
-rw-r–r–    1 0        0        158015528 Nov 10 06:17 wps-office-8.1.0.3724-0.1.b1p2.i686.rpm
-rw-r–r–    1 0        0          437906 Nov 05 06:48 屏幕画笔 Pointofix 1.7 Portable.exe
226 Directory send OK.
ftp> mget wps*                           mget下载多个文件,mput上传多个文件
mget wps-office-8.1.0.3724-0.1.b1p2.i686.rpm? y
227 Entering Passive Mode (172,20,0,1,250,49).
150 Opening BINARY mode data connection for wps-office-8.1.0.3724-0.1.b1p2.i686.rpm (158015528 bytes).
226 Transfer complete.
158015528 bytes received in 32.6 secs (4840.51 Kbytes/sec)
ftp> ^C
ftp>
lftp带颜色比ftp好用
在脚本中直接下载
lftpget ftp://172.20.0.1/pub/Tools/picpick_inst.exe  只支持ftp下载
wget ftp://172.20.0.1/pub/Tools/picpick_inst.exe    支持所有的ftp http等下载
进程概念
? 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
? Process: 运行中的程序的一个副本,是被载入内存的一个指令集合
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限,
通常从执行进程的用户来继承
存在生命周期
? task struct:Linux内核存储进程信息的数据结构格式,task struct 任务结构
? task list:多个任务的的task struct组成的链表
? 进程创建:
init:第一个进程
父子关系
进程:都由其父进程创建,CoW(copy on write)  写时复制。
fork()生成子进程, clone()可以生成子进程也都可以生成兄弟进程。
程序和进程的区别:
程序表现为磁盘上的文件,静态的没有生命期。一个进程对应一个程序,一个程序可以对应多个进程。
进程是一个动态的概念,有生命期。
当父进程生成一个子进程的时候系统会生成一个新的子进程信息,但是他们处在同一个内存空间,只有子进程数据发生变化的时候才生成第二块内存来单独存放子进程。
进程的基本状态
?创建状态:进程在创建时需要申请一个空白PCB(process control block进程控
制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完
成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
?就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
?执行状态:进程处于就绪状态被调度后,进程进入执行状态
?阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时
无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
?终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
状态之间转换六种情况
?运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占
用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高
优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为
就绪状态。
?就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适
的进程分配CPU
?运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执
行状态变为阻塞状态,如发生了I/O请求
?阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
?以下两种状态是不可能发生的:
?阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调
度时不会从阻塞队列进行挑选,而是从就绪队列中选取
?就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态
ps aux 可以查看系统正在运行的进程的各种状态
以前的系统使用协作式多任务,协作式多任务就是指一个进程霸占CPU直到进程结束。
现在的系统使用抢占式多任务,按时间片分配,时间片一到就必须释放CPU给别的进程使用。
进程优先级
?进程优先级:
系统优先级:数字越小,优先级越高
0-139(CentOS4,5)
各有140个运行队列和过期队列
0-98,99(CentOS6)
实时优先级: 99-0 值最大优先级最高
nice值:-20到19,对应系统优先级100-139或99
?Big O:时间复杂度,用时和规模的关系
O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)
进程相关概念
? 进程内存:
Page Frame: 页框,用存储页面数据,存储Page 4k
LRU:Least Recently Used 近期最少使用算法,释放内存
物理地址空间和线性地址空间
MMU:Memory Management Unit负责转换线性和物理地址
TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址
映射关系的缓存
? IPC: Inter Process Communication
同一主机: signal:信号
shm: shared memory
semaphore:信号量,一种计数器
不同主机:socket: IP和端口号
RPC: remote procedure call
MQ:消息队列,Kafka,ActiveMQ
LRU算法   缓存的算法
?假设序列为 4 3 4 2 3 1 4 2
物理块有3个,则
?第1轮 4调入内存 4
?第2轮 3调入内存 3 4
?第3轮 4调入内存 4 3
?第4轮 2调入内存 2 4 3
?第5轮 3调入内存 3 2 4
?第6轮 1调入内存 1 3 2
?第7轮 4调入内存 4 1 3
?第8轮 2调入内存 2 4 1
LRU的变种算法:访问一次不上移,访问多次才上移。
对于一个应用程序来说,实实在在的cpu给应用程序的空间,叫物理空间
而对于应用程序来说,觉得自己拥有全部空间,这就叫做线性空间。
MMU :   用来负责转换线性内存和物理内存
LTB:存放在cup中,用来保存虚拟地址和物理地址的映射关系。
一个应用程序运行时向cpu申请1个G的内存空间,cup发现这个程序现阶段运行只需要100M的内存空间就够了
所以CUP只给程序100M的空间,但是承若当程序需要1G的空间时会给予分配。这是承若分配内存空间和实际分配内存空间。
[root@CENTOS7 ~]#ps aux  承若的内存空间   实际的内存空间
USER        PID %CPU %MEM       VSZ              RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4      128164              5476 ?        Ss   14:16   0:02 /usr/lib/systemd/system
一个电脑上多个进程之间如何通讯
机: signal:信号
shm: shared memory :将数据放到共有的空间中
semaphore:信号量,一种计数器:10个信号量,每一个进程占据一个信号量,当10个都用完时,等待前面的程序用完后面的程序才可以使用
不同主机:socket: IP和端口号
RPC: remote procedure call   A机器上跑的一个程序,跑了一会后到B机器上去调用B机器上的一个程序,之后在回到A机器上运行
A     B
 →
     ↓
    ←
MQ:消息队列,Kafka,ActiveMQ
将各个主机的任务消息放在Kafka服务器上,再由服务器排序,按顺序访问。
进程状态
? Linux内核:抢占式多任务
? 进程类型:
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
? 进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
前台执行:如sleep占用终端资源
ps输出属性
? VSZ: Virtual memory SiZe,虚拟内存集,线性内存
? RSS: ReSident Size, 常驻内存集
? STAT:进程状态
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前台进程
l: 多线程进程 process(各种资源的融合)  thread 线程,{}表示线程(干活的人的个数可以一个也可以多个)
L:内存分页并带锁
N:低优先级进程
<: 高优先级进程
s: session leader,会话(子进程)发起者
系统管理工具
?进程的分类:
CPU-Bound:CPU密集型,非交互   加密解密压缩解压缩都是CPU密集型
IO-Bound:IO密集型,交互       读写一个大文件
?Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop,
glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
?pstree命令:
pstree – display a tree of processes
?ps: process state     基于快照的,每次信息可能不一样。  默认ps只显示当前一个用户一个终端开的前天进程,
ps – report a snapshot of the current processes
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
pstree -p 查看系统使用的进程树
ls /proc/ 可以看到好多数字,每一个数字都是一个进程的PID
[root@CENTOS7 ~]#ls /proc
1     1408  1558  1852  292  5     612   706   998          kallsyms      slabinfo
10    1410  1559  19    293  5138  614   707   999          kcore         softirqs
1006  1418  1562  2     294  539   618   708   acpi         keys          stat
1058  1420  1563  20    295  553   637   712   asound       key-users     swaps
1098  1423  1573  21    296  554   638   716   buddyinfo    kmsg          sys
11    1427  1580  22    297  555   639   725   bus          kpagecount    sysrq-trigger
1100  1432  1581  23    298  556   640   7267  cgroups      kpageflags    sysvipc
1140  1436  1583  238   3    557   641   757   cmdline      loadavg       timer_list
1151  1442  1589  239   30   558   642   8     consoles     locks         timer_stats
1154  1450  1601  24    31   559   645   8200  cpuinfo      mdstat        tty
1161  1455  1687  240   32   560   646   8239  crypto       meminfo       uptime
1168  1466  17    241   33   561   648   8320  devices      misc          version
12    1469  1726  242   377  562   649   8350  diskstats    modules       vmallocinfo
1236  1483  1733  245   400  563   650   8399  dma          mounts        vmstat
1241  1489  1742  246   404  564   656   8400  driver       mpt           zoneinfo
13    15    1753  250   405  565   657   8479  execdomains  mtrr
1333  1505  1755  251   41   566   659   8480  fb           net
1350  1507  1780  256   418  567   66    9     filesystems  pagetypeinfo
1355  1519  1796  257   43   568   671   98    fs           partitions
1359  1536  18    288   442  571   677   982   interrupts   sched_debug
1380  1538  1800  289   45   572   6806  984   iomem        schedstat
1386  1547  1801  290   457  576   7     986   ioports      scsi
1403  1551  1846  291   47   577   705   997   irq          self
[root@CENTOS7 ~]#ls /proc/1
attr        coredump_filter  gid_map    mountinfo   oom_score      schedstat  status
autogroup   cpuset           io         mounts      oom_score_adj  sessionid  syscall
auxv        cwd              limits     mountstats  pagemap        setgroups  task
cgroup      environ          loginuid   net         personality    smaps      timers
clear_refs  exe              map_files  ns          projid_map     stack      uid_map
cmdline     fd               maps       numa_maps   root           stat       wchan
comm        fdinfo           mem        oom_adj     sched          statm
[root@CENTOS7 ~]#ls /proc/1/exe -l
lrwxrwxrwx. 1 root root 0 May  3 16:00 /proc/1/exe -> /usr/lib/systemd/systemd
查看进程进程ps
? ps [OPTION]…
? 支持三种选项:
UNIX选项 如-A -e
BSD选项  如a
GNU选项  如–help
? 选项:默认显示当前终端中的进程
? a 选项包括所有终端中的进程
? x 选项包括不链接终端的进程
? u 选项显示进程所有者的信息
? f 选项显示进程树,相当于 –forest
? k| –sort 属性 对属性 排序,属性前加- 表示倒序
? o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
? L 显示支持的属性列表
ps 命令后面跟 a 和 -a 意思是不一样的
查看进程进程ps
  ps [OPTION]…
  支持三种选项:
UNIX选项 如-A -e
BSD选项  如a
GNU选项  如–help
  选项:默认显示当前终端中的进程
  a 选项包括所有终端中的进程
  x 选项包括不链接终端的进程
  u 选项显示进程所有者的信息
  f 选项显示进程树,相当于 –forest
  k| –sort 属性 对属性 排序,属性前加- 表示倒序
  o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
  L 显示支持的属性列表
[wang@CENTOS7 ~]$ps xa         a所有终端
 进程编号 在哪个终端上 状态    运行了几个时间片    命令
   PID    TTY          STAT     TIME              COMMAND
     1     ?            Ss        0:07             /usr/lib/systemd/systemd –switched-root –system –deserialize 21
     2     ?            S         0:00              [kthreadd]
     3     ?            S         0:00               [ksoftirqd/0]
[wang@CENTOS7 ~]$ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.5 193700  6336 ?        Ss   08:48   0:07 /usr/lib/systemd/systemd –switched-root –system
root          2  0.0  0.0      0     0 ?        S    08:48   0:00 [kthreadd]
[wang@CENTOS7 ~]$ps auxf
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          2  0.0  0.0      0     0 ?        S    08:48   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    08:48   0:00  \_ [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   08:48   0:00  \_ [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    08:48   0:02  \_ [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    08:48   0:01  \_ [migration/0]
[wang@CENTOS7 ~]$ps axo pid,%cpu,%mem,tty k %cpu
   PID %CPU %MEM TT
     1  0.0  0.5 ?
     2  0.0  0.0 ?
[wang@CENTOS7 ~]$ps axo pid,%cpu,%mem,tty,cmd k %mem     在centos6排序只按PID排,其他排序不好用
   PID %CPU %MEM TT       CMD
     2  0.0  0.0 ?        [kthreadd]
     3  0.0  0.0 ?        [ksoftirqd/0]
  1385  0.1 14.5 ?        /usr/bin/gnome-shell      占用内存最多的是图形界面
[root@CENTOS7 ~]#free -h
              total        used        free      shared  buff/cache   available
Mem:           1.0G        206M        513M         20M        353M        641M
Swap:          2.0G        604K        2.0G
[root@CENTOS7 ~]#init 3      关闭图形界面后使用内存变小
[root@CENTOS7 ~]#free -h
              total        used        free      shared  buff/cache   available
Mem:           1.0G        203M        517M         20M        353M        645M
Swap:          2.0G        604K        2.0G
[root@CENTOS7 ~]#ps L    查看 ps xo 后面可跟的选项,其中euser是有效的使用者,ruser真正的使用者
%cpu         %CPU
%mem         %MEM
_left        LLLLLLLL
在别的终端上运行
[wang@CENTOS7 ~]$passwd
Changing password for user wang.
Changing password for wang.
(current) UNIX password:
[root@CENTOS7 ~]#ps axo pid,cmd,euser,ruser   因为passwd上面有suid所以造成下面效果
   PID CMD                         EUSER    RUSER
  14646 passwd                      root     wang
ps常见选项
  -C cmdlist 指定命令,多个命令用,分隔
  -L 显示线程
  -e: 显示所有进程,相当于-A
  -f: 显示完整格式程序信息
  -F: 显示更完整格式的进程信息
  -H: 以进程层级格式显示进程相关信息
  -u userlist 指定有效的用户ID或名称
  -U userlist 指定真正的用户ID或名称
  -g gid或groupname 指定有效的gid或组名称
  -G gid或groupname 指定真正的gid或组名称
  -p pid 显示指pid的进程
  –ppid pid 显示属于pid的子进程
  -M 显示SELinux信息,相当于Z
[root@CENTOS7 ~]#ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 08:48 ?        00:00:08 /usr/lib/systemd/systemd –switched-root –system –deserialize 21
root          2      0  0 08:48 ?        00:00:00 [kthreadd]
[root@CENTOS7 ~]#ps -eF
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          1      0  0 50474  5860   1 08:48 ?        00:00:08 /usr/lib/systemd/systemd –switched-root –system –de
root          2      0  0     0     0   1 08:48 ?        00:00:00 [kthreadd]
[root@CENTOS7 ~]#ps -U wang    查看真是用户wang,用户开启的程序
   PID TTY          TIME CMD
  6137 ?        00:00:00 sshd
  6138 pts/0    00:00:00 bash
 13780 pts/0    00:00:00 su
 14592 ?        00:00:00 sshd
 14593 pts/1    00:00:00 bash
 14795 pts/1    00:00:00 passwd
[root@CENTOS7 ~]#ps -u wang  查看有效用户是wang,用户开启的程序
   PID TTY          TIME CMD
  6137 ?        00:00:00 sshd
  6138 pts/0    00:00:00 bash
 14592 ?        00:00:00 sshd
 14593 pts/1    00:00:00 bash
[root@CENTOS7 ~]#ps -p 14168   用进程编号查看进程是什么
   PID TTY          TIME CMD
 14168 ?        00:00:00 gnome-shell-cal
[root@CENTOS7 ~]#ps –ppid 14130     查看14130进程的子进程是谁
   PID TTY          TIME CMD
 14153 ?        00:00:00 ibus-daemon
ps输出属性
   VSZ: Virtual memory SiZe,虚拟内存集,线性内存
   RSS: ReSident Size, 常驻内存集
   STAT:进程状态
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前台进程
l: 多线程进程
L:内存分页并带锁
N:低优先级进程
<: 高优先级进程
s: session leader,会话(子进程)发起者
ps
  ni: nice值
  pri: priority 优先级
  psr: processor CPU编号
  rtprio: 实时优先级
  示例:
ps axo pid,cmd,psr,ni,pri,rtprio
  常用组合:
aux
-ef
-eFH
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
system 优先级0-99,100-139
realtime     99-0
nice               负20-19
top         RT-RT 0-39
[root@CENTOS7 ~]#ps xo pid,cmd,pri,nice,rtprio
                              pri优先级是反的,就是139-0   nice是正常的负20-19代表100-139     rtprio代表realtime99-0.-表示没有对应关系
   PID CMD                                PRI               NI RTPRIO
     1 /usr/lib/systemd/systemd —         19      0       –
     2 [kthreadd]                          19      0       –
     3 [ksoftirqd/0]                       19      0       –
     5 [kworker/0:0H]                      39  -20       –
     6 [kworker/u256:0]                    19      0       –
     7 [migration/0]                       139      –     99
程序跑起来以后调整优先级 :
renice -n -10(负10)6
[root@CENTOS7 ~]#ps xo pid,cmd,pri,nice,rtprio
14795 passwd                       19   0      –
[root@CENTOS7 ~]#renice -n -10 14795
14795 (process ID) old priority 0, new priority -10
[root@CENTOS7 ~]#ps xo pid,cmd,pri,nice,rtprio
14795 passwd                       29 -10      –
直接指定优先级:
nice -n -10 sleep 100 也可以写成 nice –10 sleep100.   nice -10 sleep是指定优先级为10
[root@CENTOS7 ~]#nice -n -10 sleep 100    直接指定sleep以nice-10的优先级运行
[root@CENTOS7 ~]#ps xo pid,cmd,pri,nice,rtprio
   PID CMD                         PRI  NI RTPRIO
 15387 sleep 100                    29 -10      –
psr 使用哪个cpu的意思,应用程序运行时,默认使用的cpu不是固定的,而是在几颗cpu来回切换。这样
来回切换并不好,会浪费cpu内存中存储的信息使效率下降。
[root@CENTOS7 ~]#watch -n 1 ‘ps -xo pid,cmd,psr’      每秒显示一次这个命令
ps示例
  查询你拥有的所有进程:
ps -x
  显示指定用户名(RUID)或用户ID的进程:
ps -fU apache
ps -fu 48
  显示指定用户名(EUID)或用户ID的进程:
ps -fu wang
ps -fu 1000
  查看以root用户权限(实际和有效ID)运行的每个进程:
ps -U root -u root
  列出某个组拥有的所有进程(实际组ID:RGID或名称):
ps -fG nginx
ps示例
  列出有效组名称(或会话)所拥有的所有进程:
ps -fg mysql
ps -fG 27
  通过进程ID来显示所属的进程:
ps -fp 1234
  以父进程ID来显示其下所有的进程,如显示父进程为1154的所有进程:
ps -f –ppid 1234
  显示指定PID的多个进程:
ps -fp 1204,1239,1263
  要按tty显示所属进程:
ps -ft pst/0
[root@CENTOS7 ~]#ps -C bash       -C cmd 显示该cmd的信息
   PID TTY          TIME CMD
  6138 pts/0    00:00:00 bash
  6448 tty2     00:00:00 bash
 13786 pts/0    00:00:00 bash
 13884 tty1     00:00:00 bash
 14593 pts/1    00:00:00 bash
 15346 pts/1    00:00:00 bash
编写2个脚本
[root@CENTOS7 ~]#vim f1.sh
#!/bin/bash
echo hello
sleep 100
如果不加#!/bin/bash
ps -C f1.sh查询不到
如果运行时用
bash f1.sh
ps -C f1.sh 也查询不到
可以一次查询多个程序
ps -Cf1.sh -C f2.sh
ps -Cf1.sh -C f2.sh o pid,%cpu,%mem,psr      查看自己写的脚本的运行情况
ps示例
?以进程树显示系统中的进程如何相互链接:
ps -e –forest
?以进程树显示指定的进程
ps -f –forest -C sshd
ps -ef –forest | grep -v grep | grep sshd
?要显示一个进程的所有线程,将显示LWP(轻量级进程)以及NLWP(轻量级进
程数)列:
ps -fL -C nginx
?要列出所有格式说明符:
ps L
?查看进程的PID,PPID,用户名和命令:
ps -eo pid,ppid,user,cmd
ps示例
?自定义格式显示文件系统组,ni值开始时间和进程的时间:
ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime
?使用其PID查找进程名称:
ps -p 1244 -o comm=
?要以其名称选择特定进程,显示其所有子进程
ps -C sshd,bash
?查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时
这个参数很有用:
ps -C httpd,sshd -o pid=
?检查一个进程的执行时间
ps -eo comm,etime,user | grep nginx
[root@CENTOS7 ~]#ps -C f1.sh -C ping o pid,cmd,%cpu,%mem
   PID CMD                         %CPU %MEM
 16117 /bin/bash ./f1.sh            0.0  0.1
 16118 ping -f 172.20.0.1           2.5  0.1
[root@CENTOS7 ~]#ps -p 16118
   PID TTY          TIME CMD
 16118 pts/1    00:00:05 ping
[root@CENTOS7 ~]#ps -p 16118 -o comm
COMMAND
ping
[root@CENTOS7 ~]#ps -C f1.sh -C ping o pid,cmd,%cpu,%mem
   PID CMD                         %CPU %MEM
 16181 /bin/bash ./f1.sh            0.0  0.1
 16182 ping -f 192.168.30.101      98.5  0.1
[root@CENTOS7 ~]#ps -C bash -o pid=
  1886
  1957
[root@CENTOS7 ~]#ps -C gnome-shell -o %cpu=
 1.4
[root@CENTOS7 ~]#ps -eo time,etime,pid,psr,%mem,%cpu,cmd | grep “httpd”
00:00:00       02:39   2127   1  0.4  0.2 /usr/sbin/httpd -DFOREGROUND
00:00:00       02:31   2129   2  0.2  0.0 /usr/sbin/httpd -DFOREGROUND
00:00:00       02:31   2130   3  0.2  0.0 /usr/sbin/httpd -DFOREGROUND
00:00:00       02:31   2131   0  0.2  0.0 /usr/sbin/httpd -DFOREGROUND
00:00:00       02:31   2132   2  0.2  0.0 /usr/sbin/httpd -DFOREGROUND
00:00:00       02:31   2133   2  0.2  0.0 /usr/sbin/httpd -DFOREGROUND
00:00:00       00:00   2224   3  0.0  0.0 grep –color=auto httpd
[root@CENTOS7 ~]#ps xo pid,%cpu,%mem,cmd k -%mem     排序k也可以写成–sort=
   PID %CPU %MEM CMD
  1423  0.7 15.1 /usr/bin/gnome-shell
  1615  0.0  5.9 /usr/libexec/evolution-calendar-factory
  1802  0.0  5.5 /usr/libexec/evolution-calendar-factory-subprocess –factory contacts –bus-name org.gnome.evolution.da
  1815  0.0  5.5 /usr/libexec/evolution-calendar-factory-subprocess –factory local –bus-name org.gnome.evolution.datas
  1617  0.2  4.3 /usr/bin/gnome-software –gapplication-service
ps示例
  查找占用最多内存和CPU的进程:
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head
  显示安全信息:
ps -eM
ps –context
  使用以下命令以用户定义的格式显示安全信息。
ps -eo euser,ruser,suser,fuser,f,comm,label
  使用watch实用程序执行重复的输出以实现对就程进行实时的监视,如下面的命
令显示每秒钟的监视:
watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head’
进程优先级
  进程优先级调整:
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120
只有根用户才能降低nice值(提高优先性)
  nice命令:
nice [OPTION] [COMMAND [ARG]…]
  renice命令:
renice [-n] priority pid…
  查看:
ps axo pid,comm,ni
搜索进程
  最灵活:ps 选项 | 其它命令
  按预定义的模式:pgrep
pgrep [options] pattern
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
  按确切的程序名称:/sbin/pidof
pidof bash
[root@CENTOS7 ~]#pgrep -a “httpd”   支持正在表达式
2127 /usr/sbin/httpd -DFOREGROUND
2129 /usr/sbin/httpd -DFOREGROUND
2130 /usr/sbin/httpd -DFOREGROUND
2131 /usr/sbin/httpd -DFOREGROUND
2132 /usr/sbin/httpd -DFOREGROUND
2133 /usr/sbin/httpd -DFOREGROUND
[root@CENTOS7 ~]#pgrep -at pts/1
2049 -bash
2134 su –
2138 -bash
[root@CENTOS7 ~]#pgrep -a “^ht*”
2127 /usr/sbin/httpd -DFOREGROUND
2129 /usr/sbin/httpd -DFOREGROUND
2130 /usr/sbin/httpd -DFOREGROUND
2131 /usr/sbin/httpd -DFOREGROUND
2132 /usr/sbin/httpd -DFOREGROUND
2133 /usr/sbin/httpd -DFOREGROUND
[root@CENTOS7 ~]#pidof bash            查看一个进程的进程编号
2138 2049 1957 1886 732
[root@CENTOS7 ~]#pidof httpd
2133 2132 2131 2130 2129 2127
系统工具
  uptime
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分
钟的平均负载,一般不会超过1)
  系统平均负载:
指在特定时间间隔内运行队列中的平均进程数
  通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每
个CPU内核的任务数大于5,那么此主机的性能有严重问题
  如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被
充分使用
[root@CENTOS7 ~]#uptime
当前时间     启动了多久    当前有几个用户         平均负载情况1分钟 5分钟  10分钟内cpu没有完成的任务的个数
 09:28:49     up 28 min,        3 users,        load average: 0.00,  0.01,   0.10
进程管理工具
   top:有许多内置命令:
排序:
P:以占据的CPU百分比,%CPU
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W
top命令
   栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
进程管理工具
    选项:
-d #: 指定刷新时间间隔,默认为3秒
-b: 全部显示所有进程
-n #: 刷新多少次后退出
htop命令:EPEL源
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
子命令:
s: 跟踪选定进程的系统调用
l: 显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t: 显示进程树
[root@CENTOS7 ~]#top
top – 09:44:18 up 44 min,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 210 total,   1 running, 209 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1100072 total,    88032 free,   653152 used,   358888 buff/cache
KiB Swap:  2097148 total,  2097128 free,       20 used.   238040 avail Mem
[root@CENTOS7 ~]#top -n 5 -b -d 5 -u wang
[root@CENTOS7 ~]#htop
top – 09:49:57 up 49 min,  3 users,  load average: 0.01, 0.02, 0.05
Tasks: 212 total,   1 running, 211 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.4 us,  4.1 sy,  0.0 ni, 94.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1100072 total,    82040 free,   652952 used,   365080 buff/cache
KiB Swap:  2097148 total,  2097048 free,      100 used.   235600 avail Mem
内存空间
  内存空间使用状态:
free [OPTION]
-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出
清除缓存
[root@centos6 ~]#find /proc/ -name drop_caches
/proc/sys/vm/drop_caches
[root@centos6 ~]#cat /proc/sys/vm/drop_caches
0
[root@centos6 ~]#echo 1 > /proc/sys/vm/drop_caches
[root@centos6 ~]#free -h -s 2 -c 2
             total       used       free     shared    buffers     cached
Mem:          1.9G       666M       1.3G       2.4M       115M       175M
-/+ buffers/cache:       375M       1.6G
Swap:         2.0G         0B       2.0G
             total       used       free     shared    buffers     cached
Mem:          1.9G       666M       1.3G       2.4M       115M       175M
-/+ buffers/cache:       375M       1.6G
Swap:         2.0G         0B       2.0G
内存工具
   vmstat命令:虚拟内存信息
vmstat [options] [delay [count]]
vmstat 2 5
   procs:
r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
   memory:
swpd: 交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
   swap:
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
[root@centos6 ~]#vmstat
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1354884 118272 179848    0    0    13     1   15   14  0  0 99  1  0
[root@centos6 ~]#vmstat 1      一秒观察一次
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1356124 118272 179848    0    0    13     1   14   13  0  0 99  1  0
 0  0      0 1356092 118272 179848    0    0     0     0   71   48  0  0 100  0  0
 0  0      0 1356076 118272 179848    0    0     0     0   26   19  0  0 100  0  0
[root@centos6 ~]#vmstat 1 3    一秒执行一次,执行3次退出
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1356124 118272 179848    0    0    13     1   14   13  0  0 99  1  0
 0  0      0 1356092 118272 179848    0    0     0     0   71   48  0  0 100  0  0
 0  0      0 1356076 118272 179848    0    0     0     0   26   19  0  0 100  0  0
这里io的意思是:这里的产考物是内存
IO
       bi: Blocks received from a block device (blocks/s).   出磁盘,读出磁盘
       bo: Blocks sent to a block device (blocks/s).         进磁盘,写到磁盘
 Swap
       si: Amount of memory swapped in from disk (/s).
       so: Amount of memory swapped to disk (/s).
内存工具
  iostat:统计CPU和设备IO信息
示例:iostat 1 10
  pmap命令:进程对应的内存映射
  pmap [options] pid […]
-x: 显示详细格式的信息
示例:pmap 1
  另外一种实现:
cat /proc/PID/maps
[root@CENTOS7 ~]#iostat
Linux 3.10.0-693.el7.x86_64 (CENTOS7.localdomain) 05/05/2018 _x86_64_ (4 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.30    0.00    0.92    0.67    0.00   98.11
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               2.93       104.48        11.45     829137      90894
sdb               0.03         0.45         0.00       3536          0
sdc               0.04         0.70         0.00       5535          0
scd0              0.00         0.13         0.00       1056          0
dm-0              0.01         0.13         0.00       1036          0
dm-1              0.01         0.13         0.00       1036          0
[root@CENTOS7 ~]#pmap 2138                  详细显示bash命令中每个调用使用的真正内存是多少
2138:   -bash                               如果一个模块内存一直增大,会导致内存耗尽。这个程序有问题
0000000000400000    884K r-x– bash
00000000006dc000      4K r—- bash
00000000006dd000     36K rw— bash
00000000006e6000     24K rw—   [ anon ]
0000000000c45000   1444K rw—   [ anon ]
00007f20e6279000 103588K r—- locale-archive
00007f20ec7a2000     48K r-x– libnss_files-2.17.so
00007f20ec7ae000   2044K —– libnss_files-2.17.so
00007f20ec9ad000      4K r—- libnss_files-2.17.so
00007f20ec9ae000      4K rw— libnss_files-2.17.so
00007f20ec9af000     24K rw—   [ anon ]
00007f20ec9b5000   1760K r-x– libc-2.17.so
00007f20ecb6d000   2048K —– libc-2.17.so
00007f20ecd6d000     16K r—- libc-2.17.so
00007f20ecd71000      8K rw— libc-2.17.so
00007f20ecd73000     20K rw—   [ anon ]
00007f20ecd78000      8K r-x– libdl-2.17.so
00007f20ecd7a000   2048K —– libdl-2.17.so
00007f20ecf7a000      4K r—- libdl-2.17.so
00007f20ecf7b000      4K rw— libdl-2.17.so
00007f20ecf7c000    148K r-x– libtinfo.so.5.9
00007f20ecfa1000   2048K —– libtinfo.so.5.9
00007f20ed1a1000     16K r—- libtinfo.so.5.9
00007f20ed1a5000      4K rw— libtinfo.so.5.9
00007f20ed1a6000    132K r-x– ld-2.17.so
00007f20ed3b0000     12K rw—   [ anon ]
00007f20ed3bd000      4K rw—   [ anon ]
00007f20ed3be000     28K r–s- gconv-modules.cache
00007f20ed3c5000      8K rw—   [ anon ]
00007f20ed3c7000      4K r—- ld-2.17.so
00007f20ed3c8000      4K rw— ld-2.17.so
00007f20ed3c9000      4K rw—   [ anon ]
00007fff5dfec000    132K rw—   [ stack ]
00007fff5e0f2000      8K r-x–   [ anon ]
ffffffffff600000      4K r-x–   [ anon ]
 total           116576K
[root@CENTOS7 ~]#pmap -x 2138
2138:   -bash
                                  脏数据:没有修改完成的数据
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000     884     548       0 r-x– bash
00000000006dc000       4       4       4 r—- bash
00000000006dd000      36      36      36 rw— bash
[root@CENTOS7 ~]#cat /proc/2138/maps              产看文件
00400000-004dd000 r-xp 00000000 08:02 99298                              /usr/bin/bash
006dc000-006dd000 r–p 000dc000 08:02 99298                              /usr/bin/bash
006dd000-006e6000 rw-p 000dd000 08:02 99298                              /usr/bin/bash
006e6000-006ec000 rw-p 00000000 00:00 0
00c45000-00dae000 rw-p 00000000 00:00 0                                  [heap]
7f20e6279000-7f20ec7a2000 r–p 00000000 08:02 67524402                   /usr/lib/locale/locale-archive
7f20ec7a2000-7f20ec7ae000 r-xp 00000000 08:02 33792348                   /usr/lib64/libnss_files-2.17.so
7f20ec7ae000-7f20ec9ad000 —p 0000c000 08:02 33792348                   /usr/lib64/libnss_files-2.17.so
7f20ec9ad000-7f20ec9ae000 r–p 0000b000 08:02 33792348                   /usr/lib64/libnss_files-2.17.so
7f20ec9ae000-7f20ec9af000 rw-p 0000c000 08:02 33792348                   /usr/lib64/libnss_files-2.17.so
7f20ec9af000-7f20ec9b5000 rw-p 00000000 00:00 0
7f20ec9b5000-7f20ecb6d000 r-xp 00000000 08:02 33792330                   /usr/lib64/libc-2.17.so
7f20ecb6d000-7f20ecd6d000 —p 001b8000 08:02 33792330                   /usr/lib64/libc-2.17.so
7f20ecd6d000-7f20ecd71000 r–p 001b8000 08:02 33792330                   /usr/lib64/libc-2.17.so
7f20ecd71000-7f20ecd73000 rw-p 001bc000 08:02 33792330                   /usr/lib64/libc-2.17.so
7f20ecd73000-7f20ecd78000 rw-p 00000000 00:00 0
7f20ecd78000-7f20ecd7a000 r-xp 00000000 08:02 33792336                   /usr/lib64/libdl-2.17.so
7f20ecd7a000-7f20ecf7a000 —p 00002000 08:02 33792336                   /usr/lib64/libdl-2.17.so
7f20ecf7a000-7f20ecf7b000 r–p 00002000 08:02 33792336                   /usr/lib64/libdl-2.17.so
7f20ecf7b000-7f20ecf7c000 rw-p 00003000 08:02 33792336                   /usr/lib64/libdl-2.17.so
7f20ecf7c000-7f20ecfa1000 r-xp 00000000 08:02 33792448                   /usr/lib64/libtinfo.so.5.9
7f20ecfa1000-7f20ed1a1000 —p 00025000 08:02 33792448                   /usr/lib64/libtinfo.so.5.9
7f20ed1a1000-7f20ed1a5000 r–p 00025000 08:02 33792448                   /usr/lib64/libtinfo.so.5.9
7f20ed1a5000-7f20ed1a6000 rw-p 00029000 08:02 33792448                   /usr/lib64/libtinfo.so.5.9
7f20ed1a6000-7f20ed1c7000 r-xp 00000000 08:02 33792323                   /usr/lib64/ld-2.17.so
7f20ed3b0000-7f20ed3b3000 rw-p 00000000 00:00 0
7f20ed3bd000-7f20ed3be000 rw-p 00000000 00:00 0
7f20ed3be000-7f20ed3c5000 r–s 00000000 08:02 100902881                  /usr/lib64/gconv/gconv-modules.cache
7f20ed3c5000-7f20ed3c7000 rw-p 00000000 00:00 0
7f20ed3c7000-7f20ed3c8000 r–p 00021000 08:02 33792323                   /usr/lib64/ld-2.17.so
7f20ed3c8000-7f20ed3c9000 rw-p 00022000 08:02 33792323                   /usr/lib64/ld-2.17.so
7f20ed3c9000-7f20ed3ca000 rw-p 00000000 00:00 0
7fff5dfec000-7fff5e00d000 rw-p 00000000 00:00 0                          [stack]
7fff5e0f2000-7fff5e0f4000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
系统监控工具:      c/s服务模式
   glances命令:EPEL源
   glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-
t refresh] [-f file] [-o output]
   内建命令:
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats
系统监控工具
  常用选项:
-b: 以Byte为单位显示网卡数据速率
-d: 关闭磁盘I/O模块
-f /path/to/somefile: 设定输入文件位置
-o {HTML|CSV}:输出格式
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显示
系统监控工具
  C/S模式下运行glances命令
  服务器模式:
glances -s -B IPADDR
IPADDR: 指明监听的本机哪个地址
  客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址
glances用法:
[root@centos6 ~]#glances -s -B 192.168.30.102
Glances server is running on 192.168.30.102:61209
[root@CENTOS7 ~]#glances -c 192.168.30.101
Connected to CENTOS7.localdomain (CentOS Linux 7.4.1708 64bit / Linux 3.10.0-693.el7.x86_64)             Uptime: 2:34:30
CPU  [       1.8%]   CPU       1.8%  nice:     0.0%   MEM     75.4%  active:     351M   SWAP      0.7%   LOAD    4-core
MEM  [||||  75.4%]   user:     1.1%  irq:      0.0%   total:  1.05G  inactive:   361M   total:   2.00G   1 min:    0.00
SWAP [       0.7%]   system:   0.6%  iowait:   0.0%   used:    810M  buffers:     36K   used:    14.0M   5 min:    0.03
                     idle:    98.3%  steal:    0.0%   free:    264M  cached:     161M   free:    1.99G   15 min:   0.05
NETWORK     Rx/s   Tx/s   TASKS 212 (417 thr), 1 run, 211 slp, 0 oth sorted automatically by memory_percent, flat view
eth0        144b   928b
eth1         5Kb     0b     CPU%  MEM%  VIRT   RES   PID USER        NI S     TIME+ IOR/s IOW/s Command
lo          38Kb   38Kb      0.0  12.0 1.70G  128M  1423 root         0 S   0:14.14     0     0 /usr/bin/gnome-shell
                             0.0   4.4 1.05G 47.0M  1615 root         0 S   0:00.85     0     0 /usr/libexec/evolution-c
DISK I/O     R/s    W/s      0.0   4.0 1.06G 43.5M  1815 root         0 S   0:00.33     0     0 /usr/libexec/evolution-c
dm-0           0      0      0.0   4.0 1.14G 43.4M  1802 root         0 S   0:00.30     0     0 /usr/libexec/evolution-c
dm-1           0      0      0.0   3.3 1024M 35.5M  1617 root         0 S   0:02.83     0     0 /usr/bin/gnome-software
sda1           0      0      1.2   1.7  232M 18.7M  4471 root         0 S   0:00.51     0     0 /usr/bin/python /bin/gla
sda2           0      0      0.0   1.6  549M 16.8M  1020 root         0 S   0:03.55     0     0 /usr/bin/python -Es /usr
sda3           0      0      5.8   1.5  221M 15.8M  4465 root         0 R   0:02.56     0     0 /usr/bin/python /bin/gla
sda4           0      0      0.0   1.4  303M 14.7M  1132 root         0 S   0:01.48     0     0 /usr/bin/X :0 -backgroun
sda5           0      0      0.0   1.4  111M 14.6M   796 root         0 S   0:00.31     0     0 /sbin/dhclient -d -q -sf
sda6           0      0      0.0   1.3  111M 14.3M   797 root         0 S   0:00.19     0     0 /sbin/dhclient -d -q -sf
sdb1           0      0
sdb2           0      0   Warning or critical alerts (one entry)
系统监控工具
  dstat命令:系统资源统计,代替vmstat,iostat
  dstat [-afv] [options..] [delay [count]]
-c: 显示cpu相关信息
-C #,#,…,total
-d: 显示disk相关信息
-D total,sda,sdb,…
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
–tcp
–udp
–unix
–raw
–socket
–ipc
–top-cpu:显示最占用CPU的进程
–top-io: 显示最占用io的进程
–top-mem: 显示最占用内存的进程
–top-latency: 显示延迟最大的进程
[root@CENTOS7 ~]#dstat 1       每秒刷新一次
You did not select any stats, using -cdngy by default.
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   1  98   1   0   0| 116k   13k|   0     0 |  38B 2432B| 179   120
  0   0 100   0   0   0|   0     0 |1073B  842B|   0     0 | 156   135
  0   0 100   0   0   0|   0     0 |1038B  362B|   0     0 | 126   111
  0   1  99   0   0   0|   0     0 |1165B  362B|   0     0 | 239   171
[root@CENTOS7 ~]#dstat –top-cpu     查看CUP 使用率最大的程序
-most-expensive-
  cpu process
ping         0.1
ping          24
ping          24
ping          25
iotop
   iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其
中包括PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO
   iotop输出
第一行:Read和Write速率总计
第二行:实际的Read和Write速率
第三行:参数如下:
线程ID(按p切换为进程ID)
优先级
用户
磁盘读速率
磁盘写速率
swap交换百分比
IO等待所占的百分比
线程/进程命令
iotop常用参数
  -o, –only只显示正在产生I/O的进程或线程,除了传参,可以在运行过程中按o
生效
  -b, –batch非交互模式,一般用来记录日志
  -n NUM, –iter=NUM设置监测的次数,默认无限。在非交互模式下很有用
  -d SEC, –delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1
  -p PID, –pid=PID指定监测的进程/线程
  -u USER, –user=USER指定监测某个用户产生的I/O
  -P, –processes仅显示进程,默认iotop显示所有线程
  -a, –accumulated显示累积的I/O,而不是带宽
  -k, –kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本
编程有用
iotop常用参数和快捷键
  -t, –time 加上时间戳,非交互非模式
  -q, –quiet 禁止头几行,非交互模式,有三种指定方式
   -q 只在第一次监测时显示列名
   -qq 永远不显示列名
   -qqq 永远不显示I/O汇总
  交互按键
left和right方向键:改变排序
r:反向排序
o:切换至选项–only
p:切换至–processes选项
a:切换至–accumulated选项
q:退出
i:改变线程的优先级
[root@CENTOS7 ~]#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
   PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
  3024 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.04 % [kworker/3:0]
  1536 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % goa-identity-service
进程管理工具
   kill命令:
向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头
(可省略),不区分大小写
显示当前系统可用信号: kill –l,trap -l
常用信号:man 7 signal
1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
3) SIGQUIT:相当于ctrl+\        相当于quit
9) SIGKILL: 强制杀死正在运行的进程
15) SIGTERM:终止正在运行的进程
18) SIGCONT:继续运行
19) SIGSTOP:后台休眠
指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP  (3) 信号的简写名称:HUP
[root@CENTOS7 ~]#ss -ntl
State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port
LISTEN     0      128                              *:111                                          *:*
LISTEN     0      128                              *:22                                           *:*
LISTEN     0      128                      127.0.0.1:631                                          *:*
LISTEN     0      100                      127.0.0.1:25                                           *:*
LISTEN     0      128                             :::111                                         :::*
LISTEN     0      128                             :::80                                          :::*
LISTEN     0      128                             :::22                                          :::*
LISTEN     0      128                            ::1:631                                         :::*
LISTEN     0      100                            ::1:25                                          :::*
[root@CENTOS7 ~]#ps aux | grep httpd
root       2127  0.0  0.2 226240  3072 ?        Ss   09:10   0:01 /usr/sbin/httpd -DFOREGROUND
apache     2129  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2130  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2131  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2132  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2133  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
root       4958  0.0  0.0 112664   972 pts/0    S+   11:57   0:00 grep –color=auto httpd
[root@CENTOS7 ~]#vim /etc/httpd/conf/httpd.conf
User daemon
Group apache
[root@CENTOS7 ~]#ps aux | grep httpd
root       2127  0.0  0.2 226240  3072 ?        Ss   09:10   0:02 /usr/sbin/httpd -DFOREGROUND
apache     2129  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2130  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2131  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2132  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
apache     2133  0.0  0.2 228324  2380 ?        S    09:10   0:00 /usr/sbin/httpd -DFOREGROUND
root       5529  0.0  0.0 112664   968 pts/0    S+   12:39   0:00 grep –color=auto httpd
[root@CENTOS7 ~]#systemctl restart httpd
[root@CENTOS7 ~]#ps aux | grep httpd
root       5556  0.9  0.4 226240  5132 ?        Ss   12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5558  0.1  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5559  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5560  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5561  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5562  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
root       5564  0.0  0.0 112660   972 pts/0    R+   12:40   0:00 grep –color=auto httpd
[root@CENTOS7 ~]#vim /etc/httpd/conf/httpd.conf
User apache
Group apache
[root@CENTOS7 ~]#ps aux | grep httpd
root       5556  0.2  0.4 226240  5132 ?        Ss   12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5558  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5559  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5560  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5561  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
daemon     5562  0.0  0.2 228324  3152 ?        S    12:40   0:00 /usr/sbin/httpd -DFOREGROUND
root       5586  0.0  0.0 112660   972 pts/0    R+   12:42   0:00 grep –color=auto httpd
[root@CENTOS7 ~]#kill -1 5556
[root@CENTOS7 ~]#ps aux | grep httpd
root       5556  0.1  0.4 226236  5100 ?        Ss   12:40   0:00 /usr/sbin/httpd -DFOREGROUND
root       5589  0.0  0.0 112660   968 pts/0    S+   12:42   0:00 grep –color=auto httpd
[root@CENTOS7 ~]#ps aux | grep httpd
root       5556  0.1  0.4 226240  5160 ?        Ss   12:40   0:00 /usr/sbin/httpd -DFOREGROUND
apache     5591  0.0  0.2 228324  3132 ?        S    12:43   0:00 /usr/sbin/httpd -DFOREGROUND
apache     5592  0.0  0.2 228324  3128 ?        S    12:43   0:00 /usr/sbin/httpd -DFOREGROUND
apache     5593  0.0  0.2 228324  3148 ?        S    12:43   0:00 /usr/sbin/httpd -DFOREGROUND
apache     5594  0.0  0.2 228324  3148 ?        S    12:43   0:00 /usr/sbin/httpd -DFOREGROUND
apache     5595  0.0  0.2 228324  3148 ?        S    12:43   0:00 /usr/sbin/httpd -DFOREGROUND
root       5597  0.0  0.0 112664   972 pts/0    S+   12:43   0:00 grep –color=auto httpd
用kill -1 pid 使进程重读配置文件时,有的进程好用,有的不好用,父进程pid不变,旗下的子进程pid发生改变。
[root@CENTOS7 ~]#pidof ping
5657
[root@CENTOS7 ~]#kill -2 5657       -2 相当于Ctrl + c
[root@CENTOS7 ~]#pidof bc
5735
[root@CENTOS7 ~]#kill -3 5735       -3 相当于quit
[root@CENTOS7 ~]#pidof ping
5760
[root@CENTOS7 ~]#kill -15 5760       -15 相当于正常退出
[root@centos6 ~]#ps aux | grep minget*       mingetty是登录界面进程,是再生进程
root       2932  0.0  0.0   4068   544 tty2     Ss+  08:42   0:00 /sbin/mingetty /dev/tty2
root       2934  0.0  0.0   4068   540 tty3     Ss+  08:42   0:00 /sbin/mingetty /dev/tty3
root       2936  0.0  0.0   4068   540 tty4     Ss+  08:42   0:00 /sbin/mingetty /dev/tty4
root       2938  0.0  0.0   4068   544 tty5     Ss+  08:42   0:00 /sbin/mingetty /dev/tty5
root       2940  0.0  0.0   4068   544 tty6     Ss+  08:42   0:00 /sbin/mingetty /dev/tty6
root       4416  0.0  0.0 103336   972 pts/0    S+   12:43   0:00 grep –color=auto minget*
[root@centos6 ~]#kill -15 2932       这种进程杀不死,以为它是再生进程
[root@centos6 ~]#ps aux | grep minget*
root       2934  0.0  0.0   4068   540 tty3     Ss+  08:42   0:00 /sbin/mingetty /dev/tty3
root       2936  0.0  0.0   4068   540 tty4     Ss+  08:42   0:00 /sbin/mingetty /dev/tty4
root       2938  0.0  0.0   4068   544 tty5     Ss+  08:42   0:00 /sbin/mingetty /dev/tty5
root       2940  0.0  0.0   4068   544 tty6     Ss+  08:42   0:00 /sbin/mingetty /dev/tty6
root       4418  1.0  0.0   4068   536 tty2     Ss+  12:44   0:00 /sbin/mingetty /dev/tty2
root       4420  0.0  0.0 103336   972 pts/0    S+   12:44   0:00 grep –color=auto minget*
[root@centos6 ~]#kill -9 1      虽然杀不死1 进程,但是已经对1进程造成了损坏,这是再生进程就可以杀死。破坏符进程,到时再生进程不可再生
[root@centos6 ~]#kill -15 2932
[root@centos6 ~]#ps aux | grep minget*
root       2934  0.0  0.0   4068   540 tty3     Ss+  08:42   0:00 /sbin/mingetty /dev/tty3
root       2936  0.0  0.0   4068   540 tty4     Ss+  08:42   0:00 /sbin/mingetty /dev/tty4
root       2938  0.0  0.0   4068   544 tty5     Ss+  08:42   0:00 /sbin/mingetty /dev/tty5
root       2940  0.0  0.0   4068   544 tty6     Ss+  08:42   0:00 /sbin/mingetty /dev/tty6
root       4420  0.0  0.0 103336   972 pts/0    S+   12:44   0:00 grep –color=auto minget*
进程管理工具
  按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid;kill –s SIGNAL pid
  按名称:killall [-SIGNAL] comm…
  按模式:pkill [options] pattern
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程
kill -number pid
killall cmd
pkill
[root@CENTOS7 ~]#pgrep -at pts/1
2049 -bash
2134 su –
2138 -bash
6030 sleep 123
[root@CENTOS7 ~]#pkill -9 -t pts/1    强制杀掉pts/1上的所有进程
作业管理
  Linux的作业控制
前台作业:通过终端启动,且启动后一直占据终端;
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
  让作业运行于后台
(1) 运行中的作业:  Ctrl+z
(2) 尚未启动的作业: COMMAND &
  后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望
送往后台后,剥离与终端的关系
nohup COMMAND &>/dev/null &
screen;COMMAND
  查看当前终端所有作业:jobs
  作业控制:
fg [[%]JOB_NUM]:把指定的后台作业调回前台
bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
kill [%JOB_NUM]: 终止指定的作业
ping 172.18.0.1 &    让ping后台运行,信息仍在终端上显示,但是可以执行别的命令。
输入jobs查看后台运行的编号,fg +编号 恢复到前台
一个前天运行的命令ping172.18.0.1想要后台运行按Ctrl+z。
[root@CENTOS7 ~]#ping 127.0.0.2
PING 127.0.0.2 (127.0.0.2) 56(84) bytes of data.
64 bytes from 127.0.0.2: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 127.0.0.2: icmp_seq=2 ttl=64 time=0.080 ms
64 bytes from 127.0.0.2: icmp_seq=3 ttl=64 time=0.077 ms
64 bytes from 127.0.0.2: icmp_seq=4 ttl=64 time=0.080 ms
^Z
[1]+  Stopped                 ping 127.0.0.2        Ctrl+z     后台停止运行。
bg 1   开始后台运行
ping 172.18.0.1 &
pidof ping
7421
kill -19 7421或者 killall -19 ping
jobs     只在当前终端当前bash下好用
[root@CENTOS7 ~]#jobs
[1]+  Stopped                 ping 127.0.0.1
后台继续运行 bg 1 或者 killall -18 ping
kill %jobsnumber 停止后台程序
后台运行的程序任然与终端有关,jobs命令只在程序运行的终端有效,在别的终端无法查看。
后台执行的命令一但断网也会停止执行,可以在screen中运行程序ping172.20.0.1这样即使断网,在网络恢复后可以screen -r继续这个程序
后台执行的命令一但断网也会停止执行,也可以用nohup ping172.20.0.1 & 即使断网也会继续执行,将执行结果保存在 nohup.out中
断网后,ping命令的进程树会自动切换到init(centos6)或者systemd(centos7)的子进程
并行运行
  同时运行多个进程,提高效率
  方法1
vi all.sh
f1.sh&
f2.sh&
f3.sh&
  方法2
(f1.sh&);(f2.sh&);(f3.sh&)
  方法3
{ f1.sh& f2.sh& f3.sh& }
多任务并行运行:
[root@centos6 ~]#vim morejobs.sh
#!/bin/bash
#
#********************************************************************
#Author:                wangxiaochun
#QQ:                    29308620
#Date:                  2018-05-05
#FileName:             morejobs.sh
#URL:                   http://www.magedu.com
#Description:          The test script
#Copyright (C):         2018 All rights reserved
#******************************************************************
ping 127.1 &
ping 127.2 &
ping 127.3 &
~
(ping 127.1 &) ; (ping 127.2 &) ; (ping 127.3 &)
{ ping 127.1 & ping 127.2 & ping 127.3 & }
任务计划
  Linux任务计划、周期性任务执行
  未来的某时间点执行一次任务
at
batch:系统自行选择空闲时间去执行此处指定的任务
  周期性运行某任务
cron
at任务
   包:at
   at命令:at [option] TIME
   常用选项:
-V 显示版本信息:
-l: 列出指定队列中等待运行的作业;相当于atq
-d: 删除指定的作业;相当于atrm
-c: 查看具体作业任务
-f /path/from/somefile:从指定的文件中读取任务
-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出
   注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户
   TIME:定义出什么时候进行 at 这项任务的时间
HH:MM [YYYY-mm-dd]
noon, midnight, teatime(4pm)
tomorrow
now+#{minutes,hours,days, OR weeks}
[root@CENTOS7 ~]#systemctl status atd       查看atd服务是否开启
● atd.service – Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-05 09:01:10 CST; 6h ago
 Main PID: 1031 (atd)
   CGroup: /system.slice/atd.service
           └─1031 /usr/sbin/atd -f
May 05 09:01:10 CENTOS7.localdomain systemd[1]: Started Job spooling tools.
May 05 09:01:10 CENTOS7.localdomain systemd[1]: Starting Job spooling tools…
[root@centos6 ~]#service atd status
atd (pid  2893) is running…
[root@centos6 ~]#at -V
at version 3.1.10
[root@CENTOS7 ~]#at -V
at version 3.1.13
[root@CENTOS7 ~]#vim /etc/chrony.conf   自动同步时间,但是不能和服务器的时间相差太多事同步。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 172.20.0.1 iburst
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
ntpdate 172.20.0.1
systemctl start chronyd
systemctl enable chronyd
[root@CENTOS7 ~]#systemctl status chronyd
● chronyd.service – NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-05 15:56:40 CST; 3min 36s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 9271 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 9267 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 9269 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─9269 /usr/sbin/chronyd
May 05 15:56:40 CENTOS7.localdomain systemd[1]: Starting NTP client/server…
May 05 15:56:40 CENTOS7.localdomain chronyd[9269]: chronyd version 3.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +…EBUG)
May 05 15:56:40 CENTOS7.localdomain systemd[1]: Started NTP client/server.
May 05 15:56:57 CENTOS7.localdomain chronyd[9269]: Selected source 172.20.0.1
May 05 15:56:57 CENTOS7.localdomain chronyd[9269]: System clock wrong by 88.078821 seconds, adjustment started
May 05 15:58:25 CENTOS7.localdomain chronyd[9269]: System clock was stepped by 88.078821 seconds
May 05 15:58:26 CENTOS7.localdomain chronyd[9269]: Source 120.25.108.11 replaced with 193.228.143.12
Hint: Some lines were ellipsized, use -l to show in full.
[root@centos6 ~]#ntpdate 172.20.0.1
 5 May 16:04:29 ntpdate[6818]: step time server 172.20.0.1 offset 1207.025516 sec
[root@centos6 ~]#vim /etc/ntp.conf
server 172.20.0.1 iburst
[root@centos6 ~]#service ntpd start
Starting ntpd:                                             [  OK  ]
[root@centos6 ~]#chkconfig –list                  查看系统中开启的服务
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
abrt-ccpp       0:off 1:off 2:off 3:on 4:off 5:on 6:off
abrtd           0:off 1:off 2:off 3:on 4:off 5:on 6:off
[root@centos6 ~]#cat /etc/inittab
#   0 – halt (Do NOT set initdefault to this)
#   1 – Single user mode
#   2 – Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 – Full multiuser mode
#   4 – unused
#   5 – X11
#   6 – reboot (Do NOT set initdefault to this)
[root@centos6 ~]#chkconfig ntpd on        开机自动启动
[root@centos6 ~]#service ntpd status
ntpd (pid  6854) is running…
at 一次性计划任务的用法
[root@CENTOS7 d2]#at 17:00
at> rm -rf /data/d1/d2/d3
at> touch f1 /data/d1/d2
at> <EOT>
job 2 at Sat May  5 17:00:00 2018
[root@CENTOS7 d2]#at -l       查看有没有计划任务
2 Sat May  5 17:00:00 2018 a root
[root@CENTOS7 ~]#at -c 2      查看这个计划具体内容
#!/bin/sh
# atrun uid=0 gid=0
# mail wang 0
rm -rf /data/d1/d2/d3
touch f1 /data/d1/d2
marcinDELIMITER70628090
[root@CENTOS7 ~]#ls /var/spool/at/a000020183f51c     这个计划存放在磁盘上的位置。
/var/spool/at/a000020183f51c
at时间格式
  HH:MM 02:00
在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
  HH:MM YYYY-MM-DD 02:00 2016-09-20
规定在某年某月的某一天的特殊时刻进行该项任务
  HH:MM[am|pm] [Month] [Date]
04pm March 17
17:20 tomorrow
  HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某个时间点再加几个时间后才进行该项任务
now + 5 minutes
02pm + 3 days
[root@CENTOS7 ~]#at now + 15minutes
at> touch ffffffffffffff /data
at> <EOT>
job 3 at Sat May  5 16:50:00 2018
[root@CENTOS7 ~]#at -l
2 Sat May  5 17:00:00 2018 a root
3 Sat May  5 16:50:00 2018 a root
[root@CENTOS7 ~]#at -c 3
touch ffffffffffffff /data
删除计划任务
at -d 2
cat > f1
reboot
echo 123456789
at -f f1 17:50 + 1days
at now + 25hours < f1
如果计划任务中的命令有标准输出,并不会在终端上显示,会以邮件的方式发送给用户。
在脚本中将标准输出都从定向到/dev/null
如果想确定计划任务执行没执行,可以at -m -f f1 17:50 + 1days  这样即使计划中没有标准输出也会给
用户发一个空邮件在告诉用户计划已经执行。
[root@CENTOS7 ~]#echo wall lushen will be died | at now + 1minutes
job 4 at Sat May  5 16:56:00 2018
[root@CENTOS7 ~]#
Broadcast message from root@CENTOS7.localdomain (Sat May  5 16:56:00 2018):
lushen will be died
at任务
?执行方式:
1)交互式 2)输入重定向 3)at –f 文件
?依赖与atd服务,需要启动才能实现at任务
?at队列存放在/var/spool/at目录中
?/etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在
at.deny 文件中的使用者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令
[root@CENTOS7 ~]#cat /etc/at.deny    黑名单
默认下没有白名单需要手工创建
将用户加入黑名单中这个用户就无法创建计划任务,但是不在黑名单中的用户不受影响,如果将用户同时放到白名单和黑名单中,白名单生效
而且除了白名单中的用户,其他用户都不可以创建计划任务。如果黑白名单有没有只有root能执行计划任务
在脚本中编写at任务
#! /bin/bash
at 18:00 << 123
halt
123
周期性任务计划cron
  周期性任务计划:cron
  相关的程序包:
cronie: 主程序包,提供crond守护进程及相关辅助工具
cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如
cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次
此任务
crontabs:包含CentOS提供系统维护任务
[root@CENTOS7 ~]#cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .—————- minute (0 – 59)
# |  .————- hour (0 – 23)
# |  |  .———- day of month (1 – 31)
# |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr …
# |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 0  2   *   *  1-5  wang  cp -p /etc /data/ > /dev/null     周一到周五每天晚上2天备份文件/etc到/data下
 0  2  1,10,20 * 0,6  wang tar -Jcpf /data/etc.tar.xz /etc/ > /dev/null
这里1,10,20 和 0,6 是或者的意思,如果想完成并且的关系
需要些脚本判断今天是不是周六周日如果是则打包,如果不是则不打包。
*/10 2 * * * root wall hello     每10分钟root发送一次广播内容是hello
@reboot root rm -rf /data/*     重启的时候已root的身份清空/data,只要关机启动就算一次重启
计划任务
?确保crond守护处于运行状态:
CentOS 7:
systemctl status crond
CentOS 6:
service crond status
?计划周期性执行的任务提交给crond,到指定时间会自动运行
系统cron任务:系统维护作业
/etc/crontab
用户cron任务:
crontab命令
?日志:/var/log/cron
计划任务
  系统cron任务:/etc/crontab
  注释行以 # 开头
  详情参见 man 5 crontab
# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
  例如:晚上9点10分运行echo命令
10 21 * * *  centos /bin/echo “Howdy!”
计划任务
  时间表示法:
  (1) 特定值
给定时间点有效取值范围内的值
  (2) *
给定时间点上有效取值范围内的所有值
表示“每…”
  (3) 离散取值
#,#,#
  (4) 连续取值
#-#
  (5) 在指定时间范围上,定义步长
/#: #即为步长
时间格式
  @reboot Run once after reboot
  @yearly 0 0 1 1 *
  @annually  0 0 1 1 *
  @monthly  0 0 1 * *
  @weekly 0 0 * * 0
  @daily  0 0 * * *
  @hourly 0 * * * *
  示例:每3小时echo和wall命令
0 */3 * * * centos /bin/echo “howdy”;/usr/bin/wall “welcome to Magedu!”  发邮件
[wang@CENTOS7 ~]$crontab -e
 * * * * * wall lu shen is a shabi
~
[wang@CENTOS7 ~]$
Broadcast message from wang@CENTOS7.localdomain (Sat May  5 19:11:01 2018):
lu shen is a shabi
[wang@CENTOS7 ~]$vim /var/spool/cron/wang
/var/spool/cron/wang” [Permission Denied]
wang用户无法直接编辑这个文件,但是可以使用命令crontab -e 来编辑这个文件
因为 crontab 命令有 sgid 。
[wang@CENTOS7 ~]$crontab -l -u root    只有root能够运行
must be privileged(特权) to use -u
计划任务
  系统的计划任务:
/etc/crontab
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 脚本
/etc/cron.daily/ 脚本
/etc/cron.weekly/  脚本
/etc/cron.monthly/  脚本
用户计划任务
  crontab命令定义
每个用户都有专用的cron任务文件:  /var/spool/cron/USERNAME
  crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-l: 列出所有任务
-e: 编辑任务
-r: 移除所有任务
-i:同-r一同使用,以交互式模式移除指定任务
-u user: 仅root可运行,指定用户管理cron任务
   控制用户执行计划任务:
/etc/cron.{allow,deny}   与at 文件的黑白名单一样,如果是在加入黑名单之前创建的计划任务可以继续执行,但是无法再创建计划任务。
at和crontab
  一次性作业使用 at
  重复性作业使用crontab
Create            at  time   crontab -e
List  at -l crontab -l
Details  at -c jobnum N/A
Remove  at -d jobnum crontab -r
Edit (编辑修改)   N/A crontab -e
  没有被重定向的输出会被邮寄给用户
  根用户能够修改其它用户的作业
每十分钟检查一下磁盘利用率,大于 80 报警。
[root@CENTOS7 ~]#df | sed -r -n ‘s@^/dev/sd.*[ ]+([[:digit:]]{,3})%.*@\1@p’
10
1
16
[root@CENTOS7 ~]#df | grep /dev/sd | sed -r ‘s@.*[ ]+([0-9]{,3})%.*@\1@’ | sort -nr | head -n 1
16
[root@CENTOS7 ~]#df -i | grep /dev/sd | sed -r ‘s@.*[ ]+([0-9]{,3})%.*@\1@’ | sort -nr | head -n 1
1
1
1
耗光节点编号 echo f{1..523959} | xargs -n 100 touch
[root@CENTOS7 ~]#vim diskspace.sh
#!/bin/bash
#
#********************************************************************
#Author:                wangxiaochun
#QQ:                    29308620
#Date:                  2018-05-05
#FileName:             diskspace.sh
#URL:                   http://www.magedu.com
#Description:          The test script
#Copyright (C):         2018 All rights reserved
#********************************************************************
a=df | grep /dev/sd | sed -r 's@.*[ ]+([0-9]{,3})%.*@\1@' | sort -nr | head -n 1
b=df -i | grep /dev/sd | sed -r 's@.*[ ]+([0-9]{,3})%.*@\1@' | sort -nr | head -n 1
[ “$a” -ge 80 -o “$b” -ge 80 ] &&echo  “your disk will be full” ||echo  “your disk is ok”
[root@CENTOS7 ~]#vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .—————- minute (0 – 59)
# |  .————- hour (0 – 23)
# |  |  .———- day of month (1 – 31)
# |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr …
# |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
@reboot root reboot                                 一但重启则无限循环重启
解决无限重启办法:
centos7
vim /sysroot/etc/crontab
@reboot root reboot
boot menu kernel e
linux16 加 rd.break
ctrl+x
mount -o remount,rw /sysroot
vim /sysroot/etc/crontab
centos6
a
加 空格 1 enter
vim /sysroot/etc/crontab
init 5
在一个目录/data/下放上多个脚本比如
f2.sh
f1.sh
run-paths /data
就会把 /data中的脚本全部运行
anacron系统
  运行计算机关机时cron不运行的任务,CentOS6以后版本取消anacron服务,由
crond服务管理
  对笔记本电脑、台式机、工作站、偶尔要关机的服务器及其它不一直开机的系统
很重要对很有用
  配置文件:/etc/anacrontab,负责执行/etc/ cron.daily /etc/cron.weekly
/etc/cron.monthly中系统任务。
  字段1:如果在这些日子里没有运行这些任务……
  字段2:在重新引导后等待这么多分钟后运行它
  字段3:任务识别器,在日志文件中标识
  字段4:要执行的任务
  由/etc/cron.hourly/0anacron执行
  当执行任务时,更新/var/spool/anacron/cron.daily 文件的时间戳
[root@CENTOS7 ~]#cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days   delay in minutes   job-identifier   command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
周期性任务计划cron
  周期性任务计划:cron
  相关的程序包:
cronie: 主程序包,提供crond守护进程及相关辅助工具
cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如
cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次
此任务
crontabs:包含CentOS提供系统维护任务
[root@CENTOS7 ~]#ll /etc/cron.*                  系统自带的计划任务
-rw——-. 1 root root  0 Aug  3  2017 /etc/cron.deny
/etc/cron.d:
total 12
-rw-r–r–. 1 root root 128 Aug  3  2017 0hourly
-rw-r–r–. 1 root root 108 Jun 13  2017 raid-check
-rw——-. 1 root root 235 Aug  3  2017 sysstat
/etc/cron.daily:
total 12
-rwx——. 1 root root 219 Aug  2  2017 logrotate     生成一个滚动日志目录
-rwxr-xr-x. 1 root root 618 Mar 18  2014 man-db.cron     生成whatis数据库
-rwx——. 1 root root 208 Nov  5  2016 mlocate         创建locate索引
/etc/cron.hourly:
total 8
-rwxr-xr-x. 1 root root 392 Aug  3  2017 0anacron
-rwxr-xr-x. 1 root root 191 Aug  4  2017 mcelog.cron
/etc/cron.monthly:
total 0
/etc/cron.weekly:
total 0
管理临时文件
  CentOS6使用/etc/cron.daily/tmpwatch定时清除临时文件
  CentOS7使用systemd-tmpfiles-setup服务实现
  配置文件:
  /etc/tmpfiles.d/*.conf
  /run/tmpfiles.d/*.conf
  /usr/lib/tmpfiles/*.conf
  /usr/lib/tmpfiles.d/tmp.conf
  d /tmp 1777 root root 10d
  d /var/tmp 1777 root root 30d
  命令:
  systemd-tmpfiles –clean|remove|create configfile
[root@centos6 ~]#ll /etc/cron.daily
total 28
-rwx——. 1 root root  118 Mar 22  2017 cups
-rwx——. 1 root root  180 Jul 10  2003 logrotate
-rwx——. 1 root root  927 Mar 22  2017 makewhatis.cron
-rwx——. 1 root root  189 Jan 26  2015 mlocate.cron
-rwxr-xr-x. 1 root root 2126 Jul 19  2013 prelink
-rwxr-xr-x. 1 root root  563 Nov 23  2013 readahead.cron
-rwxr-xr-x. 1 root root  433 Nov  7  2015 tmpwatch       每天清除垃圾临时文件
[root@centos6 ~]#cat /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch “$flags” -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X ‘/tmp/hsperfdata_*’ -X ‘/tmp/.hdb*lock’ -X ‘/tmp/.sapstartsrv*.log’ \
-X ‘/tmp/pymp-*’ 10d /tmp     超过10天删除
/usr/sbin/tmpwatch “$flags” 30d /var/tmp     超过30天删除
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d “$d” ]; then
/usr/sbin/tmpwatch “$flags” -f 30d “$d”
    fi
done
计划任务
  注意:运行结果的标准输出和错误以邮件通知给相关用户
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
  对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义,将%
放置于单引号中,则可不用转义
在计划任务中放入 touch /data/date +%f.log
tail -f /var/spoll/cron 跟中日志文件发现放入中的命令%f不见了因为在计划任务中%有特殊用途。
所以这样写不行,可以将这个命令放入脚本中。在放入计划任务中执行。
计划任务
  思考:
  (1) 如何在秒级别运行任务?
* * * * * for min in 0 1 2; do echo “hi”; sleep 20; done
  (2) 如何实现每7分钟运行一次任务?   sleep 7m
  sleep命令:
sleep NUMBER[SUFFIX]…
SUFFIX:
s: 秒, 默认
m: 分
h: 小时
d: 天
usleep   微秒  1秒=1000000微秒
vim f1.sh
cmd 0
sleep 20
cmd 20
sleep 20
cmd 40
* * * * * f1.sh      每20秒执行一次cmd命令
vim f1.sh
cmd
sleep 20
f1.sh                自己调用自己变成死循环
流程控制
  过程式编程语言:
顺序执行
选择执行
循环执行
条件选择if语句
  选择执行:
  注意:if语句可嵌套
  单分支
if 判断条件;then
条件为真的分支代码
fi
  双分支
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
if 语句
  多分支
if 判断条件 1 ; then
条件为真的分支代码
elif 判断条件 2 ; then
条件为真的分支代码
elif 判断条件 3 ; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
  逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句
If示例
  根据命令的退出状态来执行命令
if ping -c1 -W2 station1 &> /dev/null; then
echo ‘Station1 is UP’
elif grep “station1” ~/maintenance.txt &> /dev/null
then
echo ‘Station1 is undergoing maintenance‘
else echo ‘Station1 is unexpectedly DOWN!’ exit 1
fi
用if语句判断年龄
[root@CENTOS7 ~]#vim test_age.sh
#!/bin/bash
#
#********************************************************************
#Author:                wangxiaochun
#QQ:                    29308620
#Date:                  2018-05-06
#FileName:             test_age.sh
#URL:                   http://www.magedu.com
#Description:          The test script
#Copyright (C):         2018 All rights reserved
#********************************************************************
read -p “please input your age :” AGE
[[ “$AGE” =~ ^[0-9]+$ ]] || { echo “your input is not a number” ; exit ; }
if [ “$AGE” -lt 18 ] ; then
        echo “good good study,day day up”
elif [ “$AGE” -ge 18 -a “$AGE” -lt 60 ] ; then
        echo “good good work”
elif [ “$AGE” -ge 60 -a “$AGE” -le 150 ] ; then
        echo “have a good time”
else
        echo “you are not from earth”
fi
如果条件(组合)过多就不适合用if
比如判断yes,no或者
1,2,3 cmd
4,5,6 cmd
7,8,9 cmd
if [ $num -eq 1 -o $num -eq 2 -o $num -eq 3 ] 写起来条件判断过长,这时用case。
case $num in
1|2|3)
cmd1
;;
4|5|6)
cmd2;
;;
7|8|9)
cmd3
;;
*)
cmd4
;;
esac
条件判断:case语句        case 适合条件是离散型的
case 变量引用 in                    case 后面的变量必须加$符号
PAT1)
分支1
;;
PAT2)
分支2
;;
*)
默认分支
;;
esac
case支持glob风格的通配符:
*: 任意长度任意字符
?: 任意单个字符
[]:指定范围内的任意单个字符
a|b: a或b
用case实现yes or no
[root@CENTOS7 ~]#vim test_case.sh
#!/bin/bash
#
#********************************************************************
#Author:                wangxiaochun
#QQ:                    29308620
#Date:                  2018-05-06
#FileName:             test_case.sh
#URL:                   http://www.magedu.com
#Description:          The test script
#Copyright (C):         2018 All rights reserved
#********************************************************************
read -p “do you agree:” ans
if [ -z “$ans” ] ; then
        echo “please input yes or no”
        exit
fi
case “$ans” in
[Yy] | [Yy][Ee][Ss])
        echo “your answer is yes”
        ;;
[Nn] | [Nn][Oo])
        echo “your answer is no”
        ;;
*)
        echo “your answer is false”
        ;;
esac

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97606

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班