linux 运维问题持续整理

1、RAID

(1)RAID技术

  • 通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高数据存取速度

  • 通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度

  • 通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护

(2) RAID说明

RAID0:通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间

RAID1:磁盘镜像,把一个磁盘的数据镜像到另一个磁盘上

RAID5:分布式奇偶校验的独立磁盘结构

冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10


2、写一个脚本实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线

#/bin/bash
#
for i in seq 1 255
do
    ping -c 1 192.168.1.$i >/dev/null 2>&1
    if (( $? -eq 0 ))
    then
        echo "192.168.1.$i is up"
    else
        echo "192.168.1.$i is down"
    fi
done


seq 1 5
结果:1 2 3 4 5
seq -s " " -w 1 5
结果:01 02 03 04 05

3、按照条件筛选文件

find:  find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
  查找其实路径:指定具体收拾目标起始路径,默认为当前目录
  查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等标准进行,默认为找出指定路径下的所有文件
  处理动作:对符合查找条件的文件做出的操作
  查找条件:
    -name 
    -iname    支持glob风格的通配符   * ? [] [^] ..
    -regex pattern 基于正在表达式模式查找文件
    -user USERNAME :根据属主名查找
    -group GROUPNAME :根据属组查找 
    -uid UID
    -gid GID 
    -type TYPE :根据文件类型查找   f d l b c p(管道) s 
    组合查找 与: -a    或 -o  非 -not or !   find /tmp -user root -a  -group root  -ls(处理动作)
    -size [+|-] #(k|M|G)      + 大于 - 小于 
    -atime  -ctime -mtime 
    atime:access time 
    ctime: change time 改变时间文件的元数据发生变化。比如权限,所有者等
    mtime: modify time 修改时间,文件内容被修改的最后时间
    根据权限查找: -perm [/|-]mode 
    处理动作: 
      -print:输出至标准输出,默认的动作
      -ls 输出文件的详细信息
      -delete 删除
      -fls /PATH/TO/SOMEFILE:查找到的文件的长葛市信息保存至指定文件中
      -ok COMMAND {}\ :对查找到的文件执行由COMMAND 表示的命令,每次操作由用户进行确认  find ./ -perm /002 -ok chown root:root {} \; 
      -exec COMMAND {}\;对查找到的文件执行由COMMAND 表示的命令
            eg: find ./ -perm /002 -exec mv {} {}.test \;
            
#示例
 * 查找

3、找出cpu排名前十的进程

ps aux | sort -nr -k 4 |head -10

4、随机生成指定长度字母

$RANDOM | md5sum | cut -c 1-10
随机生成指定长度密码:cat /dev/urandom | head -1 | md5sum | head -c 32
#!/bin/bash
#
dir=/oldboy
if [ -d $dir ];then
    mkdir $dir
fi

for i in seq 1 10
do 
    randomnum=$(echo $RANDOM | md5sum | cut -c 1-10)
    touch $dir/$randonnum.html
done



#!/bin/bash
#
declare -a t
read -p "please input:" t
for i in $t
do 
    len=$(expr length $i)
    if [[ $len -le 6 ]]
    then
        echo $i
    fi
done

5、如何查看http的并发请求数与其tcp连接状态

# 查看当前系统每个ip的连接数
netstat -n |awk '/^tcp/{print $5}'| awk -F: '{print $1}'|sort|uniq -c |sort -rn

# 查看http的并发请求数与其tcp连接状态
netstat -ant | awk '{print $NF}' | grep -v '[a-z]'| sort | uniq -c

# 查看请求数前20的ip
netstat -anlp|grep 80|grep tcp|gawk '{print $5}'|gawk -F: '{print $1}'|sort |uniq -c |sort -rn|head -20

#查看time_wait连接
netstat -n |grep TIME_WAIT|gawk '{print $5}'|sort|uniq -c|sort -rn|head -20

6、tcpdump抓包

#抓取指定网络流量并做切割
tcpdump tcp -i eth0 -t -s 0 -G 3600 -w ./1883_%Y%m%d-%H%M.cap and tcp port 1883 &

#tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4″.”}’ | sort |uniq -c | sort -nr | head-5

#tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
  命令格式:tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ][ -s snaplen ] [ -w file ] [ expression ]  # tcpdump [抓包选项] [输出选项] [表达式]
  抓包选项:
    -c:指定要抓取的包数量
    -i interface:指定tcpdump需要监听的接口,默认会抓取第一个网络接口
    -n:对地址以数字方式显示,否则显示为主机名,-n选项不做主机名解析
    -nn:除了-n的作用外,还把端口显示为数字,否则显示端口服务名
    -p:指定要抓取的包是流入还是流出的包,可以指定值为in,out,inout,默认值为inout
    -s len:设置tcpdump的数据包抓取长度为len
    -F:从文件中读取抓包表达式
    -b:在数据链路层上选择协议,包括ip,arp,rarp,ipx
  输出选项:
    -e:输出的每行中都包含数据链路层头部信息
    -q:快速打印输出,即打印很少的协议相关信心,从而输出行都比较简短
    -X:输出包的头部数据,会以16进制和ASCII两种方式同事输出
    -XX:输出包的头部数据,会以16进制和ASCII两种方式同事输出,更详细
    -v:当分析和打印的时候,产生纤细输出
    -vv
    -vvv
    -t:不在每一行中输出时间戳
    -tt:在每一行中输出非格式化的时间戳
    -ttt:输出本行和前面一行之间的时间差
    -w:将抓包数据输出到文件中
  其他选项:
    -D:列出可用于抓包的接口
    -L:列出网络接口的一直数据链路
    -r:从给定的数据包文件中读取数据
  expression:
    host IP :指明一台主机
    net:指明一个网络地址
    port:指明抓包端口
    src:指明源地址
    dst:指明目的地址
    协议关键字:fddi,ip,arp,rarp.tcp,udp
    逻辑:and or not
#示例
 * 监听指定主机的数据包: tcpdump -i ens163 host 172.16.0.107
 * 打印node1与node2或node1与node3之间通信的数据包
    tcpdump -i ens163 host node1 and \(node2 or node3\)
 * 打印node1与任何其他主机之间通信的IP数据包,但不包括与node4之间的数据包
    tcpdump -i ens33 host node1 and not node4

7、统计指定目录下有多少文件,多少目录

# 统计文件数
ls -lR /PATH/TO/DIR|grep "^-"|wc -l
# 统计目录数
ls -lR /PATH/TO/DIR|grep "^d"|wc -l
#获取基名与目录名:基名:basename  目录名:dirname

#!/bin/bash
#
#统计指定目录/data 各层目下有有多目录与文件(除了目录外其他如连接文件都算文件)



8、统计nginx中访问量最多的5个ip

cat access.log |gawk '{print $1}'|sort |uniq -c|sort -rn|head -5

9、如何查看二进制文件内容

我们一般通过hexdump命令 来查看二进制文件的内容。
hexdump -C XXX(文件名) -C是参数 不同的参数有不同的意义
-C 是比较规范的 十六进制和ASCII码显示
-c 是单字节字符显示
-b 单字节八进制显示
-o 是双字节八进制显示
-d 是双字节十进制显示
-x 是双字节十六进制显示

10、linux开机启动顺序

加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。

11、iptables与firewalld

#iptables
 - iptables结构:表、链、规则
   * 表:iptables里面有4个表: filter表、nat表、mangle表和raw表,分别用于实现包过滤、网络地址转换、包重构和数据追踪处理。规则表之间的优先顺序:Raw——mangle——nat——filter
   * 链:每个表包含多个链。链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策
   filter表——三个链:INPUT、FORWARD、OUTPUT;作用:过滤数据包 内核模块:iptables_filter.
   Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT;作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
   Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD;作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块
   Raw表——两个链:OUTPUT、PREROUTING;作用:决定数据包是否被状态跟踪机制处理
   
   
 - iptables语法
   * iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转
    表名、链名: 用于指定 iptables命令所操作的表和链
    命令选项: 用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等
    条件匹配: 用于指定对符合什么样条件的数据包进行处理
    目标动作或跳转: 用于指定数据包的处理方式(比如允许通过accept、拒绝reject、丢弃drop、跳转(Jump)给其它链处理,log在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。
   * 命令管理控制选项
     -A 在指定链的末尾添加(append)一条新的规则
     -D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
     -I 在指定链中插入(insert)一条新的规则,默认在第一行添加
     -R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
     -L 列出(list)指定链中所有的规则进行查看
     -E 重命名用户定义的链,不改变链本身
     -F 清空(flush)
     -N 新建(new-chain)一条用户自己定义的规则链
     -X 删除指定表中用户自定义的规则链(delete-chain)
     -P 设置指定链的默认策略(policy)
     -Z 将所有表的所有链的字节和数据包计数器清零
     -n 使用数字形式(numeric)显示输出结果
     -v 查看规则表详细信息(verbose)的信息
     -V 查看版本(version)
     -h 获取帮助(help)
  * 匹配条件
    -s SOURCEIP1,SOURCEIP2,...
    -d DSTIP1,DSTIP2,...
    -p 协议类型
    -i 网卡设备类型
    tcp扩展模块:
      -p tcp --dport 25:80目标端口
      -p tcp --sport 源端口
      -p tcp -m multiport --dport 22,36,80  离散端口
      -p tcp -m multiport --sport 22,36,80
示例:
 如果数据包的目的地址是本机,则系统将数据包送往Input链
 如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往Forward链
  * 删除INPUT链的第一条规则 iptables -D INPUT 1
  * 拒绝进入防火墙的所有ICMP协议数据包:iptables -I INPUT -p icmp -j REJECT
  * 允许防火墙转发除ICMP协议以外的所有数据包: iptables -A FORWARD -p ! icmp -j ACCEPT
  * 拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据:iptables -A FORWARD -s 192.168.1.11 -j REJECT 
       iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
  * 丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包:      iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP 
  * 封堵网段(192.168.1.0/24),两小时后解封
    iptables -I INPUT -s 10.20.30.0/24 -j DROP 
    iptables -I FORWARD -s 10.20.30.0/24 -j DROP
    at now 2 hours at> iptables -D INPUT 1 at> iptables -D FORWARD 1
  * 只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机
    iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT 
    iptables -A INPUT -p tcp --dport 22 -j DROP
  * 允许本机开放从TCP端口20-1024提供的应用服务
    iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT 
    iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
    
===============================================================
# firewalld 
 * 查看
   firewall-cmd --state 查看firewalld运行状态
   firewall-cmd --get-active-zones  查看激活的域
   firewall-cmd --zone=public --list-ports 查看开放的端口
   firewall-cmd --zone=public --list-rich-rules  查看添加的规则
   firewall-cmd --get-service   查看全部支持的服务
   firewall-cmd --list-service  查看开放的服务
 * 添加、移除规则
   开放单个端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
   开放端口范围:firewall-cmd --zone=public --add-port=8388-8389/tcp --permanet
   * 对指定ip开放/拒绝指定端口:firewall-cmd --permanment --zone=public --add-rich-rule='rule famliy="ipv4" source address="192.268.121.2/32" port protocol="tcp" port="10000" accept/reject'
   * 开放全部端口给ip:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.121.2/32" accept'
   * 开放全部宽口给IP段:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.121.0/24" accept'
   * 添加服务https:firewall-cmd --add-service=https --permanent
   * 移除添加的端口: firewall-cmd --zone=public --remove-port=80/tcp --permanent

12、如何把脚本添加到系统服务中,用service ,systemcl来调用

#service调用
  - 在脚本中添加
    #!/bin/bash
    #chkconfig: 345 85 15   告诉chkconfig缺省启动的运行级以及启动和 停止的优先级
    #description:test
  - 创建系统服务
    chkconfig test -add
#systemctl
  - 编写systemctl启动脚本。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
  - 将启动脚本放置:/usr/lib/systemd/system
  - 重新加载systemctl daemon: systemctl daemon-reload

13、如何让history命令显示具体时间

HISTTIMEFORMA="%Y-%m-%d %H:%M:%S"
export HISTTIMEFORMAT

14、网卡绑定与网卡中断

中断其实就是由硬件或软件发送的一种IRQ中断请求的信号(键盘,串口,并口等设备)表明设备他们需要cpu。一旦cpu接收了中断请求,cpu就会暂停正在运行的程序,并调用一个称为中断处理器(中断服务程序)。
# 网卡中断
  网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行响应,把数据包从网卡缓存拷贝到内存。因为网卡缓存大小有限,如果不及时拷出数据,后续数据包将会因为缓存溢出被丢弃,因此这一工作需要立即完成。剩下的处理和操作数据包的工作就会交给软中断。高负载的网卡是软中断产生的大户,很容易形成瓶颈
# 网卡绑定

15、docker 私有化镜像仓库 cannot validate certificate for 172.16.0.133 because it doesn't contain any IP SANs

解决:镜像仓库在设置https时nginx未开始https,在证书全部生成后,在安装harbor前需要运行 prepare脚本

16、shell脚本调试模式

set -x
bash -x **.sh

17、curl与wget高级用法

# curl 文件传输工具
 * 语法:curl [options][参数]
 * 常用选项:
  -c 将cookie写入到文件
  -b 从文件中读取cookie
  -C 断点续传
  -d http post方式传送数据
  -D 把header信息写入到文件
  -F 模拟http表达提交数据
  -s 减少输出信息
  -o 将信息输出到文件
  -O 按照服务器上的文件名,存在本地
  -L 仅返回头部信息
  -u [user:pass]:设置http认证用户和密码
  -T 上传文件
  -e 指定引用地址
  -x 指定代理服务器地址和端口
  -w 输出指定格式内容
  -retry 重试次数
 * 示
  抓取页面到指定文件,如果有乱码可以使用iconv转码:curl -s -o baidu.html www.baidu.com
  * 获取http响应头:curl -I http://www.baidu.com

18、nethogs查看linux进程的网络使用


19、linux 内核调优参数

#接收套接字缓冲区大小的默认值(以字节为单位)。
net.core.rmem_default = 262144

#接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.rmem_max = 16777216

#发送套接字缓冲区大小的默认值(以字节为单位)。
net.core.wmem_default = 262144

#发送套接字缓冲区大小的最大值(以字节为单位)。
net.core.wmem_max = 16777216

#用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.somaxconn = 262144

#当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。
net.core.netdev_max_backlog = 262144

#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小。
net.ipv4.tcp_max_orphans = 262144

#表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 262144

#表示系统同时保持TIME_WAIT套接字的最大数量。如果超过此数,TIME_WAIT套接字会被立刻清除并且打印警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的DoS攻击,不过,过多的TIME_WAIT套接字也会消耗服务器资源,甚至死机。
net.ipv4.tcp_max_tw_buckets = 10000

#表示允许系统打开的端口范围。
net.ipv4.ip_local_port_range = 1024 65500

#以下两参数可解决生产场景中大量连接的服务器中TIME_WAIT过多问题。
#表示开启TCP连接中TIME_WAIT套接字的快速回收,默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1

#表示允许重用TIME_WAIT状态的套接字用于新的TCP连接,默认为0,表示关闭。
net.ipv4.tcp_tw_reuse = 1

#当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭。
net.ipv4.tcp_syncookies = 1

#表示系统允许SYN连接的重试次数。为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK包。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_synack_retries = 1

#表示在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 1

#减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。
net.ipv4.tcp_fin_timeout = 30

#这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,若将其设置得小一些,可以更快地清理无效的连接。

net.ipv4.tcp_keepalive_time = 600

#探测消息未获得响应时,重发该消息的间隔时间(秒)。系统默认75秒。

net.ipv4.tcp_keepalive_intvl = 30

#在认定连接失效之前,发送多少个TCP的keepalive探测包。系统默认值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive探测包之后可以有多少时间没有回应。
net.ipv4.tcp_keepalive_probes = 3

#确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。示例中第一个值为786432*4/1024/1024=3G,第二个值为1048576*4/1024/1024=4G,第三个值为1572864*4/1024/1024=6G。
net.ipv4.tcp_mem = 786432 1048576 1572864

#此参数限制并发未完成的异步请求数目,应该设置避免I/O子系统故障。
fs.aio-max-nr = 1048576

#该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
fs.file-max = 6815744

#第一列,表示每个信号集中的最大信号量数目。
#第二列,表示系统范围内的最大信号量总数目。
#第三列,表示每个信号发生时的最大系统操作数目。
#第四列,表示系统范围内的最大信号集总数目。
#(第一列)*(第四列)=(第二列)
kernel.sem = 250 32000 100 128

#表示尽量使用内存,减少使用磁盘swap交换分区,内存速度明显高于磁盘一个数量级。
vm.swappiness = 0

20、5大导致SSL证书不被信任的原因

1、SSL证书不是来自公认的证书颁发机构(CA)
2、数字证书信任链配置错误
3、证书的域名匹配程度不完整
4、证书已经过了有效期
5、客户端不支持SNI协议

21、dig

# dig 是常用的域名查询工具,可以用来测试域名系统工作是否正常
# 语法
 dig [选项][参数]
# 选线
 @<服务器地址>:指定进行域名接续的一名服务器
 -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
 -f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
 -P:指定域名服务器所使用端口号;
 -t<类型>:指定要查询的DNS数据类型;
 -x<IP地址>:执行逆向域名查询;
 -4:使用IPv4;
 -6:使用IPv6;
 -h:显示指令帮助信息
# 参数
 主机:指定查询域名
 查询类型:指定DNS查询的类型
 查询类:指定查询DNS的class
 查询选项:指定查询选项
 

*22、Public key for .rpm is not installed

yum install google-chrome-stable_current_i386.rpm --nogpgcheck   加上参数yum 安装时在后面加上--nogpgcheck

23、安装mysqldb时提示 EnvironmentError: mysql_config not found

yum -y install mysql-devel 

24、安装mysqldb 时 error: command 'gcc' failed with exit status 1

yum -y install python-devel
yum -y install libevent-devel
pip install gevent
yum install gcc

25、python mysqldb 使用

连接 :db = MySQLdb.connect(host='172.16.0.106',user='root',passwd='mysql',port=3306,unix_socket='/data/mysqldata/mysql.sock',db='zhcs_info',charset='utf8')
语句传参(python):query = "select host_ip,path from application_info where application like %s" 
                               cursor.execute(query,[app_name_new])

26、python 中如何将文本文件中的值赋值给一个变量,该变量可用于python的下一步

将问题转化为python 读取文件内容问题
打开文件: f = open(‘*’,'*')
读取内容: line = f.readline()

28、python 中 select 语句中如何使用变量

query="select task_type from task_type_table where module_name=%s and task_name=%s" 
cursor_fetch.execute(query, [var1, var2])
results=cursor_fetch.fetchall()

29、将python的sql 数据转化为json 格式

方法一:
query = "select host_ip,path from application_info where application_info like ^%s"
cursor.execute(query,app_name)          #带变量进行数据库
data = cursor.fetchall()               #获取查询的数据
desc = cursor.description               #获取字段描绘,默认获取数据库字段名称,重命>名利用AS关键值
data_dict = [dict(zip([col[0] for col in desc],row)) for row in cursor.fetchall()]  #将查询数据转换为字典
data_dict_new = data_dict[0]            #去除前后的中括号
cursor.close()                          #关闭cursor
db.close()                              #关闭数据库连接
changejson = json.dumps(data_dicti,ensure_ascii=False) #json.dumps()是将原始数据转为
json(其中单引号会变为双引号),而json.loads()是将json转为原始数据。 ensure_ascii=False 防止中文乱码
jsondata = changejson[1:len(changejson)-1] # 去除字典前后的中括号
json_vars = open("/data/update_test/json_vars","w")
print jsondata >json_vars
方法二: 直接连接数据库查询结果为字典
with connection.cursor(cursor=pymysql.cursors.DictCursor) as cursor:    #以字典形式返回查询的数据
sql = "SELECT * FROM `app_info` WHERE `application`=%s"
cursor.execute(sql, (application))  #变量查询
result = cursor.fetchone()

30、mysql 密码找回

/ect/my.cnf 中启用skip-grant-tables 
重启mysql 
   yum安装:systemctl restart mysqld  (centos7)   service mysqld restart (centos6)
   编译安装:/etc/init.d/mysqld restart
直接登录不需密码
shell# mysql
mysql>use mysql
mysql>update user set authentication_string=password('mysql') where user='root';
mysql>flush privileges
注释skip-grant-tables 重启数据库即可用新密码登录

31、linux 磁盘空间被占满,但找不到目标文件问题

lsof 命令输出
COMMAND    PID            USER             FD              TYPE          DEVICE            SIZE          NODE        NAME
(进程名称) (进程号)    (进程所有者)       (文件描述)        (文件类型)    (指定磁盘名称)      (文件大小)    (索引节点)   (打开文件的确切名称)
一般此问题为文件删除,文件句柄没有释放,磁盘空间没有真正释放;
查看文件删除句柄未释放的进程:lsof |grep deleted
停止对应进程: kill -9 PID

32、监听本地地址效果差异分析127.0.0.1/0.0.0.0/192.168.*

1. 使用127.0.0.1作为监控地址,仅支持本地通过127.0.0.1访问。
2. 使用0.0.0.01作为监控地址,支持所有:支持本地通过127.0.0.1或IP访问,支持其它主机通过IP访问。
3. 使用IP作为监控地址,支持本地以IP访问和其它主机通过IP访问。

33、ssh |scp 带密码传输文件

 解决: yum instll -y sshpass
        sshpass -p "mima" ssh|scp   USER@IP 

34、动态查看linux系统服务日志

解决: journalctl -f -u SERVICE_NAME
       eg:journalctl -f -u kubelet

35、RAM与ROM

ram的全称叫Random Access Memory,意思是随机存取存储器,rom全称是Read Only Memory,一般叫做只读内存。简单来说,就像电脑知识里有内存和硬盘的分别,ram和rom就相当于电脑的内存和硬盘

36、 查看哪个目录占用过高

解决:du -h -x [指定目录]--max-depth=1 

37、容器编排工具

#swarm
  swarm 是Docker公司自行研发的一款用来管理多主机上的Docker容器的工具,可以负责启动容器,监控容器状态,也提供服务之间的负载均衡。
  特点: 更快速的运行速度  快速简单的配置 容器间低耦合  版本控制与组件重用
  缺点: 跨平台支持效果差  不提供存储选项 监控信息不足
  
#kubernetes
  kubernetes Google 开元容器编排引擎,支持自动化部署,大规模可伸缩,应用容器化管理,能做到零停机的情况下进行更新。
  优点:运行速度快  遵循不可变基础架构的原则(利于回滚)  提供声明式配置 大规模部署和更新软件 处理应用程序的可用性   提供存储卷管理
  缺点: 进程初始化时间较长 迁移到无状态需要很多工作 
  
#docker-compose
  基于Docker的单主机容器编排工具。

38、web访问慢问题排查

* F12看下是哪一块的内容过慢(DNS解析、网络加载、大图片、还是某个文件内容等),如果有,就对症下药去解决(图片慢就优化图片、网络慢就查看内网情况等)
* 查看后端日志应用日志。
* 查看系统基本: 内存,cpu,磁盘,网络
* 查看tcp连接状态,查看TIME_WAIT数量:netstat -naltp
* 通过iftop查看完了所使用的带宽情况
* 如果有用到消息队列中间件,查看消息队列的消息是否有积压
* 通过抓包工具,进行抓包,前端到后端服务哪个阶段响应时间长
* 数据库排查
* 查看web服务的请求日志,查看是否存Doss在攻击

39、linux 系统cpu,内存使用过高,排查思路

1、查看是否是硬件故障导致
2、使用vmstat -n 1 查看系统维度的cpu使用率,us:用户模式消耗的CPU,sy:内核模式消耗的cpu时间百分比,wa:IO 等待消耗的 CPU 时间百分比.
3、top查看进程维度的cpu负载:top + p 按照cpu使用排序
4、losf -p PID
5、查看是否有太多连接
    netstat -naltp|grep TIME_WAIT|wc -l

40、LVS负载的原理和nginx负载有啥区别

https://www.cnblogs.com/momoyan/p/9136349.html

LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别: LVS由于是基于四层的转发所以只能做端口的转发
而基于URL的、基于目录的这种转发LVS就做不了

工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy

41、统计当前访问的IP,并排序

统计用户的访问IP,用awk结合uniq、sort过滤access.log日志就能统计并排序好
cat access.log |awk '{print $1}'|sort|uniq -c|sort -rn |head -5

42、cpu单核和多核有什么区别

多核CPU就是能处理多份任务,顺序排成队列来处理。单核CPU一次处理一份任务,轮流处理每个程序任务。多核的优势不是频率,而是对付同时处理多件事情。单核同时只能干一件事

43、机械磁盘和固态硬盘有啥区别

HDD代表机械硬盘,SSD代表固态硬盘。首先,从性能方面来说,固态硬盘几乎完胜机械硬盘,固态硬盘的读写速度肯定要快机械硬盘,因为固态硬盘和机械硬盘的构造是完全不同的(具体的构造就没必要解释了)。其次,固态盘几乎没有噪音、而机械盘噪音比较大。还有就是,以目前的市场情况来看,一般机械盘容量大,价格低;固态盘容量小,价格偏高。但是企业还是首选固态盘
1、本质不同:机械硬盘本质是电磁存储,固态则是半导体存储。

2、防震抗摔性不同:机械硬盘很怕率,固态抗震。

3、数据存储速度不同:固态读写速度比机械快。

4、功耗不同:固态硬盘的功耗比机械硬盘低。
5、重量不同:固态硬盘的重量比机械硬盘轻。

6、噪音不同:机械硬盘有噪音,固态硬盘没有噪音。

7、价格不同:固态硬盘比机械硬盘价格较为昂贵,性价比较低。

8、容量不同:固态硬盘目前最大容量为4t 3.5寸

9、使用寿命不同:相对于固态硬盘,机械硬盘寿命更长。

44、如何设计高可用、高并发的架构

如果这套环境是部署在云端(比如阿里云),你就不用去考虑硬件设计的问题。可直接上阿里云的SLB+ECS+RDS这套标准的高可用、高并发的架构。对外服务直接上SLB负载均衡技术,由阿里的SLB分发到后端的ECS主机;ECS主机部署多台,应用拆分在不同的ECS主机上,尽量细分服务。数据库用RDS高可用版本(一主一备的经典高可用架构)、或者用RDS金融版(一主两备的三节点架构)。在结合阿里其它的服务就完全OK,业务量上来了,主机不够用了,直横向扩容ECS主机搞定。

SLB:负载均衡
ECS:云服务器
RDS:数据库


如果这套环境托管在IDC,那么你就要从硬件、软件(应用服务)双面去考虑了。硬件要达到高可用、高并发公司必须买多套网络硬件设备(比如负载设备F5、防火墙、核心层交换、接入层交换)都必须要冗余,由其是在网络设计上,设备之间都必须有双线连接。设备如果都是跑的单机,其中一个设备挂了,你整个网络都瘫痪了,就谈不上高可用、高并发了。其次在是考虑应用服务了,对外服务我会采用成熟的开源方案LVS+Keepalived或者Nginx+Keepalived,缓存层可以考虑redis集群及Mongodb集群,中间件等其它服务可以用kafka、zookeeper,图片存储可以用fastDFS或MFS,如果数据量大、又非常多,那么可采用hadoop这一套方案。后端数据库可采用 “主从+MHA”。这样一套环境下来是绝对满足高可用、高并发的架构。
Mstart High Availablility

45、端口所运行的服务21、22、23、25、110、143、873、3306

21:ftp
22:ssh
23:telnet
25:snmp
110:pop3
143:imap
873:rsync
3306:mysql

46、linux中毒如何处理

找到病毒文件然后删除;中毒之后一般机器cpu、内存使用率会比较高,机器向外发包等异常情况,排查方法: 
Linux服务器流量剧增,使用iftop查看是否有外网连接的情况

netstat 查看连接外网的ip和端口是否有问题

top找到CPU使用率高的进程,一般病毒文件命名会比较乱

ps  aux 查看是否有不明进程,找出病毒文件的位置

rm -f  删除病毒文件

对计划任务、开启启动项和病毒文件目录有无其他可疑文件

chkconfig --list|grep 3:on

开机自启动文件:more /etc/rc.local

对于删除的病毒文件后又自动创建: 找到父进程

47、如何实现自动挂载,fstab 各字段的意义

实现自动挂载:
 1、利用fdisk -l 查看挂载设备名称/dev/sdb1
 2、利用blkid DEVICE 查看UUID
 3、写入/ect/fstab文件

fstab各字段意义:
第一列:要挂载的设备文件,UUID,LABLE,文件系统(sysfs,proc,tmpfs)
第二列:挂载点,即挂载到哪个目录下,也是绝对路径 
第三列:文件系统类型;常见的linux文件系统类型如:ext系列、iso9660光驱、ntfs、swap等 
第四列:挂载选项,常见选项:rw、ro、defaults、auto等 
第五列:dump备份工具。检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0 
第六列:fsck文件系统扫描检查工具

48、HTTP原理

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。
它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,
以及哪部分内容首先显示(如文本先于图形)等。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。在TCP/IP协议栈中的位置HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上.
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用
了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请
求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据

以下是 HTTP 请求/响应的步骤:
1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、
空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式
为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的
HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的
数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html 文本并显示内容; 

49、dns工作原理

1.主机先查找自己的缓存文件,如果有mail.163.com的信息,则7;否则2。
2.主机向本地域名服务器(这里就是地址里的DNS了)进行查询,如果该服务器有mail.163.com的IP信息,则6;否则3。
3.该DNS服务器向根域名服务器发起查询。根域名服务器告诉本地域名服务器下一次应查询dns.com的顶级域名服务器;
4.本地域名服务器向dns.com顶级域名服务器进行查询,如果该服务器有mail.163.com的IP信息,则6,;否则5。
5.dns.com顶级域名服务器向本地域名服务器指出下一次向dns.163.com发起查询。本地域名服务器向dns.163.com
发起查询,网易公司的DNS服务器就会有他的163mail服务器的IP信息,然后发给本地域名服务器。
6.本地域名服务器收到解析的内容,发回给主机。
7.主机获得IP信息。 

50、数据容灾

所谓数据容灾,就是指建立一个异地的数据系统,该系统是本地关键应用数据的一个可用复制。在本地数据及整个应用系统
出现灾难时,系统至少在异地保存有一份可用的关键业务的数据。该数据可以是与本地生产数据的完全实时复制,也可以比
本地数据略微落后,但一定是可用的。采用的主要技术是数据备份和数据复制技术。
数据容灾技术,又称为异地数据复制技术,按照其实现的技术方式来说,主要可以分为同步传输方式和异步传输方式
(各厂商在技术用语上可能有所不同),另外,也有如“半同步”这样的方式。半同步传输方式基本与同步传输方式相同,
只是在Read占 I/O比重比较大时,相对同步传输方式,可以略微提高I/O的速度。而根据容灾的距离,数据容灾又可以
分成远程数据容灾和近程数据容灾方式。
应用容灾:
所谓应用容灾,是在数据容灾的基础上,在异地建立一套完整的与本地生产系统相当的备份应用系统 
(可以是互为备份)。建立这样一个系统是相对比较复杂的,不仅需要一份可用的数据复制,还要有包括
网络、主机、应用、甚至IP等资源,以及各资源之间的良好协调。主要的技术包括负载均衡、集群技术。
数据容灾是应用容灾的基础,应用容灾是数据容灾的目标。

51、nginx、Apache、Tomcat

一、Nginx与Apache
1、nginx相对于apache的优点: 
轻量级,同样起web 服务,比apache 占用更少的内存及资源 
高并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 
高度模块化的设计,编写模块相对简单 
社区活跃,各种高性能模块出品迅速啊 
apache 相对于nginx 的优点: 
rewrite ,比nginx 的rewrite 强大 
模块超多,基本想到的都可以找到 
少bug ,nginx 的bug 相对较多 
超稳定 
存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。
后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。这里要注意一点,epoll
(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 
大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能
。当然,这只是根据网络IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。 

2、作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,
这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的
替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并
发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型. 
Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支
持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比
 Perlbal 要好很多. 
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是
作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验. 
Nginx 是一个安装非常的简单 , 配置文件非常简洁(还能够支持perl语法), Bugs 非常少的服务器: 
Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够
不间断服务的情况下进行软件版本的升级 . 

3、Nginx 配置简洁, Apache 复杂 
Nginx 静态处理性能比 Apache 高 3倍以上 
Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用 
Apache 的组件比 Nginx 多 
现在 Nginx 才是 Web 服务器的首选 

4、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接
(万级别)可以对应一个进程 

5、nginx处理静态文件好,耗费内存少.但无疑apache仍然是目前的主流,有很多丰富的特性.所以还需要
搭配着来.当然如果能确定nginx就适合需求,那么使用nginx会是更经济的方式. 

6、nginx的负载能力比apache高很多。最新的服务器也改用nginx了。而且nginx改完配置能-t测试
一下配置有没有问题,apache重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现
在看有好多集群站,前端nginx抗并发,后端apache集群,配合的也不错。 

7、nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。 

8、Nginx优于apache的主:1.Nginx本身就是一个反向代理服务器                                 2.Nginx支持7层负载均衡;
                   其他的当然,Nginx可能会比apache支持更高的并发
                   
二、Nginx与Tomcat
nginx常用做静态内容服务和代理服务器,直接外来请求转发给后面的应用服务器(tomcat,Django等),tomcat更多用来做一个应用容器,让java web app泡在里面的东西。

严格意义上来讲,Apache和nginx应该叫做HTTP Server,而tomcat是一个Application Server是一个Servlet/JSO应用的容器。

客户端通过HTTP Server访问服务器上存储的资源(HTML文件,图片文件等),HTTP Server是中只是把服务器上的文件如实通过HTTP协议传输给客户端。

应用服务器往往是运行在HTTP Server的背后,执行应用,将动态的内容转化为静态的内容之后,通过HTTP Server分发到客户端

注意:nginx只是把请求做了分发,不做处理!!!

52、硬链接与软链接

硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。
硬链接可由命令 link 或 ln 创建,如:
link oldfile newfile 
ln oldfile newfile
由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,
删除一个硬链接文件并不影响其他有相同 inode 号的文件。
硬链接不能对目录进行创建,只可对文件创建。

软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是
另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。
软链接可对文件或目录创建。
ln -s old.file soft.link
ln -s old.dir soft.link.dir
加-s选项表示创建的是软链接。
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,
则相关软连接就变成了死链接。

53、rpm安装与编译安装有什么区别

1、rpm只能适用redhat系列的linux,不适用与debian系统的linux,而编译安装适用于所有的linux

2、rpm中包含已经编译好的二进制文件,安装后会拷贝到对应目录表
如果rpm会更加快捷

54、文件系统怎样做快照,怎样快速恢复快照

1、工具TimeShift
2、Back In Time


linux 自己做快照(mount,mksnap_ffs)
1、单独磁盘。分区格式化,独立挂盘
2、mount -u -o snapshot /home/snapshot20050730 /home
or   mksnap_ffs /home /home/snapshot20050730

55、查看linux系统配置

查看linux 系统配置
    解决:内存cat /proc/meminfo
          物理cpu数:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
          物理cpu核数:cat /proc/cpuinfo| grep "cpu cores"| uniq
          逻辑cpu数:cat /proc/cpuinfo| grep "processor"| wc -l
          cpu型号:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
          top   --->1

56、linux网卡命名规则

centos 6 及之前命名统一命名方式都是:eth0 ,eth1....
centos 7网卡命名规则:基于固件、拓扑、位置信息来分配,命名是全自动的
规则1:如果Firmware或者BIOS提供的设备索引信息可用就用此命名。比如eno1。否则使用规则2
规则2:如果Firmware或Bios的PCI-E扩展插槽可用就用此命名。比如ens1,否则使用规则3
规则3:如果硬件接口的位置信息可用就用此命名。比如enp2s0
规则4:根据MAC地址命名,比如enx7d3e9f。默认不开启。
规则5:上述均不可用时回归传统命名方式
上面的所有命名规则需要依赖于一个安装包:biosdevname

前面两个字符的含义:
en      以太网     Ethernet
wl      无线局域网  WLAN
ww      无线广域网  WWLAN

第三个字符根据设备类型来选择
o<index>        集成设备索引号
s<slot>         扩展槽的索引号
x<MAX>s<slot>   基于MAC进程命令
p<bus>s<slot>   PCI扩展中心

配置回传统命名方式:
/etc/default/grub
加入net.ifnames=0
GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 rhgb quiet"
生效:grub2-mkconfig -o /etc/grub2.cfg

57、linux如何多网卡bound

linux bond网络配置
 
当linux系统上有多个单独网卡,又想充分利用这些网卡,同时对外提供一个统一的网络地址,以使得增大网络的吞吐量,同时也提高网络的可用性,这时就需要bond来帮助我们解决这个问题。linux中bond感觉有点带有bound和bind的意思,从字面意义上,就可以看出bond的作用是聚合多个东西,组合成一个统一的东西使用


1、进入/etc/sysconfig/network-scripts/目录
2、创建(或复制重命名)bond0配置文件
    cp ifcfg-eth1 ifcfg-bond0
    
3、修改ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
BONDING_OPTS="miimon=100 mode=0"
IPADDR=192.168.1.100
NETMASK=255.255.255.0 

4、修改需要绑定的其他网卡配置文件
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes 

5、重启网卡
6、查看bound状态:cat /proc/net/bonding/bond0

bound 模式:
mode=0,(balance-rr) Round-robin policy(平衡抡循环策略)
mode=1,(active-backup) Active -backup policy(主-备份策略)
mode=2,(balance-xor) XOR policy(平衡策略)
mode=3,broadcast(广播策略)
mode=4,(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
mode=5,(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
mode=6,(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

58、linux系统中添加路由的方法

主机路由
route add -host 192.168.197.100 dev eth0
网关路由
route add default gw 192.168.197.1
网络路由
route ad -net 192.168.1.0 netmask 255.255.255.0 deveth1
route ad -net 192.168.1.0 netmask 255.255.255.0 gw192.168.197.1

59、linux 取出文件中指定行

# 指定某一行
    head -n filename|tail -n 1 
    gawk 'NR==1' master_log_file        
    gawk 'NR==m,NR==n' master_log_file--读取m-n行
    sed -n ‘5,15p’ test.txt
 
读取指定行的第k个字段(可用指定分隔符-F)      gawk  -F 'NR==m,NR==n{print $k}' master_log_file

60、CMDB

1、什么是CMDB

CMDB(Configuration Management Database)配置管理数据库,存储与管理企业IT架构中设备的各种配置信息。

2、功能

- 整合:是指能够充分利用来自其他数据源的信息,对CMDB中包含的记录源属性进行存取,将多个数据源合并至一个视图中,生成连同来自CMDB和其他数据源信息在内的报告
- 调和能力:调和能力是指通过对来自每个数据源的匹配字段进行对比,保证CMDB中的记录在多个数据源中没有重复现象,维持CMDB中每个配置项目数据源的完整性;自动调整流程使得初始实施、数据库管理员的手动运作和现场维护支持工作降至最低
- 同步:指确保CMDB中的信息能够反映联合数据源的更新情况,在联合数据源更新频率的基础上确定CMDB更新日程,按照经过批准的变更来更新 CMDB,找出未被批准的变更
- 映射
- 可视化

3、配置管理流程
(1)制定配置项及组件定义的策略
(2)建立服务和基础设施可识别组件的识别、控制和追溯版本的机制
(3)为变更管理流程提供与变更请求对于服务和基础设施配置影响有关的信息
(4)确保配置项的变更在适当时候可追溯和审计
(5)对系统、服务和服务组件的完整性进行维护
(6)应在发布到实际运行环境之前建立配置项的基线
(7)数据配置项的主拷贝应控制在安全的物理或电子数据库中,可将其参考信息记录在配置项中,如软件、测试产品和支持文档等
(8)所有的配置项应能被唯一识别,并记录在严格控制更新访问的配置管理数据库中。主动管理和验证配置管理数据库,确保其可靠性和准确性
(9)有需要的人员可看到配置项的状态、版本、位置、相关的变更和问题以及相关的文档

4、现有的CMDB开源管理平台

- 腾讯蓝鲸
- iTop
- OneCMDB
- RapidOSS
- i-doit

#### ITIL

IT服务管理,ITIL主要包括六个模块,即业务管理、服务管理、安全管理、ICT基础架构管理(ICT:information Communication Technology信息与通信技术)、应用管理、IT服务管理实施规划

61、CVM

CVM:Cloud Virtual Machine 

(1)虚拟机服务,是腾讯云平台提供的可伸缩的虚拟计算资源;
(2)提供多种不同配置类型的虚拟机,可用于Web接入、数据缓存、数据库等多种场景;
(3)提供了可视化的管理页面,开发者可方便地进行服务器日常管理,如申请、退还、重启、监控等;
(4)提供了多种安全防护手段,包括资源隔离、安全加固、网络安全(例如防DDOS攻击),数据安全(例如FTP通道)和密码安全(例如HTTP代理登录)等。

62、

63、

64、

65、

66、

67、

68、

69、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容