题库-所有

2019年云计算笔试面试题库

区别:
单引号: 所见即所得 里面的内容会原封不动显示出来
双引号: 会解析里面的变量和特殊符号
反引号: 反引号里面的内容会被优先执行(将里面的输出暂时保存 在适当的地方显示出来)
[root@alice ~]# echo ‘$UID’
KaTeX parse error: Expected 'EOF', got '#' at position 19: … [root@alice ~]#̲ echo "UID"
0
[root@alice ~]# echo date
Wed May 15 09:28:43 CST 2019

1、在linux中links分类?

软、硬连接

2、编写shell程序运行前赋予该脚本什么权限?

x 执行权限

3、唯一标识每个用户得是?

uid和用户名

4、在linux系统中, 用来存放系统所需要的配置文件和子目录的目录是

/etc

5、结束后台进程命令?

kill

6、在超级用户下显示linux 系统中正在运行的全部进程,应使用的命令及参数?

ps -ef

7、为脚本程序指定执行权限的命令和参数是?

chmod +x 脚本

8、什么命令是删除文件和目录?

rm

9、什么命令是移动文件和目录的命令?

mv

10、增加一个用户得命令是?

useradd

11、终止一个前台进程可能用到的命令和操作(A)

A. kill

B. +c

C. shut down

D. halt

12、在使用mkdir 命令创建新的目录时候,在其父目录不存在时 先创建父目录的选项是 (D)
A. -m

B. -d

C/ -f

D. -p

13、一个文件名字为test.tar.gz, 可以用来解压缩的命令是:(A)

A. tar

B. gzip

C. compress

D. uncompress

14、若一台计算机的内存为 128MB 则交换分区的大小通常是 (A)

A 64MB

B 128MB

C 256MB

D 512MB

15、8 将光盘CD-ROM(hdc) 挂在到文件系统的/mnt/cdrom 目录下的命令是 ©
A. mount /mnt/cdrom
B. mount /mnt/cdrom /dev/hdc
C. mount /dev/hdc /mnt/cdrom
D. mount /dev/hdc

16、有关归档和压缩命令,下面描述正确的是(B)
A. 用 uncompress 命令解压缩由 compress 命令生成的后缀为.zip的压缩文件
B. unzip 命令和 gzip 命令 可以压缩相同类型的文件
C. tar 归档且压缩的文件可以由 Gzip命令压缩
D. tar 命令归档后的文件也是一种压缩文件

17、下列对shell 变量 FRUIT 操作,正确的是:(B)
A. 为变量赋值: $FRUIT=apple
B. 显示变量的值: fruit=apple
C. 显示变量的值: echo $FRUIT
D. 判断变量是否有值:[ -f ‘$FRUIT’]

18、描述raid0、1、5的特点和优点?

raid0:
最少需要两块磁盘
数据条带式分布
没有冗余,性能最佳(不存储镜像、校验信息)
不能应用于对数据安全性要求高的场合(安全性比较低)
raid1:
最少需要2块磁盘
提供数据块冗余
性能好
利用率50%
镜像卷
raid5:
最少3块磁盘
数据条带形式分布
以奇偶校验作冗余
适合多读少写的情景,是性能与数据冗余最佳的折中方案
利用率n-1/n

动态磁盘的5种类型分别
1、简单卷(Simple Volume):与基本磁盘的分区类似,只是其空间可以扩展到非连续的空间上。
2、跨区卷(Spanned Volume):可以将多个磁盘(至少2个,最多32个)上的未分配空间合成一个逻辑卷。使用时先写满一部分空间再写入下一部分空间。

3、带区卷(Striped Volume):又称条带卷RAID 0,将2~32个磁盘空间上容量相同的空间组成一个卷,写入时将数据分成64KB大小相同的数据块,同时写入卷的每个磁盘成员的空间上。带区卷提供最好的磁盘访问性能,但是带区卷不能被扩展或镜像,并且不提供容错功能。

4、镜像卷(Mirrored Volume):又称RAID 1技术,是将两个磁盘上相同尺寸的空间建立为镜像,有容错功能,但空间利用率只有50%,实现成本相对较高。

5、带奇偶校验的带区卷:采用RAID 5技术,每个独立磁盘进行条带化分割、条带区奇偶校验,校验数据平均分布在每块硬盘上。其容错性能好,应用广泛,需要3个以上磁盘,平均实现成本低于镜像卷。

19、在/etc/fstab 文件中指定的文件系统加较参数中,(D) 参数般用于CD ROM
A defaults
B Sw
C rw和ro
D noauto

20、Linux 文件权限一共10位长度, 分成四段,第三段表示的内容是©
A文件类型
B文件所有者的权限
C文件所有者所在组的权限
D其他用户

21、在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项(D)
A. -m
B. -d
C. -f
D. -p

22、

1、如何判断出Windows操作系统是32位的还是64位的。
可以在我的电脑属性中查看
2、当前市场中有几种主流的浏览器? (至少列举出3种)。
firefox chrome opera
3、Windows 操作系统设置每天下午18 点自动关机,如何操作。
控制面板-》管理工具-》计划任务-》设置每天的关机时间

4、请写出Linux系统关机命令、重启命令、文件夹赋权命令
poweroff  reboot chmod 
5、请写出linux 系统挂载分区命令
mount
6、请写出linux系统查看定时任务命令
crontab -l

23、在Windows操作系统和linux系统中如何查看MAC地址。

windows 网卡->状态->支持->详细信息
linux  ip a

24、linux操作系统新建一个用户为oracle命令是码的命令为()为oracle 用户设置密码()

useradd oracle -s /sbin/nologin
echo 'password' | passwd --stdin oracle

25、Linux 操作系统创建/datal/database/oracle (注: /data目承不存在)目录的命令为_;进入/datal/database/oracle目录的命令为_;

mkdir -pv /datal/database/oracle
cd /datal/database/oracle

26、Linux 操作系统从ip为10.0.4.100远程主机复制/root/script.sh文件到/database/oracle的命令为

scp 10.0.4.100:/root/script.sh /database/oracle

27、请写出在Linux操作系统中查看进程中含有oracle关键字的进程信息的命令(); 杀死PID为29231的进程的命令为()

ps aux |grep oracle
kill -9 29231

28、请写出查看Linux操作系统的磁盘空间装载以及占用情况的命令();请写出将/dev/sdb文件系统挂载到/data2目录下的命令为__

df -Th
mount /dev/sdb /data2

29、写出输出数字0到100中3的倍数(0 3 6 9…) 的命令?

for i in {1..100}
do
	if [[ $(($i % 3)) -eq 0 ]];then
		echo $i
	fi
done

30、假设服务器具有6块900G本地磁盘,单块磁盘io约为150M/S, 现对磁盘进行RAID划分,6块磁盘做成RAID5级别后实际存储大小、理论实际io为多少。

理论上6块硬盘做raid5 ;其中有一块盘做冗余;因为有校验位;所以
 实际大小是                                        
                    900 * (6-2)= 4000G   
  
 实际IO 是:
                写的速率150m/s (小于 。  理论上写 过程中,RAID5会进行校验耗费时
间 )*4=600m/s

因为读取数据的时候校验位的盘是需要读取的所以实际:
                       读的速率是(6-1)*150  =750m/s    

31、英语
Many of our components require the use of JavaScript to function.
Specifically, they require jQuery, Popper.js, and our own JavaScript
plugins. Place the following

我们的许多组件都需要使用JavaScript来运行。
具体来说,它们需要jQuery、Popper.js和我们自己的JavaScript插件。将下面的<script>s放在页面的末尾,右侧
在关闭</body>标记之前,启用它们。jQuery必须排在第一位,
然后是Popper.js,然后是我们的JavaScript插件。

32、常见协议http. https. ftp. mysql. redis默认端口号。

80 443 21 3306 6379

33、根据服务器硬件配置,安装Linux操做系统时如何分区?
(硬件配置1:硬盘2T. 内存32G)、(便件配置2:硬盘6T. 内在128G)

1: boot 50m swap 64G / 500G /home 1T /var 剩余
2: boot 50m swap 256G / 1T /home 4.5G /var 剩余

34、 Linux系统统计服务器服务连接数命令?

w

35、简述Linux下各个命令或工具的主要功能作用: (grep/netstat/sed/awk/sort/wc/tcpdump/tail/ldd/uniq)

grep  过滤
netstat 检测网络和端口
sed   流文本编辑工具
awk   字符处理工具
sort  排序
wc    统计
tcpdump  抓包
tail  从末尾查看
ldd   列出程序所需要的动态链接库
uniq  检查重复行

36、Linux查询某文件的路径,指令为?

find

37、raid的类型有?

raid0 raid1 raid5 raid10

38、Linux默认的定时任务,一般写入/etc/下的哪个文件?

/etc/crontab

39、常见协议(http,https,ftp,mysql,Redis)默认端口号

80 443 21 3306 6379

40、Linux系统统计服务器服务连接数命令?

netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c  

41、http的错误代码含义(404,410, 502, 504).

404 找不到页面
410 被请求的资源在服务器上已经不再可用
502 网关错误
504 网关超时

42、请使用awk,sed,grep三个命令,举例写出命令语句

awk -F':' '{print $1}' filename
sed -i.bak 's/a/A/' filename
grep 'hello world' filename

43、简述tcp三次握手的过程

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手,客户端与服务器开始传送数据

44、简述二层交换机和三层交换机的区别

二层交换机工作于OSI模型的第2层(数据链路层),故而称为二层交换机。

三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。

45、centos7默认防火墙允许80端口外网访问,写出相应安全策略

firewall-cmd --zone=public --add-port=80/tcp --permanent

46、使用tcpdump监听tcp80端口来自192.168.0.1的所有流量,请写出命令.

tcpdump –i eth0 host 192.168.0.1 port 80tcpdump src 192.168.1.10 tcp port 80

47、符号链接与硬链接的区别

1、硬链接 和 源文件 是同一个文件;软链接 和 源文件 是2个不同的文件。
2、大部分系统不能创建 目录 的硬链接,软链接没有这个限制。
3、硬链接不能跨文件系统(分区),软链接没有这个限制。

48、磁盘空间满了,删除一部分Nginxaccess日志,但是,发现磁盘空间还是满的,为什么?

在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是nginx的log文件删除的时候文件应该正在被使用
解决:查看进程,kill掉进程,然后再删除

49、进程查看和调度分别使用什么命令?

进程查看的命令是ps和top。
进程调度的命令有at,crontab,kill

50、服务器A需要连接服务器B的端口8080,目前登录了的8080端口是否健康运行,可以使用linux命令()

netstat  -ntpl |grep 8080
ss  -anpt|grep 8080

51、快速定位当前目录下size最大的文件,命令行为()

du -sk *|sort -rn|head -1|awk  '{print $2}' 

52、快速定位catalina.out 日志中最近发生的依稀异常,关键()

cat catalina.out|grep error

53、系统中有一台数据库服务器,发现木马,症状是不定期向外网发包,影响服务器性能现登录该服务器,如何快速找到该木马进程?请写出命令行,并解释原因。

1、查看异常用户
cat /etc/passwd
2、查看异常进程
ps  
3、查看异常定时任务
crontab  -e   删除异常定时任务

54、/code/java 目录下有一份java工程,里面有一系列各种深度的子目录,其中有一个中包含HellWord这个字符,现需要通过一行命令找到改文件,请写下命令行。

find /code/java -name HellWord 

55、新增一个禁止登录的用户

useradd -s /sbin/nologin <username>

56、.如何安装软件

1、使用系统自带yum命令安装
2、下载rpm包,用rpm  -ivh命令安装
3、下载二进制包,二进制方式安装

57、.如何查看系统都开启了哪些端口

ss -anpt  或 netstat  lsof

58、如何查看当前系统都有哪些进程

ps 或  top  lsof

59、获取tomcatpid 并杀掉进程

ps aux|grep tomcat  获取进程id  kill -9 进程id  或  pkill  -9 tomcat

60、.如何查看命令的具体使用方法

命令  --help eg : ps  --help  或者  man  命令 eg: man  ps

61、使用rsync同步/var/log目录下的多个文件到test的log模块下,并记录log

 rsync -avz  user@ip:/var/log   /test/log

62、下列服务的默认端口

https    ftp    mysql    pop3  smtp   redis
443      21/22  3306     110   25     6379

63、

使用find命令删除/data/web下的所有.svn的文件

find   /data/web  *.svn   -exec rm -rf {} \;

65.使用sed将文件file.txt中test替换为abc.com写出命令

sed -i  's/tsst/abc.com/g'

67、解释下列含义:

*/2 10 1 6 1 /sur/sbin/ntpdata ntp.api.bz

6月1号是周一的时候10点每隔两分钟 像ntp.api.bz 同步一次时间

68、.使用iptables拒绝8.8.8.8访问本机的53端口

iptables -I INPUT -s 8.8.8.8  -ptcp --dport 53 -j DROP

69、写出linux系统开机的启动顺序

加载BIOS 读取MBR Boot Loader 加载内核 用户层init依据inittab文件来设定运行等级 init进程执行rc.sysinit  启动内核模块 执行不同运行级别的脚本程序 -执行/etc/rc.d/rc.local -执行/bin/login程序,进入登录状态

70、写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除。

find   /   *.log  -mtime +5 -exec rm -rf {} \;

71、被植入代码有哪些特点,怎样快速找到被植入的木马

可能定时执行,破坏系统文件
如何快速找到:
查看系统日志
查看系统用户
查看进程是否有异常进程
查看定时任务是有异常

72、inux应该从哪些方面提高安全性

 1、 取消不必要的服务
 2、加密用户登录密码并设定用户账号安全等级
 3、 增强安全防护工具

73、由于磁盘空间紧张,如果找出那些文件占用了大量的磁盘空间?如何实现每周一下午三点讲/tmp/logs目录下后缀为*.log的所有文件打包成‘年月日-log-back.tar.gz’,并rsync同步到备份服务器192.168.1.100中同样的目录下面?

1、du -sh *|awk  '{print $1}' |sort -r
2、crontab -e
0.3.*.*.1   tar -czf /tmp/log/*.log   `date +%Y-%m-%d`-log-back.tar.gz  &
              rsync -avzP /tmp/logs/*.log root@192.168.1.100:/tmp/logs

74、utf-8和Unicode的区别是什么?

Unicode 是「字符集」,Unicode为世界上所有字符都分配个唯一的数字编号
UTF-8 是「编码规则」,

75、linux操作系统支持的文件系统类型是?

ext3  ext4 xfs

76、创建一个每周三1:00—4:00每三分钟执行一次的crontab指令。

crontab -e  
3/*  1-3 *  * 3  执行命令

77、hp_unix 删除文件名中含有2017 关键字的文件?

rm -rf *2017

mv *2017

rm -rf  * 2017 *

78、配置zookeeper节点(列入:server.1=llhadoop009:9502:9503),需要修改的配置文件是: zoo.cfg

zoo.cfg

myid

hosts

79、进行字符串查找,使用什么命令?

grep  

80、Squi有什么用?

Squid是一个高性能的代理缓存服务器,可以加快内部网浏览互联网的速度,提高客户机的访问命中率.Squid不仅仅支持HTTP协议,还支持FTP,gopher,SSL和WAIS等协议,还可以做代理服务器,降低服务器负载。

81、inux系统的主流文件系统类型是什么?

ext4  xfs 

82、安装linux系统时,swap分区应该设置多少?

物理内存在8G以下,则swap设置为与物理内存一样大,也可以设置为物理内存的2倍。如果物理内存在8G以上,swap空间设置为8G即可。

83、在/etc/fatab文件中指定的文件系统加载参数块,什么参数一般用于CD-ROM等移动设备

noauto

84、linux文件权限一共10位长度,分为4段,第三段表示的内容是?

其他用户的权限

85、在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是

mkdir  -p 

86、一个文件名字为rr.Z可以用来解压的命令是?

uncompress

87、发现一个病毒文件你删除了他又自动创建怎么解决?

查看进程是否异常,查看计划任务crontab  是否有异常

88、你对现在运维工程师的理解和以及对其工作的认识

运维工程师需要保障公司系统服务的正常运行,需要配和其他部门例如研发部门的发布工作,需要给公司进行系统搭建等等

89、对于一个web服务器来说,应该调整那些linux内核参数。并说明他们的含义。

net.ipv4.tcp_syncookies = 1
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200 
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024    65000 
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,
#TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。

90、一般可以使用什么软件远程linux服务器?通过什么上传和下载文件?

crt     x-shell   finalshell   

 xftp  lrzsz

91、如何临时、永久关闭linux防火墙?

systemctl stop firewalld (重启失效)

systemctl  disable  firewalld(永久关闭)

92、将普通用户user加入到root组

gpasswd -a user  root 

usermod -g root user

93、使用rpm命令安装、卸载ntp-0.7.12.x86_64.rpm这个包。

rpm  -ivh ntp-0.7.12.x86_64.rpm

rpm -e  ntp-0.7.12.x86_64.rpm

94、linux系统中如何获取pid为1000的进程所监听的tcp端口,请写出详细命令?

 ss -anpt|grep 1000|awk '{print $4}'|awk -F":"  '{print $2}'

95、修改oracle环境变量/etc/profile文件并使之生效的命令。

vi   /etc/profile 

定义oracle 环境变量

source   /etc/profile

96、下列服务默认端口是多少:

ssh  22

mysql   3306

sqlserver  1433

httpd  80 

dns   53

97、说出你知道的linux/unix发行版本

Redhat、CentOS、Fedora、SuSE、Debian、Ubuntu

98、如何退出vim编辑器

:q    :q!   :wq (保存推出)

99、linux系统中结束后台进程的命令

通过ps命令查看进程号PID,然后执行  kill %PID

通过jobs命令查看jobnum,然后执行  kill %jobnum

100、在linux中压缩文件后生成后缀为.gz文件的命令是?

tar -czf  文件.tar.gz   文件

101、什么命令可以移动文件和目录,还可以为文件和目录重命名。

mv   

102、linux系统在今晚23:00关机

shutdown -h 23 :00

103、搜素文件命令:

find   路径  -name  文件名   

104、创建目录gpowe命令

mkdir  gpowe

105、删除目录gpowe命令

rm -rf gpowe  

106、当安装linux操作系统时一般选择那种操作?

1.“图形登录方式”,设定系统开始运行级别为4
2.“文本登录方式”,设定系统开始运行级别为3
3.“文本登录方式”,设定系统开始运行级别为5
4.“图形登录方式”,设定系统开始运行级别为3

107、.linux通过VFS支持多种不同的文件系统。linux缺省的文件系统是 3

1.VFAT
2.ISO9660
3.EXT系制
4.NTFS

108、在vi编辑器中的命令模式下,键入()可在光标当前所在行下添加一新行。

o

109.使用什么命令可以关闭linux系统?

shutdown              init 0

110./etc/fstab文件的作用是什么?

这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作

111.使用命令”vi /etc/inittab“ 查看文件的内容,你不小心改动了一些内容,为了防止系统出问题,你不想报存所修改的内容,你应该如何操作?

:q!     按ESC后输入:q!

112.删除文件的命令是?

rm  -rf  文件名

113.显示已经 挂载的文件系统磁盘inode使用状况的命令是?

df  -h
网络管理员对www服务器可以进行访问,控制存取和运行等控制,这些控制可在()文件中体现?    1 httpd.conf 
1.httpd.conf
2.lilo.conf
3.inerd.conf
4.resolv.conf

115、如果想在linux下实现热启,应当修改/etc/inittab下的那一行()。 2

1.#Trap CTRL-ALT-DELETE
2.#ca::ctrlaltfel :/sbin/shutdown -t3 -r now
3.#id:3:initdefault
4.#10:3:wait:/etc/rc.d.rc 3

116、启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中后者在( 3 )文件中以独立进程方式启动。

1./usr/sbin/smbd
2./usr/sbin/nmbd
3.rc.samba
4./etc/indetd.com

117、下列哪个命令建立在一个tar归档文件的啥时候列出纤细列表(3 )

1.tar -l
2.tar -cv
3.tar -cvf
4.tar -r

118、假设文件fileA的符号链接为fileB,那么删除fileA后,下面描述正确的是(2 )

1.fileB也随之删除
2.fileB仍存在,但是属于无效的文件
3.因为fileB未被删除,所以fileA会被系统自动重新新建立
4.fileB会随fileA的删除而被系统自动删除

119、改变文件所有者的命令? 3

1.chmod
2.touch
3.chown
4.cat

120、在给定文件中查找与设定条件相符字符串的命令为( 1 )

1.grep
2.gzip
3.find
4.sort

121、若要将当前目录中的myfile.txt问价压缩成myfile.txt.tar.gz,则实现的命令为?

tar -czf  myfile.txt.tar.gz  myfile.txt

122、存放linux基本命令的目录是什么?

/bin

123、若在文字界面下,需要键入何种指令才能进入图形界面(Xwindow)。 2 startx

1.reboot
2.startx
3.startwindow
4.getinto

124、在linux中,要查看文件内容,可用什么命令?

cat   filename      vi   filename    

125、系统引导的过程中一般分为几步?

⒈ 开机
⒉ BIOS 加电自检 (Power On Self Test -- POST) 内存地址为 0FFFF : 0000
⒊ 将硬盘第一个扇区 (0头0道[柱面]1扇区,也就是Boot Sector) 读入内存地址0000 : 7C00 处.
⒋ 检查(WORD) 0000 : 7DFE 是否等于0xAA55,若不等于则转去尝试其它启动介质
如果没有其它启动介质则显示e799bee5baa6e997aee7ad94e59b9ee7ad9431333361303131No ROM BASIC 然后死机.
⒌ 跳转到0000 : 7C00 处执行MBR 中的程序.
⒍ MBR 首先将自己复制到 0000 : 0600 处,然后继续执行.
⒎ 在主分区表中搜索标志为活动的分区. 如果发现没有活动分区或有不止一个活动分区,则转停止.
⒏ 将活动分区的第一个扇区读入内存地址 0000 : 7C00 处.
⒐ 检查(WORD) 0000 : 7DFE是否等于0xAA55,若不等于则显示Missing Operating System然后停止,或尝试软盘启动
⒑ 跳转到0000 : 7C00处继续执行特定系统的启动程序.
⒒ 启动系统 ...

127.字符界面下使用shutdown命令重启计算机时所用的参数?

shutdown   -r 
cd命令可以改变用户的当前目录,当用户键入命令cd并按Enter键后   3
1.当前目录改为根目录
2.当前目录不变,屏幕显示当前目录
3.当前目录为用户主目录
4.当前目录为上一级目录

129.在linux系统添加新用户的命令是?

useradd   username 

130.添加用户时使用()可以指定用户目

useradd   -d  用户目录

131.修改用户自身的密码可使用?

root  :  password   user   

其他用户: passwd        

132.设计用户所使用的计算机系统上有两块IDE硬盘,linux系统位于第一块硬盘上,查询第二块硬盘的分区情况命令是?

fdisk -l /dev/hdb  

133.统计磁盘空间或文件系统使用情况的命令是?

df   -h

134.用于文件系统直接修改文件权限管理命令为?

chown 

135.若使pid进程无条件终止使用的命令是?

kill   -9 

136.显示系统主机名的命令是?

uname  -n 

137.查询已安装软件dhcp内所含文件信息的命令是?

rpm -ql dhcp 

138.linux服务器发生可故障,使用df命令查看到某目录下有剩余空间,但是无法创建文件,可能的原因是什么?

可能由于磁盘的inode分配完了,导致提示磁盘满

139.某个项目现场需要对数据库做一些调整,项目经理早上通知A晚上7点到项目现场的机房开始准备工作,7点30准时开始调整,A晚上7点到现场后发现项目现场的大门紧闭,给用户打电话为没人接,一直徘徊到8点才得以进入机房,A对数据库进行操作后,在程序上进行调试,对应的功能完成了修改,A离开现场。第二天下午项目经理打电话给小A说道用户反馈因A操作失误导致其他功能异常。整个事件出了那些问题,如果换成你改怎么做。

给用户打电话无人接听后给项目经理打电话确认时间是否修改以及确定如果时间推迟和客户确认是否还需要调整,调整前调整过后都和客户及项目经理确认是否成功。

140.某网站页面上的应显示图片和一些动态内容的一个展示框变为黑色,网站其他部分正常,可能的原因是什么?

查看网站图片连接是否正常,图片是否存在,数据库是否可以正常访问

141.有一个普通想在每日凌晨零点零分定期备份/user/backup到目录下,该用户应如何做?

0   24  * * *   cp  filename  /user/backup

142、如何找回root密码?

1. 在重启系统的时候通过不断按下上下选择键阻断系统进行入正常启动,而是进入启动选择界面,然后根据
系统提示按下‘e’键去编辑选项

  2、找到如下图中标记中的那一部分,这就是需要编辑的部分

![image-20200511163045073](assets/image-20200511163045073.png)

3. 将ro 以后到UTF-8结束的所有内容全部删掉,然后将ro改为rw rd.break

      根据系统提示的下一步同时按下Ctl+x进入密码修改

4. 首先执行chroot /sysroot/进行入到系统根目录下
   然后执行passwd命令进行密码修改
   修改完成后在根下创建文件touch /.autorelabel,使得系统再次启动时能够识别修改

   5、 最后通过执行两次exit命令使系统重启,然后修改的密码就会生效了!

143、linux系统中用于打印队列查询的命令是?

Ipstat

144、以下文件中,只有root用户才能存取的是? 2

1.passws
2.shadow
3.group
4.password

145、在/home目录下查找文件名为.Profile的文件,找到后删除

find  /home -name .Profile  -exec  rm -rf {}\;

146、.将test.tar.gz文件解压缩

tar xf test.tar.gz 

147、创建一个用户,用户名为user02,所属私有组个标准组为sthff,用户家目录为/home/user2,用户登录shell为/bin/bash

useradd -s   /bin/bash   -d /home/user2  -G  sthff

148、.赋予所有用户读和写backup.tar.gz文件的权限

chown  444  backup.tar.gz  

149、请描述下列路径的内容是做什么?

/var/log/messages        存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志,在做故障诊断时可以首先查看该文件内容

/var/log/secure      一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说明有人在破解你的 root 密码

/var/spool/clientmqueue   是如果系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。

/proc/interrupts         列出当前所以系统注册的中断,记录中断号,中断发生次数,中断设备名称

/etc/profile             记录环境变量 、开机自启动内容

150、计划每星期天早上8点服务器定时重启,如何实现?

crontab -e

0   8  *  *  0     reboot  

151、.写出命令行发邮件,发件人:123@abc.com,收信人:abc@xyz.com。主题为test

mail   -s test    -r  123@abc.com   abc@xyz.com 

152、系统中在/etc/resolv.conf配置dns服务器地址,但后期会被清除什么原因

可能是NetworkManager的原因

FTP

1、ftp常用的两种模式

主动模式 
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。

被动模式:
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,

2、配置一台匿名ftp服务,应该修改那个文件

/etc/vsftpd/vsftpd.conf

3、FTP传输中使用哪两个端口?

 21     21

4、升级安装vsftpd

yum -y instakk vsftpd 

yum  upgrade vsftpd 

NFS

1、AB网络是通的,最少列出三种传输文件服务?

scp rsync vsftpd

2、简述网络文件系统NFS,并说明其作用

(1)网络文件系统是应用层的一种应用服务,它主要应用于Linux系统之间的文件或目录的共享,现在也支持linux和window系统之间。
(2)对于用户而言可以通过 NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分。
(3)采用NFS之后省去了登录的过程,方便了用户访问系统资源。

3、一次写出osi七层模型

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

Web

1、找出/usr/local/apache2/logs中三天前以sd-360开头并以日期结尾的log并删除。

find / -mtime +3 -type f -a -name "sd-360*"" -exec rm {} -f \;

2.我们想将/usr/local/nginx/logs中的log前一天做压缩,归档到 backup文件夹中,并保留7天的内容,你有什么好办法?如果我们还想将log收集走并分析,使用什么工具?如果收集走并加以分析,你主要关注哪些指标?

使用find命令查找,前一天的日志,或者在每天晚上12点将日志备份,打包压缩,使用shell脚本判断7天之前的文件删除。分析日志可以使用elk或者通过python、shell脚本进行分析。

3、http 1.0和http 1.1下有何区别? http 2.0的主要变化或优势有哪些?

http1.0-1.1:
1、http 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而http1.1默认支持长连接。
2、http1.0是没有host域的,http1.1才支持这个参数。
3、http1.1更加节约带宽

http2.0:相比于http 1.x,大幅度的提升了web性能。在与http/1.1完全语义兼容的基础上,进一步减少了网络延迟

4、简述一下apache和nginx的异同点。

两者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。一般来说,需要性能的web服务,用nginx。如果不需要性能只求稳定,更考虑apache,apache的各种功能模块实现比nginx好,例如ssl的模块就比nginx好,可配置项多。epoll(freebsd上是kqueue)网络IO模型是nginx处理性能高的根本理由,但并不是所有的情况下都是epoll大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache的select模型或许比epoll更高性能。当然,这只是根据网络IO模型的原理作的一个假设,真正的应用还是需要实测。更为通用的方案是,前端nginx抗并发,后端apache集群,配合起来会更好。

5、apache如何修改配置参数,将默认端口改为非默认端口。

Listen 80

6、通过apache 访问日志access. log统计IP和每个地址访问的次数,按访问量列出前10名。日志格式样例如下

192.167.1.247 [02/Ju1/2010:23:44:59 +0800] “GET / HTTP/1.1”200 19

awk '{print $1}' access.log | sort |uniq -c |sort -r

7、网络管理员对www服务器可进行访问、控制存取和运行等控制,这些控制可在(A )文件中体现。
A.httpd.conf

B.lilo.conf

C.inetd.conf

D.resolv.conf

8、某网站页面上的应展示图片和一些动态内容的一个展示框变为黑色,网站其他部分正常,可能的原因是什么?

网站页面源码的静态资源路径问题。

9、某日志路径 是/data/logs/a.txt. 如何跟踪该日志,以查看当时的运行状况?

tailf /data/logs/a.txt

10、HTTP协议默认使用的端口号为( ) ,FTP 协议默认使用的端口号为(),Microsoft SQL Server数据库默认使用的端口号为( ),Windows操作系统远程桌面应用使用的默认端口号是()。

80   21   1433  3389

11、HTML语言中,用于加入一个层的标签是(),用于加入图片的标签是(),用于链接外部样式的标签是()

div  img  link

12、apache和nginx的主配置文件是什么?

apache:  /etc/httpd/conf/httpd.conf
nginx: /etc/nginx/nginx.conf

13、apache有几种工作模式,分别简述两种工作模式及其优缺点?

Prefork MPM:
优点:成熟,兼容所有新老模块。进程之间完全独立,使得它非常稳定。同时,不需要担心线程安全的问题。(我们常用的mod_php,PHP的拓展不需要支持线程安全)

缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。

Worker MPM:
优点:占据更少的内存,高并发下表现更优秀。

缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)

Event MPM

14、http和https有什么区别?

http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。

https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。

15、有一web服务器,某天某用户投诉上某个网站速度很慢,如果你是服务器的管理员,请问你如何查找原因。假设服务器有任意操作系统和软件。

1.检查网站的在线用户量,根据用户的并发量来做初步判断是不是因为并发量过大引起的数据库连接负荷原因。
2.检查数据库连接是否满负荷。
3.通过浏览器自带的检测请求发送到返回的时间来判断是否是因为用户带宽原因。

16、已知apache服务的访问日志按天记录在服务器本地目录/app/logs下,
由于磁盘空间紧张,现在要求只能保留最近7天访问日志!请问如何解决?

find /app/logs -type f -name "access*.log" -mtime +7 exec rm –f {} \;

17、aptget remove httpd和apt-get purge httpd的区别是什么?

apt-get remove 只删除软件包,不删除配置文件
apt-get purge 删除软件包并删除配置文件

18、http状态码有哪些? 分别表示什么意思?

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
403	Forbidden	服务器理解请求客户端的请求,但是拒绝执行此请求
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
502	Bad Gateway	作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

19、介绍一下哪些可以优化加速用户访问网站体验的技术措施?

1、使用固态硬盘存储静态资源,扩大带宽
2、压缩或精简代码
3、降低HTTP请求
4、服务器端开启gzip压缩功能
5、使用cdn加速

20、什么叫网站灰度发布?如何实现灰度发布?

什么是灰度发布:在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。

如何实现灰度发布:
Nginx+LUA方式
根据Cookie实现灰度发布
根据来路IP实现灰度发布

21、当你在浏览器输入一个网址,如http://www.baidu.com, 按回车之后发生了什么?请从技术的角度描述,如浏览器、网络、服务器等各种参与对象上由此引发的一系列活
动,请尽说出可能的涉及到所有的关键技术点。

1.DNS解析
DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。

输入一个网址并按回车的时候浏览器会根据输入的URL去查找对应的IP,具体过程如下:

(1)首先是查找浏览器缓存,浏览器会保存一段时间内访问过的一些网址的DNS信息,不同浏览器保存的时常不等。

(2)如果没有找到对应的记录,这个时候浏览器会尝试调用操作系统缓存来继续查找这个网址的对应DNS信息。

(3)如果还是没找到对应的IP,那么接着会发送一个请求到路由器上,然后路由器在自己的路由器缓存上查找记录,路由器一般也存有DNS信息。

(4)如果还是没有,这个请求就会被发送到ISP(注:Internet Service Provider,互联网服务提供商,就是网络运营商,中国电信中国移动等),ISP也会有相应的ISP DNS服务器,就是本地DNS服务器,请求的域名基本上都能在这里找得到。

(5)如果还是没有的话, ISP的DNS服务器会将请求发向根域名服务器进行搜索。根域名服务器就是面向全球的顶级DNS服务器,共有13台逻辑上的服务器,从A到M命名,真正的实体服务器则有几百台,分布于全球各大洲。

(6)如果到了这里还是找不到域名的对应信息,那只能说明一个问题:这个域名本来就不存在,它没有在网上正式注册过。或者域名过期了。

这也就是为什么有时候打开一个新页面会有点慢,因为如果本地没什么缓存,查找域名的过程要这样递归地查询下去,查找完还要一层层的向上返回。例如"mp3.baidu.com",域名先是解析出这是个.com的域名,然后跑到管理.com域的服务器上进行进一步查询,然后是.baidu,最后是mp3, 所以域名结构为:三级域名.二级域名.一级域名。

所以DNS根据域名查询IP地址的过程为:浏览器缓存 --> 操作系统缓存 --> 路由器缓存-->本地(ISP)域名服务器缓存 --> 根域名服务器。

2.进行TCP连接
浏览器终于得到了IP以后,向服务器发送TCP连接,TCP连接经过三次握手。

3.浏览器发送HTTP请求
浏览器和服务器建立连接以后,浏览器接着给这个IP地址给服务器发送一个http请求,方式为get,例如访问www.baidu.com。其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。

这个get请求包含了主机(Host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的"代理人",Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求的内容后不要断开连接,不断开的话下次继续连接速度就很快了。可能还会有Cookies,Cookies保存了用户的登陆信息,一般保存的是用户的JSESSIONID,在每次向服务器发送请求的时候会重复发送给服务器。

在建立连接发送请求时每个服务端需要和客户端保持通信,有很多客户端都会和服务器进行通信。服务器为了识别是哪个客户端与它通信,就必须用一个标识记录客户端的信息。客户端首次访问服务器,服务端返回响应时通过附带一个记录的客户端信息的标识来返回给客户端,这个标识就是JSESSIONID,JSESSIONID就放在了客户端的Cookies里。当客户端再次向服务器发送请求时上就使用上次记录的Cookies里面的JSESSIONID,这样服务器就知道是哪个浏览器了。这样他们之间就能保持通信了。

发送完请求接下来就是等待回应了,如下图:


4.服务器处理请求
发送完请求接下来就是等待回应了,如下图:

服务器收到浏览器的请求以后),会解析这个请求(读请求头),然后生成一个响应头和具体响应内容。接着服务器会传回来一个响应头和一个响应,响应头告诉了浏览器一些必要的信息,例如重要的Status Code,2开头如200表示一切正常,3开头表示重定向,4开头是客户端错误,如404表示请求的资源不存在,5开头表示服务器端错误。响应就是具体的要请求的页面内容。

5.浏览器解析渲染页面
(1)浏览器显示HTML

当服务器返回响应之后,浏览器读取关于这个响应的说明书(响应头),然后开始解析这个响应并在页面上显示出来。

浏览器打开一个网址的时候会慢慢加载这个页面,一部分一部分的显示,直到完全显示,知道最后的旋转进度条停止。因此在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了。

(2)浏览器向服务器发送请求获取嵌入在HTML中的对象

在浏览器显示HTML时,打开一个网页的过程中,主页(index)页面框架传送过来以后,浏览器还会因页面上的静态资源多次发起连接请求,需要获取嵌入在HTML中的其他地址的资源。这时,浏览器会发送一些请求来获取这些文件。这些内容也要一点点地请求过来,所以标签栏转啊转,内容刷啊刷,最后全部请求并加载好了就终于好了。

这时请求的内容是主页里面包含的一些资源,如图片,视频,css样式,JavaScript文件等等。

这在文件属于静态文件,首次访问会留在浏览器的缓存中,过期才会从服务器去取。缓存的内容通常不会保存很久,因为难保网站不会被改动。

静态的文件一般会从CDN中去取,CDN根据请求获取资源的时候可能还会用到负载均衡。

(3)浏览器发送异步(AJAX)请求

对于那些动态的请求,动态网页等就必须要从服务器获取了。对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。对于这些动态请求,Nginx可能会专门设置一些服务器用来处理这些访问动态页面的请求。

6.关闭TCP连接
当数据完成请求到返回的过程之后,根据Connection的Keep-Alive属性可以选择是否断开TCP连接,HTTP/1.1一般支持同一个TCP多个请求,而不是1.0版本下的完成一次请求就发生断开。TCP的断开与连接不一样,断开可以分为主动关闭和被动关闭,需要经过4次握手。

当浏览器需要的全部数据都已经加载完毕,一个页面就显示完了。

22、网站出现200,302,400,403.404,500,502,503都是什么意思?

200	OK	请求成功。一般用于GET与POST请求
302	Found	临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
400	Bad Request	客户端请求的语法错误,服务器无法理解
403	Forbidden	服务器理解请求客户端的请求,但是拒绝执行此请求
404	Not Found	服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
500	Internal Server Error	服务器内部错误,无法完成请求
502	Bad Gateway	作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503	Service Unavailable	由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

23、配置Apache服务器需要修改的配置文件为( A)
A. httpd.conf
B. access.conf
C. srm.conf
D. named.conf

24、当用户反映访问你所维护的WEB服务器速度慢,访问其它网站都很流畅时.你的排查思路是什么?

1.检查网站的在线用户量,根据用户的并发量来做初步判断是不是因为并发量过大引起的数据库连接负荷原因。
2.检查数据库连接是否满负荷。

25、apache在linux系统上安装的步骤和命令

yum install -y httpd
systemctl start httpd

26、网站打开慢,请给出排查方法,如果是上数据库慢导致,如何排查并解决。

1、是否后端服务有问题,例如php-fpm tomcat
2、进库explian 检查语句是否有进程问题
3、看看查询语句是否有索引

1、nginx服务器的配置文件是?

/etc/nginx/nginx.conf

2、MySQL创建数据库的命令,创建表的命令,插入语句的命令

create database dbname character set 'utf8';
create table tname(id int);
insert into tname values(1);

3、描述lvs,nginx负载均衡的五种调度算法

rr wrr dh sh lc

4、Apache如何修改配置参数,将默认端口改为非默认端口

vim /etc/httpd/conf/httpd.conf
Listen port

5、如何实现nginx代理的节点访问日志记录客户的ip而不是代理的ip

修改nignx负载均衡器的/usr/local/nginx/conf/nginx.conf;
在location  / 添加  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

6、linux系统nginxphp环境,发现php-fpm进程高,请说明可能原因以及如何解决

1)php的插件程序与现有的PHP版本存在不兼容情况,解决方法从php.ini中禁止相关插件
2)php程序存在死循环现象,使用服务器负载过高,解决方法使用top命令查看
3)php-fpm服务池开启了太多子进程,通过配置 pm.max_children 属性,控制php-fpm子进程数量

7、Nginx禁止访问test目录

location =/test{
return 404;
}

8、如何实现系统接入层nginx灰度发布?

nginx 做反向代理+负载均衡  

如果是内部IP,则反向代理到预发布环境;如果不是则反向代理到生产环境。

9、列出你常用的nginx模块,用来做什么

ngx_http_access_module模块 :访问控制的模块
ngx_http_auth_basic_module模块 :使用basic机制进行用户验证
ngx_http_stub_status_module模块 :用来查看http的状态信息
ngx_http_log_module模块 :nginx的日志模块
ngx_http_gzip_module模块 :对传输的数据进行压缩
ngx_http_ssl_module模块 :设置https连接的模块
ngx_http_rewrite_module模块 :对用户的uri请求进行匹配,然后替换成指定的uri

ngx_http_referer_module模块 :做防盗链的模块,

1、Tomcat调整JVM内存大小需要修改那些配置文件

在catalina.sh文件中,找到cygwin=false,在这一行的前面加入参数,具体如下
# vi TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m"

2、Tomcat服务器配置为2核4G,CATALINA.OUT日志目前6.2G,我们需要打开文件并搜索一些关键词,并分析上下文。用什么命令查看比较合适,为什么?

vi  catalina.out    进入后  /关键词

3、tomcat jvm内存参数,在物理内存充足的情况下,是否越大越好,为什么?

 不是,1、如果系统上不止有tomcat,那么会影响其他服务的运行
 2、tomcat得GC垃圾回收机制

4、优化tomcat你会如何操作

一、有富余物理内存的情况,加大tomcat使用的jvm的内存

二、服务器资源
  服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
  (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。
  (2) 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。
  (3) 硬盘主要问题就是读写性能,当大量文件进行读写时,磁盘极容易成为性能瓶颈。最好的办法还是利用下面提到的缓存。

三、利用缓存和压缩
  对于静态页面最好是能够缓存起来,这样就不必每次从磁盘上读。这里我们采用了Nginx作为缓存服务器,将图片、css、js文件都进行了缓存,有效的减少了后端tomcat的访问。
  另外,为了能加快网络传输速度,开启gzip压缩也是必不可少的。但考虑到tomcat已经需要处理很多东西了,所以把这个压缩的工作就交给前端的Nginx来完成。
  除了文本可以用gzip压缩,其实很多图片也可以用图像处理工具预先进行压缩,找到一个平衡点可以让画质损失很小而文件可以减小很多。曾经我就见过一个图片从300多kb压缩到几十kb,自己几乎看不出来区别。

 四、采用集群
  单个服务器性能总是有限的,最好的办法自然是实现横向扩展,那么组建tomcat集群是有效提升性能的手段。我们还是采用了Nginx来作为请求分流的服务器,后端多个tomcat共享session来协同工作。

五、 优化tomcat参数
  这里以tomcat7的参数配置为例,需要修改conf/server.xml文件,主要是优化连接配置,关闭客户端dns查询。

<Connector port="8080"   
           protocol="org.apache.coyote.http11.Http11NioProtocol"  
           connectionTimeout="20000"  
           redirectPort="8443"   
           maxThreads="500"   
           minSpareThreads="20"  
           acceptCount="100" 
           disableUploadTimeout="true" 
           enableLookups="false"   
           URIEncoding="UTF-8" /> 

DNS

1、关于DNS,下列说法错误的是( C)
A、DNS,全称Domain Name System,即域名解析系统
B、DNS协议运行在UDP协议之上。
C、只有基于类Linux, Unix操作系统的服务器,才可以安装DNS服务器端软件
D、域名的最终指向是IP地址。

2、列举你所知道的域名解析记录类型

A记录
CNAME记录
URL转发
MX记录
NS

3、简述DNS进行域名解析的过程。

1、当客户机提出查询请求时,首先在本地计算机的缓存中查找。如果在本地无法获得查询信息,则将查询请求发给DNS服务器。
2、首先客户机将域名查询请求发送到本地DNS服务器,当本地DNS服务器接到查询后,首先在该服务器管理的区域的记录中查找,如果找到该记录,则利用此记录进行解析;如果没有区域信息可以满足查询要求,服务器在本地的缓存中查找。
3、如果本地服务器不能在本地找到客户机查询的信息,将客户机请求发送到根域名DNS服务器。
4、根域名服务器负责解析客户机请求的根域部分,它将包含下一级域名信息的DNS服务器地址返回给客户机的DNS服务器地址。
5、客户机的DNS服务器利用根域名服务器解析的地址访问下一级DNS服务器,得到再下一级域我的DNS服务器地址。
6、按照上述递归方法逐级接近查询目标,最后在有目标域名的DNS服务器上找到相应IP地址信息。
7、客户机的本地DNS服务器将递归查询结果返回客户机。
8、客户机利用从本地DNS服务器查询得到的IP访问目标主机,就完成了一个解析过程。

4、简述DNS和DHCP的功能

DNS提供域名解析服务
DHCP提供动态ip分配

5、关于DNS服务器,叙述正确的是©,
A、DNS服务器配置不需要配置客户端
B、建立某个分区的DNS服务器时只需要建立一个主DNS服务器
C、主DNS服务器需要启动named进程,而辅DNS服务器不需要
D、DNS服务器的root.cache文件包含了根名字服务器的有关信息

6、当内网内没有条件建立dns服务器,又不想用IP访问网站,应配置的文件是(A)
A honts
B sysconfig
C network
D hostname

8、DNS域名系统主要负责主机名和(A)之间的解析
A、IP地址

B、MAC地址

C、网络游戏

D、主机别名

9、权威DNS和递归DNS、迭代DNS的不同

 一、主机向本地域名服务器的查询一般都是采用递归查询。

        所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,

        向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。

        因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

 

二、本地域名服务器向根域名服务器的查询的迭代查询。

       迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。

        然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。

        顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。

        最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机

10、Linux系统中DNS服务进程名为(A)
A、named
B、httpd
C、ftpd
D、SysLog

11、当用户在浏览器当中输入一个网站,说说DNS解释经过哪些流程?

   a.用户输入网址到浏览器;
   b.浏览器发出DNS请求信息;
   c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;
   d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;
   e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
   f.返回IP结果给浏览器;
   g.浏览器根据IP信息,获取页面;

12、当你在浏览器输入一个网址,如http://www.baidu.com,按回车之后发生了什么?请从技术角度描述,如浏览器、网络、服务器等各种参与对象由此引发的一系列活动,请尽说出可能涉及到所有的关键技术点。

我们输入一个域名: www.taobao.com ,浏览器查找浏览器缓存,如果有域名的 IP 地址则返回,如果没有继续查找;
系统查找系统缓存,如果有域名的 IP 地址则返回,如果没有继续查找;路由器查找路由器缓存,如果有域名的 IP 地址则返回,如果没有继续查找;本地域名服务器采用迭代查询,它先向一个根域名服务器查询;根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器 dns.com 的 IP 地址;本地域名服务器向顶级域名服务器 dns.com 进行查询;
顶级域名服务器 dns.com 告诉本地域名服务器,下一次应查询的权限域名服务器 dns.taobao.com 的 IP 地址;本地域名服务器向权限域名服务器 dns.taobao.com 进行查询;权限域名服务器 dns.taobao.com 告诉本地域名服务器,所查询的主机 www.taobao.com 的 IP 地址;本地域名服务器最后把查询结果告诉主机;主机浏览器获取到 Web 服务器的 IP 地址后,与服务器建立 TCP 连接;浏览器所在的客户机向服务器发出连接请求报文; 服务器接收报文后,同意建立连接,向客户机发出确认报文,客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的 TCP 连接建立完成,开始通信;浏览器发出取文件命令: GET ;服务器给出响应,将指定文件发送给浏览器;
浏览器释放 TCP 连接;浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;服务器数据传输完毕后,向客户机发送连接释放报文;客户机接收到报文后,发出确认,然后等待一段时间后,释放 TCP 连接;浏览器显示页面中所有文本。

13、linux系统中DNS服务的进程名为?

软件名为bind
启动服务: service named start

14、DNS服务器的特点

DNS服务器重新对配置了静态地址的客户端进行重新配置 

.15、权威DNS和递归DNS、迭代DNS的不同?

递归解析”(或叫“递归查询”,其实意思是一样的)是最常见,也是默认的解析方式。在这种解析方式中,如果客户端配置的本地名称服务器不能解析的话,则后面的查询全由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从权威名称服务器得到了正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果。

迭代DNS所有查询工作全部是DNS客户端自己进行(以“DNS客户端”自己为中心)。

DHCP

1、简要说明客户机使用DHCP获取IP地址的过程

1、终端以广播的形式向网络内广播DISCOVER发现报文,报文中携带相关的参数列表。
2、网络内的服务器,从可用地址池中分配一个ip地址给客户机,向这个地址广播offer报文,报文中携带终端请求的参数。
3、终端从响应offer的服务器中选择一个,并在request报文中携带选择的服务器的ip和服务器分配给自己的ip地址。并进行广播,把终端选择的地址和服务器通知网络内所有主机服务器。
4、网络内的服务器收到终端的request请求后,如果是终端选择的服务器,根据的是上面request报文中是否携带自身的信息,比如IP地址。则发送一个广播ACK,确定分配地址等信息;如果不是终端选择的服务,则不响应,并收回分配的地址到可用地址池中。
5、终端收到ack后就把ip地址等信息跟网卡绑定。

2、请写出190.5.27.13/16网段的网络地址和广播地址。

网络地址:190.5.0.0
广播地址:192.5.255.255

3、保存当前磁盘分区的分区表

partprobe

4、手动安装grub

1、使用 grul-install 命令在要启动的分区中安装 GRUB 相关文件
2、修改GRUB的配置文件
3、安装GRUB到/dev/sdb1分区的启动扇区中

5、修改内核参数

vim /etc/sysctl.conf
sysctl -p

6.在1-39内取随机数

echo $[$RANDOM % 40]

Ansible

1、请写出saltstack或者ansible中你常用的5个管理模块。

saltstack:
		cmd   acl  cloud  cp  cron
ansible:
		shell  copy  yum  service  cron

2、你对自动化运维的理解,以及自动化运维需要掌握哪些技能?

1、项目部署维护能力
2、脚本开发能力
3、运维方案制定,业务架构关联分析
4、shell、python使用能力,应用架构设计能力

3、如何用ansible获取远程服务器10.10.125.125的时间(环境配置已完成)

ansible 10.10.125.125 -m shell -a 'date'

4、ansible你用过它的哪些模块,ansbile同时分发多台服务器的过程很慢(它是逐台分发的),你想过怎么解决吗?

通过ansible的异步和并发设置:async和poll
或者在配置文件中设置forks,并发进程数。

5、ansible用过没有,熟不熟,问对四百太服务器设置IP和不同的网关怎么做?

先确定机器和新ip、网关的对应关系,然后通过script模块执行shell脚本完成配置

6、一台新装的 Centos操作系统机器,要开始部署业务服务之前需要做什么操作?如果有二十台了,要怎么做?

1、需要先进行环境初始化,根据业务需求,调整防火墙,selinux的配置,修改内核参数,以满足业务需求。
2、如果需要操作的服务器较多,可以使用自动化运维工具完成配置,如ansible等。

7、常用的运维自动化工具写出两种:

saltstack、ansible

负载均衡高可用

1、简述keepalived实现高可用部署的原理

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用

2、请详细说明LVS DR模式的原理以及Keepalived高可用服务工作原理?

LVS DR:客户端向目标vip发出请求,lvs接收 ,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为目标mac地址,发送到局域网里,节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己的vip地址。
Keepalived高可用:keepalived通过vrrp协议来实现故障切换转移。在主节点正常工作的时候,会不断地向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

3.LVS支持几种模式,工作过程是什么?

NAT模式
原理
这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
TUN模式(隧道模式)
原理
v采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。
DR模式(直接路由模式)
原理
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
LVS-FULLNAT转发模式
FULLNAT转发数据包是类似NAT模式,IN和OUT数据包都是经过LVS;唯一的区别:后端RealServer 或者交换机不需要做任何配置。FULLNAT的主要原理是引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯

4、在一个系统架构中,我们为了避免单点故障会怎么做?请写出至少2中方案及优点。

做集群  比如nginx 会做反向代理、利用nginx 或lvs 做负载均衡  ,利用keepalived做高可用

5、LVS、nginx、HAproxy有什么区别?工作中你怎么选择?

LVS的优点:
1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3、应用范围比较广,可以对所有应用做负载均衡;
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
LVS的缺点:
1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。

Nginx的优点:
1、工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
6、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
7、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;
Nginx的缺点:
1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。

HAProxy的优点:
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;

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

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

工作选择:

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

Git+Jenkins

1、简述集中式版本管理和分布式版本管理的优缺点。

集中式优点:
  1、采用集中式,易于管理,保证安全性;
  2、管理方便,逻辑明确,理念符合常规思维;
  3、代码的一致性高;
  4、适合人数不多的项目开发;
  5、允许一个文件有任意多的可命名属性,会关注所有的文件类型;
  6、支持二进制文件,更容易处理大文件;
集中式缺点:
  1、服务器压力太大,数据库容量暴增;
  2、必须连接在服务器上,否则基本不能工作、提交、对比、还原等;
  3、不适合开源开发。

分布式优点:
  1、适合分布式开发,强调个体;
  2、公共的服务器压力和数量都不会太大;
  3、速度快,成熟的架构,开发灵活;
  4、任意两个开发者之间可以很容易的解决冲突;
  5、离线工作,管理代码成本低,不需要依赖服务器;
  6、部署方便。基本上下个命令就可以用;
  7、良好的分支机制,可以让主干代码保持干净。
分布式缺点:
  1、资料少,学习成本比较大,学习周期比较长,要求人员素质比较高;
  2、不符合常规思维;
  3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

Jenkins怎么实现上线?

gitlab怎么备份的

什么是配置管理?配置管理目的是什么?

简述一个系统的发布流程。

简述软件完整的生命周期,及工作过程中产品从立项到上线的流程。

不考虑环境因素,简述引起编译过程报错的原因。

简述集中式版本管理和分布式版本管理的优缺点。

说一下你了解的配置管理,版本控制,持续集成等工具?

jenkins都用过哪些插件,简单介绍一下?jenkins如何备份?

用命令将test.sh文件发送到OS为Centos的minion 的/usr/local目录下

Jenkins你是怎样使用的,如何发布代码和回滚代码?有结合使用其他软件比如gitlab没有?

Jenkins什么版本 有没有用到pipeline

公有云

1、你用过那些云平台?用过其中的那些产品

阿里云、华为云

2、你所知道的是虚拟化产品和方案有哪些?并对这些方案进行一个简单的对比。

虚拟化软件有:
(1) 公有云平台:亚马逊AWS,阿里云,腾讯云,华为云,QingCloud;
(2) 混合云平台:ZStack,BeyondCMP,CAS虚拟化平台等;
(3) 私有云平台:VisionStack杭州云容,ESCloud易捷云,Ucloud,AWCloud,ZStack等

架构

1、说说你对B/S结构与CIS结构的认识。

B/S 是浏览器服务器架构
C/S 是客户端服务端架构

客户端服务端架构
对硬件和软件要求高

浏览器服务器架构
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统

对安全要求不同
C/S 对服务端、客户端都安全都要考虑。
B/S 因没有客户端,所以只注重服务端安全即可。

监控

1、请你说说你使用过得监控软件的各自的特点。

zabbix :图像化,可以自定义模板,功能强大
Prometheus:支持在多层监控,业务、应用、系统层都可监控,可以集成其他监控,经常与k8S一起用

2、服务器监控有哪些方法

1、利用脚本定时检查服务,系统性能
2、利用第三方监控软件

脚本

1、写一个脚本实现批量添加20个用户,用户名为user1-20,密码为user后面跟5个随机字符

 #!/bin/bash
   #description: useradd
   for i in seq 1 20
   do
   pwd=$(cat /dev/urandom | head -1 | md5sum | head -c 5)
   useradd user$i
   echo "user$i$pwd" | passwd --stdin user$i
   echo user$i user$i$pwd" >> userinfo.txt
   done

2、请试着写出一个杀死进程http的shell脚本

pid=`pgrep httpd`
for i in $pid
do
	kill -9 $i
done

3、.请利用shell开发一个rsync服务的启动停止脚本并通过chkconfig进行开关机管理

说明:

A:rsync服务的PID文件路径为:/var/run/rsyncd.pid
B:rsync服务的启动命令为:rsync --daemon
C:rsync服务的停止命令为:kill -USR2 `cat /var/run/rsyncd.pid` && rm -f /var/run/rsyncd.pid
启动脚本

#!/bin/bash
#
#
# Define variables
RETVAL=0
Pid=/var/run/rsyncd.pid 

# Determine the user to execute
if [ $UID -ne $RETVAL ];then
   echo "Must be root to run scripts"
   exit 1
fi

# Load the local functions library
[ -f /etc/init.d/functions ] && source /etc/init.d/functions

# Define functions
start(){
        if [ ! -f "$Pid" ];then
           rsync --daemon
           RETVAL=$?
           if [ $RETVAL -eq 0 ];then
              action "Start rsync service" /bin/true
             else
              action "Start rsync service" /bin/false
           fi
          else
           echo "Rsync is running"
           exit 1
        fi
        return $RETVAL
}

stop(){
        if [ -f "$Pid" ];then
           kill -USR2 $(cat $Pid)
		   find /var/run -maxdepth 1 -type f -name "rsyncd.pid"|xargs rm -f
           RETVAL=$?
           if [ $RETVAL -eq 0 ];then
              action "Stop rsync service" /bin/true
             else
              action "Stop rsync service" /bin/false
           fi
          else
           echo "Rsync is not running"
           exit 1
        fi
        return $RETVAL
}

status(){
        if [ -f "$Pid" ];then
           echo "Rsync is running"
          else
           echo "Rsync is not running"
        fi
        return $RETVAL
}

# Case call functions
case "$1" in
  start)
        start
        RETVAL=$?
        ;;
  stop)
        stop
        RETVAL=$?
        ;;
  restart)
        stop
        sleep 2
        start
        RETVAL=$?
        ;;
  status)
        status
        RETVAL=$?
        ;;
  *)
        echo "USAGE:$0 {start|stop|restart|status}"
        exit 1
esac

# Scripts return values
exit $RETVAL

4、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的ip有哪些。

#!/bin/bash
for ip in `seq 1 255`
  do
    {
     ping -c 1 192.168.1.$ip > /dev/null 2>&1
     if [ $? -eq 0 ]; then
          echo 192.168.1.$ip UP
     else
          echo 192.168.1.$ip DOWN
     fi
   }&
done
wait

5、.列举你所熟悉的脚本语言,并选一种脚本语言编写一个脚本解决你所遇到的问题。

shell 

分割Tomcat日志,
log_path=/opt/tomcat/logs
namelog=/opt/tomcat/logs/name_log
d=`date +%Y-%m-%d`
d7=`date -d'7 day ago' +%Y-%m-%d`
cd ${log_path} && cp catalina.out catalina.$d.log
echo > catalina.out
cd ${namelog} && cp name name.$d.log
echo > name
rm -rf $log_path/catalina.${d7}.log
rm -rf $namelog/name_log/name.${d7}.log

6、写shell实现输出top10的IP地址

#!/bin/bash 

cat url.log | sort | uniq -c |sort -n -r -k 1 -t   ' ' | awk -F  '//'  '{print $2}' | head -10   >  ip10.txt

7、写一个脚本将数据库备份并打包至远程服务器192.169.1.1/backup目录下

#!/bin/bash 
/opt/mysql/bin/mysqldump -uroot -p*****  -R  --routines --events --triggers  库名 >/mysqlbackup/库名+日期.sql
scp /mysqlbackup/库名+日期.sql  129.169.1.1:/backup 

8、你公司中将/var/www/html/data的文件,定期备份到192.168.90.11(centos系统)下的/var/backup下目录,请用简单的shell实现。

crontab -e 
scp  /var/www/html/data  192.168.90.11/var/backup

9、如何监控某个网站最近1天的访问ip及其访问量,并对单日单个ip访问量超过10000次的ip进行报警

#!/bin/bash
cat access.log | sort | uniq -c |sort -n -r -k 1 -t   ' ' | awk -F  '//'  '{print $2}'  > ip.txt 
for i in `cat ip.txt`
do 
  if [ i >  10000 ];than
     echo "waring ,i> 100000" >  waring.txt
done
 

10、只写一个命令,修改/tmp/input.txt文件内容要求:

删除所有空行

如果一行中包含‘11111’ ,则在前面插入‘AAA’,在后面插入‘BBB’如: 000AAA1111111BBB2222.

1、sed -ri '/^[ \t]*$/d'  /tmp/input.txt
2、sed -ri s/1111/AAA&/;s/1111/&BBB/' /tmp/input.txt  

11、在bash shell 中 $0, 1 , 1, 1,?,KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,*,$@分别代表什么?

        $0    脚本名
        $1    第一个参数
		$*		所有的参数
		$@ 	所有的参数
		$# 	参数的个数
		$$ 	当前进程的PID
		$!     上一个后台进程的PID
		$?		上一个命令的返回值 0表示成功

12、正则表达式d+[d]+ 能匹配下列哪个字符:

12
dd12s
d123
d12d
答:d12d

13、在shell中变量的赋值有四种方法,其中name=12的方法称?

直接赋值

14、写一个脚本(shell、python)实现nginx日志按天分割,并将前一天的日志进行压缩,总共保留10天的备份?

#!/bin/bash
nginxpid=`/usr/bin/ps aux|grep nginx|grep nginx|awk '/master/{print$2}'`  #找出nginx服务的master进程并取出它的pid
accesslog=`/usr/sbin/lsof -p $nginxpid|awk '/access.log/{print $9}'`             #找出pid文件的路径
log_path=`/usr/bin/dirname $accesslog`                                    #取出它的目录
YESTERDAY=$(date -d "yesterday" +%Y%m%d)                                  #找出昨天的日期例如:20190422
new_path=/usr/bin/new
if [ ! -d $new_path ];then
mkdir $new_path
fi

#在每天的0点切割日志
mv  ${log_path}/access.log  ${new_path}/access_${YESTERDAY}.log          #将前一天的日志移到新目录下面
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'` #发送USR1信号,重新打开日志文件,否则会往mv后的文件写日志
                                                  #原因在于:linux系统中,内核是根据文件描述符来找文件的。如果不这样操作导致日志切割失败。
tar -zcf ${new_path}/access_${YESTERDAY}.tar.gz ${new_path}/access_${YESTERDAY}.log  #将这个日志压缩
if [ $? != 0 ];then echo "命令执行错误";exit 1;fi                               #压缩出问题则退出
rm -f ${new_path}/access_${YESTERDAY}.log                                     #没问题则删除原文件

#总共保留10天的压缩文件,那么就要删除11天前的文件,因为当前时间点还没有压缩文件
find ${new_path} -type f -mtime +11 -exec rm -f {} \;

15、一个bash shell脚本的第一行是什么?

命令解释器

16、批量检查多个网站地址是否正常?

#!/bin/bash
web_array=(
http://blog.oldboyedu.com    ####多个网站地址
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.7
)
while true
do

for ((i=0;i<${#web_array[*]};i++))
do
wget -T 10 --tries=2 --spider ${web_array[$i]} >/dev/null 2>&1

if [ $? -eq 0 ]
then
    echo "${web_array[$i]} is ok" 
else
    echo "${web_array[$i]} is bad"

fi
sleep 3
done

done

17、.grep -E ‘[Hh]enr(y|ietta)’ file 的功能是?

匹配file中  Henry   Henrietta    henry  henrietta

18、文件A.txt内容为‘12:34:56’ ,只输出A.txt中的34

awk  -F":"  '{print $2}'   A.txt 

19、用sed修改test.txt的23行test为tset

 sed –i ‘23s/test/tset/g’ test.txt

其他

你熟悉的远程控制软件有哪些?请列列举三种以上。

向日葵
teamviewer
vnc

默认情况下zookeeper的数据文件和事务日志是保存在同一个目录中,建议是将事务日志存储到单独的磁盘上,原因是?

平时在公司开发系统肯定都利用可视化配置界面将所有配置信息配置好了,如果要将这些配置信息部署到新的环境,或者更新已经存在的另一个环境的配置信息, 肯定不能把整个Zookeeper集群的文件夹都拷贝过去,删掉原有的完全替换为现在的新的这个。

你配置过那些redis的参数,作用是什么?

port 6379  Redis默认监听端口
指定日志输出的文件名,可设为/dev/null屏蔽日志    logfile ""
保存数据到disk的策略:900 秒有 1 条改变保存到disk   save 900 1
                  300 秒有 10 条改变保存到disk  save 300 10
                  60 秒有 10000 条改变保存到disk   save 60 10000       
本地数据库存放路径,默认值为 ./  dir ./

数据库

1、系统启动后,不能连接数据库,可能是哪些方面的原因?

配置错误
数据库未打开
数据库密码不对

2、已知表:
Create Table Department
( dept_ id varchar(2) not null, --部门编号
dept_ name varchar(20) not null, – 部门名称
dept_ leader varchar(10) - 部门经理
Create Table Personnel
( id varchar(4) not null, --员工号
name varchar(10) not null, -姓名
dept id varchar(2) not null, -部门编号
age integer, – 年龄
gzsj date, – 参加工作时间
technical post varchar(10), 一职称
salary integer - 薪水
)
(1) Department 增加一列字段notes,长度为10的字符串,默认值为‘0’ ,请写出相关
SQL语句

alter Department add notes varchar(10) not null default 0;  

(2)查找工资大于2000元的员工记录,并按员工号id升序排列

select * from Personnel where salary > 2000 order by id;

(3)查找工资大于2000元的员工所在部门、部门编号、部门经理、员工名称

select D.dept_name,D.dept_leader,D.dept_id,P.name from Personnel P left join Department D on D.dept_id = P.dept_id where P.salary > 2000;

3、数据库表和视图的区别?存储过程和函数的区别?

表 是真实存在的,它占内存空间
视图 是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句,不占任何内存
存储过程在编译后可以生成执行计划,这使得每次执行存储过程的时候效率将会更高,这是存储过程,另外台提交参数的时候,使用存储过程将会减少网络带宽流量,这是存储过程相对于普通的sql语句在性能上的最大的优势
函数:只能返回一个变量的限制。而存储过程可以返回多个。
函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行
执行的本质都一样。
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

4、简述drop, truncate, delete操作的异同( 假设delete不带where语句)

drop 彻底删除
truncate 清除表内容
delete 不加where 删除表内容 加where 指定条件

5、sql优化的过程

1.通过show status 了解各种SQL的执行频率
2.定位执行效率低的SQL语句
3.通过explain分析低效SQL执行计划
4.通过show profile分析SQL
5.通过trace分析优化器如何选择执行计划

6、表t1数据有1000w,求表tl中字段id的最大值和最小值,如何查询速度更快?

select max(id) from t1
select min(id) from t1

7、表t2中数据有1000w,其中tel字段创建了索引.找出所有137开头的手机号。

select * from t2 where left(tel,3) = '137';

8、分别写出Mysql, Sql serer,Oracle 数据库的客户端管理工具。

mysql:  mysql phpmyadmin
sql server: SSMS
oracle: oracle client

9、写出mysq数据库备份数据使用的命令

mysqldump

10、写出备份和恢复Oracle数据库的方法。

 Oracle数据库有三种常用的备份方法,分别是导出/导入(EXP/IMP)、热备份和冷备份。导出/导入备份是一种逻辑备份,相对于导出/导入来说,热备份、冷备份是一种物理备份。

11、要清空一个几百万数据的表A里的数据,通常我们用的SQL语句为?

delete from a
truncate table a

12、从A表中查询出字段B等于1的集合总数,通常我们用的SQL语句为?

select count(*) from a where b = 1;

13、MySQL创建数据库的命令,创建表的命令,插入语句的命令

create database dbname character set 'utf8';
create table tname(id int);
insert into tname values(1);

14、如何做服务器的安全、容灾、以数据库为例

1、每天定时备份数据库
2、mysql按需求进行主从复制、主主复制、读写分离等保证数据即时备份
3、利用keepalived等工具使数据库进行高可用

15.请详细描述mysql主从复制原理

主节点:
开启二进制日志,主库上的数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中。
dump线程:读取主库二进制日志事件用来响应从库的请求
从节点:
I/O 线程 :从master 请求二进制日志事件,并保存于中继日志中
SQL thread: 从中继日志中读取日志事件,在本地完成重放

16.mysql一主多从,主库宕机,如何合理切换到从库,其他的从库有如何处理

1、首先停业务
2、查看SQL线程的执行状态:
show slave status\G;
查看Slave_SQL_Running_State项是否为Slave has read all relay log; waiting for more updates,如下:
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
或执行show processlist;
如果有Slave has read all relay log; waitingfor more updates 则表示从库都同步完成了。
3、所有从库执行show slave status\G;
对比所有从库的Relay_Master_Log_File,Exec_Master_Log_Pos两个参数的值,数值最大的作为新的主库,如果所有从库的值都相同,都没有落后于主库,选择哪个从库都可以做为新主库.
4、选好准主库后,执行stop slave;reset slave ;reset master;
5、在准主库上用户授权,其他从库上change  master指向主库,配置主从复制。

17.请举一个生产中你实际遇到网站打开慢由于访问mysql数据库慢导致的

一次调用后台数据特别慢,经查询是mysql前期插入数据未加上有效的索引
检查 :首先show  full processlist 查看数据库中的线程是否有都是有用的线程或者是否有线程卡住,经检查是一个查询语句的线程时间过长。
explain  select *** 语句,发现该查询语句查询的是原始数据,没找索引。
最初发现直接插入索引,执行一个小时没反应,并且会导致锁表。
解决:
导出原表数据
创建新表与原表结构保持一致,在该表上执行alter语句添加索引;
将表数据导入创建的新表;
修改新建的表名为原表名。

18、mysql通过()作为媒介来实现主从数据同步

二进制日志

19、是否有数据库维护工作,列出高可用方案,备份及还原方案

备份:每天定时用mysqldumo 备份数据库
高可用 :keepalived + mysql主从,当主库宕掉后,会有脚本将从库只读改为读写并将其提升为主库,保证服务的不中断。

20、写出mysql备份Db_test,Db_test2这两个库命令

mysqldump -uroot -proot --databases Db_test,Db_test2 >/tmp/user.sql

21、写出mysql更改root用户密码命令

set password for root@localhost = password('新密码'); 

22、、mysql给新用户newuser赋予select\insert\delete 权限访问new_test库,只允许192.168.0.0/24网段访问,然后回收delete权限。

grant select,insert,delete ON new_test to newuser@‘192.168.0.*’;
revoke  delete ON new_test to newuser@‘192.168.0.*’;

23、mysql数据库有每日备份和binlog,简述恢复数据库到指定时间的思路。

查看位置点
mysqlbinlog查看详细位置 
mysqlbinlog 命令把截取的pos点导出sql语句:eg:mysqlbinlog --start-position=214 --stop-position=1257 /data/3307/mysql-bin.000006 > /tmp/binlog.sql
source sql语句

24、mysql数据库如何实现读写分离

1、可以在配置文件中设置一台mysql 只读,另一台可以读写
2、利用软件mycat实现

25、在mysql客户端查询中,如何获取当前所有连接的进程信息。

show full processlist;

26、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

1、show engine  innode status ;查看锁问题

2、使用多台slave来分摊读请求;

      配置有用的参数,

eg:–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒,\#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据;

–master-connect-retry=seconds 单位为秒 默认设置为 60秒 #参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试;

       修改配置文件,尽量让主库的DDL快速执行

比如 sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也 可以设置为0来提高sql的执行效率

      架构上实行读写分离,半同步等;

27、Oracle查询sql:select 1 from table_name where a=1 and b=2 中那个查询条件会先执行? a=1

a=1 b=2

28、oracle清空表数据,不能留归档日志的DML命令是什么?

delete truncate

29、在oracle 中,下面那个函数与||运算符有相同的功能 B

A、ltrim
B  contract
C   substr
D、instr

30、mysql实现级联同步,需要修改那些参数?

log-bin

servier-id 

31、mysql如何查看某一用户的权限?

show grants for  user@“”

32、如何定位执行时间过长的sql语句?

1、开启慢日志

2、show  full processlist ; 通过state  time   command  查看连接时间超长的进程

33、mysql如何查看正在执行的查询语句?

show full processlist ; 通过command、state列 查看

34、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

1、show engine  innode status ;查看锁问题

2、使用多台slave来分摊读请求;

      配置有用的参数,

eg:–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒,\#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据;

–master-connect-retry=seconds 单位为秒 默认设置为 60秒 #参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试;

       修改配置文件,尽量让主库的DDL快速执行

比如 sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也 可以设置为0来提高sql的执行效率

      架构上实行读写分离,半同步等;

35、如何产看mysql当前支持的存储引擎?

mysql> show engines;

36、系统启动后,不能连接数据库,可能是哪方面的原因?

1、检查数据库是否启动

2、检查数据库是否正常可以被连接

3、检查磁盘是否正常

37、写出备份恢复mysql中gpower数据库的命令

备份:mysqldump  -u root -p  pass      gpower >  gpower.sql

恢复:进库  mysql  >  source gpower.sql

网络

1、下面的网络协议中,面向连接协议的是©

A. 传输控制协议

B. 用户数据报协议

C. 网际协议

2、一台主机要实现通过局域网与另一个局域网通信,需要做的工作是(D)
A 配置域名服务器
B 定义一条本机指向所在网络的路由
C 定义一条本机指向所在网络网关的路由
D 定义一条本机指向目标网络网关的路由

3、在局域网络内的某台主机用ping 命令测试网络连接时发现网络内部的主机都可以连通,而不能与公网连通,问题可能是©
A 主机IP设置有误
B 没有设置连接局域网的网关
C 局域网的网关或主机的网关设置有误
D 局域网DNS 服务区设置有误

4、说明静态路由和动态路由的区别?

静态路由
  是在路由器中设置的固定的路由表。除非网络管理员干预,否则静态路由不会发生变化由于静态路由不能对网络的改变作出反映,一般用于网络规模不大、拓扑结构固定的网络中。静态路由的优点是简单、高效、可靠。在所有的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准

动态路由
  是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由器表的过程。它能实时地适应网络结构的变化。如果路由更新信息表明发生了网络变化,路由选择软件就会重新计算路由,并发出新的路由更新信息。这些信息通过各个网络,引起各路由器重新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑变化。动态路由适用于网络规模大、网络拓扑复杂的网络。

5、下面的网络协议中,面向连接的的协议是©
A 传输控制协议

B 用户数据报协议

C 网际协议

D 网际控制报文协议

6、IDC机房宽带突然从平时100M增加到400M,请你分析问题可能原因所在,并给出解决方法

(1)可能遭受DDOS攻击(写一个预防DDOS的脚本)
(2)内部的服务器中毒,大量外发流量(内部运维规范、制度)
(3)网站的元素被盗连,在门户页面被推广导致大量流量产生(网站的基本优化)
(4)用户访问量剧增

7、.http是()层的协议,Referer指的是()

http是七层的协议
Referer是http请求头的一部分,表示一个来源。
比如在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:Referer=http://www.google.com

8、.hash查找做好的情况时间复杂度是()

1.判断key,根据key算出索引。
2.根据索引获得索引位置所对应的键值对链表。
3.遍历键值对链表,根据key找到对应的Entry键值对。
4.拿到value。

9、查看tcp连接情况

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

10、简述画出TCP/IP三次握手

第一次:客户端向服务端发送一个建立连接的请求

第二次:服务端接收到这个请求并像客户端发送一个确认建立连接的请求

第三次:客户端接收到服务端的反馈并向服务端回复一个确认连接的消息

三次握手成功 可以传输数据了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chNlNJvL-1598083266417)(assets/image-20200514141114030.png)]

11、.查看TCP的并发请求数与其连接状态

 netstat -ant | awk '{print $NF}' | grep -v '[a-z]'| sort | uniq -c

12、使用curl,wget查看www.baidu.com的head信息命令

curl -I http://baidu.com
wget http://baidu.com -S

13、在网络排错中,你经常会用到的操作命令的作用:

ping  查看网络是否互通

netstat  一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

nbtstat  用于查看在TCP/IP协议之上运行NetBIOS服务的统计数据,并可以查看本地远程计算机上的NetBIOS名称列表。

net   

telnet   查看端口是否互通

ipconfig  显示IP地址

14、使用tcpdumo监听主机192.168.1.1,tcp端口为80的数据,同时将结果保存输出到tcpdump.log请写出相应的命令

tcpdump host 192.168.1.1 and  tcp port 80  > tcpdump.log

15、linux下添加172.132.7.132为ip白名单

#添加规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.132.7.132/24" port protocol="tcp"  accept"

#reload使生效
firewall-cmd --reload

16、办公室同事反映网络打不开,请简述一下排查故障的思路及解决方法?如果时好时坏又该怎么排查?

查看网卡配置是否有问题
查看路由表是否正确   
时好时坏 查看是否IP冲突

17、网站出现200,302,400,404,500,502,503是什么意思?怎么排查和解决?

200  请求已成功,请求所希望的响应头或数据体将随此响应返回。
302 请求的资源现在临时从不同的 URI 响应请求。
400 1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。   2、请求参数有误。
404  请求失败,请求所希望得到的资源未被在服务器上发现。
500  服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效
的响应。
503 由于临时的服务器维护或者过载,服务器当前无法处理请求。


400是客户端问题  50是服务端问题

18、描述会话超时、会话保持分别是什么概念什么场景使用?

会话超时:在HTTP协议中,客户机不再活跃时没有明确的终止信号.这意味着只有超时才是标识客户机不再活跃的唯一机制.比如用户打开网页后长时间不点
会话保持:在一次会话过程中发起的多个请求都会落到同一台机器上。常用于负载均衡

19、介绍一下那些可以优化加速用户访问网站体验的技术措施?

1、利用缓存
2、后端实行动静分离

20、.什么叫网站灰度发布?如何实现灰度发布?

先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。

当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。
如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。

21、哈希和加密的区别是什么?各自有什么用途?

哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。

22、在linux系统中,测试DNS服务器是否能正确解析域名的客户端命令使用什么命令?

nslookup

23、tcp/ip四层模型分别是什么?

主机到网络层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。

24、其中应用层最常用的协议有什么?

DNS 
SMTP   
HTTP 
HTTPS 
TELNET
FTP 

25、传输控制协议中,面向连接的协议是?

TCP/IP 协议

26、一台主机要实现通过局域网与另一个局域网通信,需要做的工作是?

1.设置本机的默认网关 。

2.本地局域网默认网关上需要设置一条路由,用以完成本地局域网内的任一主机到目标局域网主机的路由工作。

27、局域网的网络地址192.168.1.0/24 局域网络连接其他网络的网关地址是192.168.1.1。主192.168.1.20访问172.16.1.0/24网络时,其路由如何设置?

route add -net 172.16.1.0  gw 192.168.1.1 netmask 255.255.255.0 metric1

28、ifconfig命令的作用是?

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数

29、在局域网内的某台主机ping命令测试网络连接时发现网络内部主机都可以ping通,而不能与公网联通,问题可能是

局域网的网关或主机的网关设置有误

30、包含主机名到ip地址的映射关系的文件是?

/etc/hosts

31、如何将本地80端口的请求转发到8080端口,当前主机ip192168.2.1

iptables –t nat -A PREROUTING -d 192.168.2.1 -p tcp –dport 80 -j REDIRECT --to 8080

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

ps -ef | grep httpd | wc -l

netstat -nt | awk ‘{++S[$NF]}END{for(a in S) print a,S[a]}‘

33、用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

34、两台电脑都在同一个网络环境中A电脑访问不到B电脑的应用。此类现象可能是那些方面所致?如何处理?

1、防火墙未添加白名单,需要在防火墙配置中添加白名单

2、应用例如nginx未添加白名单   在应用的访问配置中添加白名单

35、修改以太网mac地址的命令为?

ifconfig

36、.查看WEB服务器当前的连接数、并发数、进程数。

netstat -n|grep  ^tcp|awk '{print $NF}'|sort -nr|uniq -c   

37、257.202.106.100.1是何类地址?

C

38、当IP地址的主机地址全为1时表示?

对于该网络的广播地址

39、路由器的主要功能是?

选择信息包传送的最佳路径

40、linux下如何添加路由

route  add   destination    mask     gw   

容器

镜像相关

1、如何批量清理临时镜像文件?
docker rmi $(sudo docker images -q -f danging=true)

2、如何查看镜像支持的环境变量?
docker run IMAGE env

3、本地的镜像文件都存放在哪里
于Docker相关的本地资源存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像底层文件。

4、构建Docker镜像应该遵循哪些原则?
整体远侧上,尽量保持镜像功能的明确和内容的精简,要点包括:# 尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小# 清理编译生成文件、安装包的缓存等临时文件# 安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖# 从安全的角度考虑,应用尽量使用系统的库和依赖# 使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录

容器相关

1、容器退出后,通过docker ps 命令查看不到,数据会丢失么?
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。

2、如何停止所有正在运行的容器?
使用docker kill $(sudo docker ps -q)

3、如何清理批量后台停止的容器?
使用docker rm $(sudo docker ps -a -q)

4、如何临时退出一个正在交互的容器的终端,而不终止它?
按Ctrl+p,后按Ctrl+q,如果按Ctrl+c会使容器内的应用进程终止,进而会使容器终止。

5、很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
使用docker logs,后面跟容器的名称或者ID信息

6、使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?
创建镜像时Dockerfile要指定正确的EXPOSE的端口,容器启动时指定PublishAllport=true

7、可以在一个容器中同时运行多个应用进程吗?
一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程

8、如何控制容器占用系统资源(CPU,内存)的份额?
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。

仓库相关

1、仓库(Repository)、注册服务器(Registry)、注册索引(Index)有何关系?
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。

2 、从非官方仓库(如:dl.dockerpool.com)下载镜像的时候,有时候会提示“Error:Invaild registry endpoint https://dl.docker.com:5000/v1/…”?
Docker 自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。DOCKER_OPTS=”–insecure-registry dl.dockerpool.com:5000”重启docker服务

配置相关

1、Docker的配置文件放在那里。如何修改配置?
Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker

2、如何更改Docker的默认存储设置?
Docker的默认存放位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。

Docker与虚拟化

1、Docker与LXC(Linux Container)有何不同?
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:
移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;仓库系统:仓库系统大大降低了镜像的分发和管理的成本;周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。

2 、Docker与Vagrant有何不同?
两者的定位完全不同Vagrant类似于Boot2Docker(一款运行Docker的最小内核),是一套虚拟机的管理环境,Vagrant可以在多种系统上和虚拟机软件中运行,可以在Windows。Mac等非Linux平台上为Docker支持,自身具有较好的包装性和移植性。原生Docker自身只能运行在Linux平台上,但启动和运行的性能都比虚拟机要快,往往更适合快速开发和部署应用的场景。

3、开发环境中Docker与Vagrant该如何选择?
Docker不是虚拟机,而是进程隔离,对于资源的消耗很少,单一开发环境下Vagrant是虚拟机上的封装,虚拟机本身会消耗资源。

docker 其他

1、Docker能在非Linux平台(Windows+MacOS)上运行吗?
可以

2 、如何将一台宿主机的docker环境迁移到另外一台宿主机?
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可

3、Docker容器创建后,删除了/var/run/netns 目录下的网络名字空间文件,可以手动恢复它:
查看容器进程ID,比如1234
sudo docker inspect --format=’{{. State.pid}}’ $container_id 1234
到proc目录下,把对应的网络名字空间文件链接到/var/run/netns,然后通过正常的系统命令查看操作容器的名字空间。

4、对docker都知道些什么
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口

5、vmware和docker的区别
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。

6、Docker 和虚拟机有啥不同?
Docker 是轻量级的沙盒,在其中运行的只是应用,虚拟机里面还有额外的系统

7、docker 的三大组件是什么?分别的作用?
镜像(Image)、容器(Container)、仓库(Repository)是我们常说的Docker的三大组件
Docker镜像就是一个Linux的文件系统(Root FileSystem),这个文件系统里面包含可以运行在Linux内核的程序以及相应的数据。
容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器是一个独立于宿主机的隔离进程,并且有属于容器自己的网络和命名空间
仓库(Repository)是集中存储镜像的地方,这里有个概念要区分一下,那就是仓库与仓库服务器(Registry)是两回事,像我们上面说的Docker Hub,就是Docker官方提供的一个仓库服务器,不过其实有时候我们不太需要太过区分这两个概念。

8、如何将-台宿主机的docker 环境迁移到另外-台宿主机?
停止Docker服务,将整个docker存储文件复制到另外一台宿主机上,然后调整另外一台宿主机的配置即可

9、docker中-v -ps分别是什么
版本 活动的docker

10、使用docker搭建套简 单的LNMP环境要求最终实现能够

1.访问: index. php
2.新的网桥IP为: 192. 168.0.100/24
3.PHIP 版本为PHP-7 nginx 版本为NGINX-1.14
4.nginx 配置文件物理机路径:/data/nginxconf/nginx. conf,容器配置文件路径: /etc/nginx/ 5.使用nginx新的容器创建个新的镜像: 镜像名为: local nginx 版本为: tag-V1

11、docke容器技术有哪些优势和不足?

容器的优点
敏捷环境:容器技术最大的优点是创建容器实例比创建虚拟机示例快得多,容器轻量级的脚本可以从性能和大小方面减少开销。
提高生产力:容器通过移除跨服务依赖和冲突提高了开发者的生产力。每个容器都可以看作是一个不同的微服务,因此可以独立升级,而不用担心同步。
版本控制:每一个容器的镜像都有版本控制,这样就可以追踪不同版本的容器,监控版本之间的差异等等。
运行环境可移植:容器封装了所有运行应用程序所必需的相关的细节比如应用依赖以及操作系统。这就使得镜像从一个环境移植到另外一个环境更加灵活。比如,同一个镜像可以在 Windows 或 Linux 或者 开发、测试或 stage 环境中运行。
标准化: 大多数容器基于开放标准,可以运行在所有主流 Linux 发行版、Microsoft 平台等等。
安全:容器之间的进程是相互隔离的,其中的基础设施亦是如此。这样其中一个容器的升级或者变化不会影响其他容器。
容器的缺点
复杂性增加:随着容器及应用数量的增加,同时也伴随着复杂性的增加。在生产环境中管理如此之多的容器是一个极具挑战性的任务,可以使用
Kubernetes 和 Mesos 等工具管理具有一定规模数量的容器。
原生 Linux 支持:大多数容器技术,比如 Docker,基于 Linux 容器(LXC),相比于在原生 Linux 中运行容器,在
Microsoft 环境中运行容器略显笨拙,并且日常使用也会带来复杂性。
不成熟:容器技术在市场上是相对新的技术,需要时间来适应市场。开发者中的可用资源是有限的,如果某个开发者陷入某个问题,可能需要花些时间才能解决问题。

12、清理docker环境已停止的容器?
删除所有已经停止的容器
docker rm docker ps -a |grep Exited |awk '{print $1}'

13、查看容器名为rancher-scrvcr的输出日志?
docker logs -f -t --tail 行数 容器名

14、Docker常见的网络模式有哪些,区别是什么?
Docker网络子系统支持以下网络驱动:
bridge:默认网络驱动,用于单宿主机的docker容器和主机通信;
overlay:叠加网络,用于连接多个宿主机Docker进程管理的容器和swarm services;
macvlan:将容器的虚拟网卡直接连接在主机所在的物理网络上;
host:Docker 17.06+ 创建swarm services时支持,容器直接使用docker主机的网卡和网络;
none:禁用容器的网络,不连接任何网络,swarm services不支持该类型;
Network plugins:安装第三方网络插件,实现自定义的网络类型

15、写出下列操作对应的命令
1)删除pod
kubectl delete pod pod名

2)查看 pod
kubectl get pod

3)查看 service列表
kubectl get svc

5)查看所有 Docker容器
docker ps -a

6)删除 Docker容器
docker rm -f $(docker ps -a -q)

  1. 查看Docker镜像
    docker images

8)删除 Docker镜像
docker rmi image名

9)获取镜像
docker pull image名

16、下列哪项可以作为集群的管理工具()
a.pupper b.pdsh c.cloudera manager d.zookeeper

17、Dockerfile如何优化?
编写.dockerignore 文件
容器只运行单个应用
将多个 RUN 指令合并为一个
基础镜像的标签不要用 latest
每个 RUN 指令后删除多余文件
选择合适的基础镜像(alpine 版本最好)
设置 WORKDIR 和 CMD
使用 ENTRYPOINT (可选)
在 entrypoint 脚本中使用 exec
COPY 与 ADD 优先使用前者
合理调整 COPY 与 RUN 的顺序
设置默认的环境变量,映射端口和数据卷
使用 LABEL 设置镜像元数据
添加 HEALTHCHECK

18、描述一下服务器虚拟化技术和容器技术原理,以及各自的优劣

虚拟化的优点:1、资源池化,将硬件资源虚拟化为抽象的资源从而提升了资源利用率;2、具有易拓展性,当物理资源不够时可以增添物理资源再将其抽象成虚拟资源以供使用。3、为云服务的到来打下基础;这时我们发现虚拟化技术并没有解决全部的问题,它也缺点:每一个虚拟机环境都需要在一个完整的OS之上运行,当虚拟机个数较多时就会对物理资源造成很大的占用。同时依旧需要物理服务器的支持,且可移植性的问题依旧没有解决。

在后来就有了容器技术,它将软件及其运行环境打包成一个整体从而主要解决了可移植性、开发和运维环境差异等带来的问题,它和云计算结合更是解决了必须具备物理服务器的问题,随之而来的问题也就迎刃而解了;

19、docker容器其中的命令有哪些,举例说明。

docker run --name myredis –d redis  运行一个name为myredis的容器
docker ps     查看运行中的容器
docker start container-name/container-id  启动一个容器
docker stop container-name/container-id	  停止一个容器
docker rm container-id     删除一个容器

20、容器常用操作

如何批量删除已停止运行的容器?   
docker ps -a|grep Exited|awk '{print $1}'
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
如何查看容器挂载了哪些目录?
docker inspect container_name | grep Mounts -A 20
容器有几种网络模式?分别有哪些特点?
三种
Container:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。
None:该模式关闭了容器的网络功能。
Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
为什么构建镜像要尽量小?哪些措施可以使构建镜像更小?
因为传输和部署体积较小的镜像速度更快。
尽量在同一层运行更多的命令 
如果在镜像中通过yum安装软件包,尽量在一行装完,不要多行,同样安装完后运行,clean all后对大小影响很大
docker-compose 启动的一组容器之间可以用localhost互相通信吗?

k8s

1、什么是kubernetes? 有何优势?怎么安装(说说安装方法、分别的理解) ?
Kubernetes一个用于容器集群的自动化部署、扩容以及运维的开源平台。通过Kubernetes,你可以快速有效地响应用户需求;快速而有预期地部署你的应用;极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供了完整的开源方案。
优势
快速部署:因为你可以快速的创建并且发布一个小型服务
更容易迭代:因为可以独立的为每个服务添加新功能
更加灵活:就算单个服务(组件)不能使用,其他的服务仍能正常运行。
安装
Kubernetes有用二进制安装包安装的方式,但是比较费劲,所以k8s推出了kubeadm的安装方式,将k8s的各个组件都安装在docker之上,以容器的方式运行,也是官方推荐的方式。

2、 kubernetes怎么做版本回退?谈谈你的理解。
kubernetes的版本回退,因为已经在线上使用挺久的时间了,是利用kubernetes deployment的rollout histrory回退到指定版本。

3、能否通过kubernetes部署一一个简单的web (nginx)? 说说思路。
KubernetesDeployment为Pod 和Replica Set(下一代Replication Controller)提供声明式更新。只需要在 Deployment 中描述想要的目标状态是什么,Deployment Controller 就会帮开发者将 Pod 和 ReplicaSet 的实际状态改变成目标状态。开发者可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换。使用Deployment能够更加方便地管理Pod,包括扩容、缩容、暂停、滚动更新、回滚等。在Choerodon中用实例的方式来展现Deployment,同时支持在线升级,停止,删除等多元化功能

4、可以在一个Docker Container中同时运行多个应用进程吗?
可以同时运行,但不建议

5、kubernetes 集群由那些主要组件组成?各个组件的功能是什么,它们之间是如何交互的?
Pod 安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体

Lable
一些Pod有Label(enter image description here)。一个Label是attach到Pod的一对键/值对,用来传递用户定义的属性。上面。

Replication Controller
确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3.如下面的动画所示
如果之前不响应的Pod恢复了,现在就有4个Pod了,那么Replication Controller会将其中一个终止保持总数为3。如果在运行中将副本总数改为5,Replication Controller会立刻启动2个新Pod,保证总数为5。还可以按照这样的方式缩小Pod,这个特性在执行滚动升级时很有用。
当创建Replication Controller时,需要指定两个东西:
Pod模板:用来创建Pod副本的模板
Label:Replication Controller需要监控的Pod的标签。

Service
Service是定义一系列Pod以及访问这些Pod的策略的一层抽象。Service通过Label找到Pod组。因为Service是抽象的,所

Node
节点(上图橘色方框)是物理或者虚拟机器,作为Kubernetes worker,通常称为Minion。每个节点都运行如下Kubernetes关键组件:
Kubelet:是主节点代理。
Kube-proxy:Service使用其将链接路由到Pod,如上文所述。
Docker或Rocket:Kubernetes使用的容器技术来创建容器。

Master
集群拥有一个Kubernetes Master(紫色方框)。Kubernetes Master提供集群的独特视角,并且拥有一系列组件,比如Kubernetes API Server。API Server提供可以用来和集群交互的REST端点。master节点包括用来创建和复制Pod的Replication Controller。

6、kubernetes中的pod内有几个容器它们之间是什么关系?
Pod中的容器们运行在一个逻辑“主机”上。他们使用同一个网络命名空间(network namespace,换句话讲,就是同样的IP地址和端口空间),以及同样的IPC(inter-process communication,进程间通信)命名空间,他们还使用共享卷(shared volume)。这些特征使得Pod内的容器能互相高效地通信。同时,Pod使得你可以将多个紧耦合的应用容器当做一个实体来管理。

  1. K8s 集群中有一个节点notready.请说明排查该节点故障流程。
    检查master到node节点的网络,或者重启一下网络pod,

  2. 如何通过kubectl查看某个 label 关联的所有pod。
    kubectl get pods -l name=

  3. 下列是一个示列的yaml,使用kubectl create -f app.yaml
    创建这个deployment与svc,
    使用curl-Lsv svc:port 发现不通, 是什么问题。请回答!
    apiVersion:v1
    kind: Service
    metadata:
    name: openapiv1-sVc
    labels:
    SVe: openapiv1-svc
    ver:3.2.0
    namespace: aps-os-test
    spec:
    type: NodePort
    ports:

  • port: 8080
    targetPort: 8090
    protocol: TCP
    name: htp
    nodePort: 32471
    selector:
    app: openapiv1
    ver:3.2.1
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: openapiv1
    namespace: aps-os-test
    spec:
    replicast1
    metadata
    name: openapiv1
    labels:
    app: openapiv1
    ver:3.2.0
    spec:
    ”name: app-container
    image: registryaps datanvas.com:5000/ap/service/base/jre-aps:3.2.0
    workingDir: /opt/workdir
    command: [/i/ash,/run.shT
    ports:
    . containerPort: 8080
    name: http
  1. 使用下面app.yaml创建后发现Deployment 和svc创建成功,但是pod没有生成是什么
    原因。请给出分析思路以及可能存在的原因。
    apiVersion:v1
    kind: Service
    metadata:
    name: openapiv1-5VC
    labels:
    svc;: openapiv1-sVC
    ver:3.2.0
    namespace: aps-os-test
    spec
    type: NodePort
    ports:
    . port: 8080
    targetPort: 8080

  2. kubectl get pod的时候某个pod一直处理terminating, 以什么命令可以强制删除。
    使用kubectl中的强制删除命令
    kubectl delete pod podName -n NAMESPACE --force --grace-period=0

  3. 请问你在kubernetes中用过有状态服务吗?有哪些?
    有,mysql数据库、kafka、zookeepe

13、如何从外部(kubernetes集群之外), 访问到kubernetes里创建的service?
根据创建Service的type类型不同,可分成4种模式:
ClusterIP: 默认方式。根据是否生成ClusterIP又可分为普通Service和Headless Service两类:
普通Service:通过为Kubernetes的Service分配一个集群内部可访问的固定虚拟IP(Cluster IP),实现集群内的访问。为最常见的方式。
Headless Service:该服务不会分配Cluster IP,也不通过kube-proxy做反向代理和负载均衡。而是通过DNS提供稳定的网络ID来访问,DNS会将headless service的后端直接解析为podIP列表。主要供StatefulSet使用。
NodePort:除了使用Cluster IP之外,还通过将service的port映射到集群内每个节点的相同一个端口,实现通过nodeIP:nodePort从集群外访问服务。
LoadBalancer:和nodePort类似,不过除了使用一个Cluster IP和nodePort之外,还会向所使用的公有云申请一个负载均衡器(负载均衡器后端映射到各节点的nodePort),实现从集群外通过LB访问服务。
ExternalName:是 Service 的特例。此模式主要面向运行在集群外部的服务,通过它可以将外部服务映射进k8s集群,且具备k8s内服务的一些特征(如具备namespace等属性),来为集群内部提供服务。此模式要求kube-dns的版本为1.7或以上。这种模式和前三种模式(除headless service)最大的不同是重定向依赖的是dns层次,而不是通过kube-proxy。

  1. Headless服务主要用来干什么。
    headless service 是将service的发布文件中的clusterip=none ,不让其获取clusterip , DNS解析的时候直接走pod,因为没有ClusterIP,kube-proxy 并不处理此类服务,因为没有load balancing或 proxy 代理设置,在访问服务的时候回返回后端的全部的Pods IP地址,主要用于开发者自己根据pods进行负载均衡器的开发(设置了selector)。

15、请写出一些你用过的K8s常用命令,并简要说明用途。

kubectl get nodes
kubectl get pods --all-namesapces 获取所有pod
kubectl get ns
第一阶段

1. *简述raid0、raid1、raid5三种工作模式的工作原理及特点*

raid0:条带卷,利用率100%,相对读写速率最快,相对安全性差。数据随机存入到阵列中的一个磁盘上。同时从2块磁盘读数据;读速度与raid1相差不多;

raid1:镜像卷,使用率50%,相对读写速率一般,相对安全性高。最少2块磁盘组成,数据同时存入到两块磁盘上。同时从2块磁盘读数据;写速度会比raid0慢;

raid5:带奇偶校验的镜像卷,相对读写速率较快,相对安全性高可以添加热被磁盘作为冗余。

2. *将/usr/local/test目录下大于100k小于500k的文件转移到/tmp目录下*

Find /usr/local/test -size +100k -a -size -500k -exec mv-r{}/tmp;

3. *软链接和硬链接的区别:*

硬链接不会创建新的inode,只是给源文件多加了一个文件名 软链接创建新的inode,相当于重新创建了一个文件

硬链接不能跨分区 软链接可以跨分区 硬链接删除源文件后,另一个文件还能用 软链接删除源文件后,链接文件不能再使用

4. *psaux中的VSZ代表什么意思?RSS代表什么意思?*

VSZ:虚拟内存集,进程占用的虚拟内存空间 RSS:物理内存集,进程战用实际物理内存空间.

5. *保存当前磁盘分区的分区表,dd命令是个强大的命令,在复制的同时进行转换,请写出具体命令*

Dd if=/dev/sda of=./mbr.txt bs=1M count=512

6. *6块300G的硬盘做raid5,新的设备容量是多大?*

由于RAID5磁盘阵列兼顾了安全性和速度,所以有一块磁盘是要被用作安全备份区的,所以6块300G的磁盘实际使用到的只有5块5*300=1500G

显示网络接口常见命令是:ifconfig或者ipa;查看服务端口的命令是:ss-anptul

Linux操作系统查看当前网络设备命令为:ipa,将当前计算机的IP地址设为192.168.1.10,子网掩码为255.255.255.0命令为:ifconfigeth0192.168.1.10netmask255.255.255.0

Linux查看当前主机TCP协议连接情况的命令为:ss-antpl

Linux操作系统查看/etc/passwd文件前10行的命令为:head-10/etc/passwd;将前10行追加到/etc/passwd_new文件结尾的命令是:head-10/etc/passwd>>/etc/passwd_new。

Linux操作系统启动服务名为kstoredb_NODEDBd的命令为:systemctlstartkstoredb_NODEDBd;Windows系统启动服务名为kstoredb_NODEDBd的命>令为:netstartkstoredb_NODEDBd

7. *假设服务器具有6块900G本地磁盘,单块磁盘IO约为150M/S,现对磁盘进行RAID划分,简述理论上6块盘做成RAID5级别后实>际存储大小、实际IO为多少?*

理论上6块硬盘做raid5;其中有一块盘做冗余;因为有校验位;所以

实际大小是900*(6-2)=3600G

实际IO是:写的速率150m/s(小于。理论上写过程中,RAID5会进行校验耗费时间)*4=600m/s

因为读取数据的时候校验位的盘是需要读取的所以实际:读的速率是(6-1)*150=750m/s

8. *问:请简要描述Linux系统下源代码编译方式安装软件的大致步骤*

1.部署基础环境:关闭防火墙;关闭selinux;安装编译器2.下载、解压软件包3、配置安装路径4、编译5、安装

9. *问:列出当前系统中所有的网络连接(包含进程名),请写出完整操作命令*

netstat-anputl -tTCP-l监听-a所有 -uUDP-n显示端口号和IPppid

10. *问:实时抓取并显示当前系统中tcp80端口的网络数据信息,请写出完整操作命令 tcpdump-ntcpport80*

11. *问:linux中你常用的系统命令说5个 ls、cat、mkdir useradd touch pwd*

12. *问:关闭swap分区*

swapoff-a关闭所有的交换分区 swapoff/dev/sde关闭sde交换分区

13. *问:系统安全加固*

1.密码策略 修改系统的密码策略1)经常修改密码2)使用一些特殊的字符和密码的长度增加密码的难度 3)不要随便告诉他人密码

2.权限ugo锁定系统中不必要的系统用户和组 锁定下列用户,锁定之前备份/etc/passwd和/etc/shadow文件 禁用无关的组 禁止root用户远程登录

3.预防flood攻击linux中预防SYNflood.在/etc/sysctl.conf文件中添加net.ipv4.tcp_syncookies=1

4.加固TCP/IP协议设置/etc/sysctl.conf文件相应权限

5.默认权限与umask不要修改正确的umask值022

6.做任何修改文件的动作先备份再做操作

14. *问:硬件性能测试用过什么*

对IO进行简单测试ddif=/dev/zeroof=testbs=1Mcount=4096 用top和iostat查看wa%及写硬盘速度top-n1每秒钟的cpu

通过df-h命令查看磁盘情况通过hdparm测试读取速率hdparm-t/dev/sda linux中几块盘求平均值就是磁盘的平均读取速率

15. *问:临时调整和永久生效系统内核参数在哪里调*

1.临时调整内核参数

开启内核路由转发功能,通过01设置开关 #echo"1">/proc/sys/net/ipv4/ip_forward

禁止所有的icmp回包(禁止其他主机ping本机) #echo"1">/proc/sys/net/ipv4/icmp_echo_ignore_all

调整所有进程可以打开的文件总数ps:如果大量用户访问时,可以因为该数字太小而导致错误

#echo"108248">/proc/sys/fs/file-max

2.永久调整内核参数 vim/etc/sysctl.conf

开启内核路由转发功能,通过01设置开关 net.ipv4.ip_forward=1

禁止所有的icmp回包(禁止其他主机ping本机) net.ipv4.icmp_echo_ignnore_all-=1

调整所有进程可以打开的文件总 fs.file-max=108248

16. *问:如何查看当前linux系统的状态,如CPU使用,内存使用,负载情况*

sar综合命令 mpstat11cpu监测 free-m内存使用 top负载

17. *问:显示CPU利用率的命令,查看系统版本的命令*

CPU利用率的命令:top或sar

查看系统版本的命令:cat/etc/redhat-release或uname-a

18. *问:查看网卡历史流量实时查看网卡流量*

网卡历史流量:sar-nDEV-f/var/log/sa/saxx#查看xx日的网卡流量历史

实时查看网卡流量:sar-nDEV15(每间隔1秒刷新一次,共5次)

19. *问:如何查看当前系统每个ip的连接数*

netstat-n|awk’/^tcp/{print$5}’|awk-F:’{print$1}’|sort|uniq-c

20. *问:找出/home下所有7天以前,以.ok结尾的文件列*

find/home-name"*.ok"-mtime+7

21. *问:快速生成一个10G的文件*

ddif=/dev/zeroof=testbs=10Mcount=1024

22. *问:列出Linux常见打包工具并写相应解压缩参数(至少三种)*

压缩打包命令:tar-czffilename.tardirname zipfilename.zipdirname Gzipfilename bzip2-zfilename

解压包命令:tar-xffilename.tar unzipfilename.zip gzip-dfilename.gz bzip2-dfilename.bz2

23. *标准端口的范围是?* *答:********1-65535*

24. *常见协议(http、https、ftp、mysql、redis)默认端口。*

http:80https:433ftp:21mysql:3306redis:6379

25. *请写出下列端口所运行的服务21、22、23、3306、6379*

21:ftp22:ssh23:telnet3306:mysqlredis:6379

26. *写出下面服务的常用端口:ftp、http、dns、smtp、pop3、dhcp、tftp、mysql、ssh、https*

ftp:21

http:80

dns:53

smtp:25“简单邮件传输协议”

pop3:110“邮局协议版本3”

dhcp:客户端是以UDP68服务器是以UDP67

tftp:69文件传输协议

mysql:3306

ssh:22

https:443

27. *Linux中的服务自启动添加方法有哪些。*

centos6:有2种1.chkconfig服务名on2.vim/etc/rc.d/rc.local/usr/sbin/服务名start

centos7:有三种1.systemctl enable服务名2.vim/etc/rc.localsystemctlstart服务名3.vim/etc/fstabsystemctlstart服务名

从本机复制文件、文件夹到服务器并替换同名文件的写法有哪几种?

有两种:1.scp-r源文件路径目标文件ip:目标文件路径2.rsync-avr源文件路径目标文件ip:目标文件路径

28. *请解释下Telnet和SSH的区别*

Telnet:不安全,没有对传输的数据进行加密,容易被监听还有遭受中间人攻击,telnet不能压缩传输数据,所以传输慢;

ssh:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快

29. *如何检查Selinux是否开启?getenforce*

30. *检查服务器是否正常工作的最好办法是?*

1.ping服务器ip2.ss-antul|grep服务端口3.psaux|grep服务名4.systemctlstatus服务名

31. *Linux记录log的服务叫什么名字?rsyslog*

32. *ping命令通过什么协议(internet控制信息协议)来实现?icmp*

33. *网络装机工具cobbler了解吗,有哪些组件?批量装机:pxe*

34. *5开头的笔记有查看某一端口的连接客户端IP,比如3306端口ss-antpul|grep3306*

35. *设置系统当前运行级别中test服务状态为启动时自动加载,请写出完整操作命令*

#runlevel//查看当前的运行级别#chkconfig–level5teston

36. *计划任务在11月份,每天早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?*

006-12/211bash/usr/bin/httpd.sh

37. *请写下Linux系统中cron定时任务,每天07至23点,每隔半小时执行apache重启,并禁用系统邮件通知*

crontab-e /307-23**systemctlrestarthttpd>/dev/null2>&1

38. *以下字段可能和哪个服务有关?表示什么意思?*

/5***ping-c100www.wanmel.com>/root/network.log2>&1

39. *(计划任务)每五分钟pingwww.wanmel.com100次将错误和正确的输出覆盖到/root/network.log*

/var/www/html/是网站的发布目录,如何每天凌晨0点30分对其进行自动备份,每次备份成按时间生成不同的备份包,写出操作步骤?

300***tar-zcfdate+%Y%m%d.html.tar.gz/var/www/html

40. *计划每星期天早8点服务器定时重启,如何实现?*

08**7reboot

41. *每天中午12点使用tcpdump命令抓取目的端口为tcp80的1000个包输出到当前目录,以当前时间命名。请写出定时任务及脚内容*

012***bashtcpdump.sh vimtcpdump.sh tcpdump-c1000tcpdstport80-w./date+%Y%m%d

42. *Http的错误代码含义(404、410、504、502)?*

404(未找到)服务器找不到请求的网页。

410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。

504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。

502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。

43. *apache如何修改配置参数,将默认端口改为非默认端口。*

44. *如何改变Apache端口:*

找到Apache安装目录下conf目录下的httpd.conf文件。打开它,找到“Listen”,紧接着Listen的数字就是端口号,默认状态下为“Listen80”。在之前的PHP专题中提到过关于在安装配置Apache时会遇到端口与IISHTTP端口冲突的问题,因为IISHTTP端口默认也为80。那么我们就可以在这里改变Apache的端口,从而避免冲突,比如可以改成:Listen8011。改好之后别忘重起Apache服务使得配置生效。

vim/etc/httpd/conf/httpd.conf

45. *apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?*

apache有三种工作模式:分别是prefork,worker和event

1.prefork:是一种进程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程出现问题不会影响到其他请求。要求稳定的时候使用

2.worker:是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。这种模式不能php要测试一下在访问量多的时候使用

3.event模式:是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了。在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。另外,event模式是不支持用在https上的。

46. *apache的工作模式,如何执行php代码*

进程模式prefork 线程模式work 事件模式event 安装apache的php模块libphp5.so apache做代理----后端服务器安装php-fpm

47. *进程和线程的区别?*

线程:线程来源与进程,线程模式需要事先开启 线程模式并发量高 相对与进程模式来说没有进程模式稳定 共享内存 不支持php

进程:进程稳定性高;线程稳定性低 进程独占内存;线程共享进程的内存一个进程可以有多个线程;

48. *dhcp客户端是哪个地址来申请一个新的ip地址的?*

dhcp客户端是使用广播地址来向全网发送广播包来寻找dhcp服务器的

源地址是0.0.0.0广播地址是:255.255.255.255客户端没有IP地址才需要申请,所以它只能用0.0.0.0来代替它的ip,向服务器端申请ip地址。

49. *DHCP(动态主机配置协议)*

主要目的是为了方便我们的主机IP地址的配置,如果网络中存在大量的主机时,可通过部署DHCP协议,由DHCP服务器分配可用地址给主机。

客户端启用了DHCP,开机后,它会发布一个的广播报文,广播报文经过网关时会带上相应标记,要使路由可达,当DHCP服务器收到这个报文后,DHCP服务器会根据报文标记,分配一个网关所在网段IP地址给客户端,如果所有客户端未划分网关,DHCP会在地址池内随机分配IP给客户端

地址池:在用户定义了DHCP范围及排除范围后,剩余的地址构成了一个地址池,地址池中的地址可以动态的分配给网络中的客户机使用。地址池仅对自动获取IP的方式有效,手动设置IP只要符合规则可无视此项。

50. *单独修改某一个账户的配置?*

user_config_dir=/etc/vsftpd/userconf #vim/etc/vsftpd/userconf/zhanghu local_root=/zhanghu

51. *我们都知道FTP协议有两种工作模式,说********说********他们的大概的一个工作流程?********(简略回答)*

模式:主动模式(ActiveFTP)和被动模式(PassiveFTP)

1在主动模式下:FTP客户端随机开启一个大于1024的端口N,向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORTN+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

客户端使用1024以上的端口连接服务器的21号端口,并且会事先开启一个1024+N的端口准备让服务器来连接,服务器得知客户端准备的端口后,用20号端口与客户端连接,创建数据链路时server端处于主动去连接客户端的状态固称为主动传输模式

2在被动模式下:FTP客户端随机开启一个大于1024的端口N,向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORTP命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

客户端使用1024以上的端口连接服务器的21号端口,服务器接到连接请求后,开启一个1024+M的端口等待客户端来连接,再通知客户端这个等待连接的端口号是1024+M,客户端接到服务器端的信息后,开启新的一个1024+N的端口与1024+M进行连接,创建数据连接时,server端处于被客户端连接的状态,固称为被动传输模式

vsftp默认是根据客户端不同而使用不同模式,windows客户端则使用主动,linux客户端则使用被动

可以用pasv_enable=NO来强制使用主动

总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防

52. *NAT使用的几种情况:*

\1. 连接到INTERNE,但却没有足够的合法地址分配给内部主机; 2.更改到一个需要重新分配地址的ISP; 3.有相同的IP地址的两个INTRANET合并;4.想支持负载均衡(主机);

53. *NAT和PAT的区别*

IP地址耗尽促成了CIDR的开发,但是CIDR开发的主要目的是为了有效的使用现有的INTERNET地址,而同时根据RFC1631(IPNETWORKADDRESSTRANSLATOR)开发的NAT却可以在多重的INTERNET子网中使用相同的IP地址,用来减少注册IP地址的使用。

NAT的分为:静态NAT、动态NAT、端口NAT(PAT)。

静态NAT:内部网络中的每个主机都被永久的映射成外部网络中的某个合法地址;

动态NAT:在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络;

PAT:是人们比较熟悉的一种转换方式。PAT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。PATT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。也就是采用portmultiplexing技术,或改变外出数据的源port的技术将多个内部ip地址映射到同一个外部地址。

网络地址转换(NAT)是一个Internet工程任务组(InternetEngineeringTaskForce,IETF)标准,用于允许专用网络上的多台PC(使用专用地址段,例如10.0.x.x、192.168.x.x、172.x.x.x)共享单个、全局路由的IPv4地址。IPv4地址日益不足是经常部署NAT的一个主要原因。WindowsXP和WindowsMe中的“Internet连接共享”及许多Internet网关设备都使用NAT,尤其是在通过DSL或电缆调制解调器连接宽带网的情况下。

NAT对于解决IPv4地址耗费问题(在IPv6部署中却没必要)尽管很有效,但毕竟属于临时性的解决方案。这种IPv4地址占用问题在亚洲及世界其他一些地方已比较严重,且日渐成为北美地区需要关注的问题。这就是人们为什么长久以来一直关注使用IPv6来克服这个问题的原因所在。

除了减少所需的IPv4地址外,由于专用网络之外的所有主机都通过一个共享的IP地址来监控通信,因此NAT还为专用网络提供了一个隐匿层。NAT与防火墙或代理服务器不同,但它确实有利于安全。

54. *NAT有4种用法:*

1.TRANSLATIONINSIDELOCALADDRESS-----------将内部地址一对一的翻译成外部地址;2.OVERLOADINGINSIDEGLOBALADDRESS---------将内部地址多对一的翻译成外部地址,通过地址加端口号的方式区别不同的本地地址。这种方式就是所谓的PAT[/color:43aa144927];3.TCPLOADDISTRIBUTING----提供在多个、利用率高的主机之间进行负载分担的方法;4.HANDLINGOVERLAPPINGNETWORK----这种方法主要用于两个INTRANET的互联.

NAT的地址转换是指每个内网地址都被转换成ip地址+源端口的方式,这需要公网ip地址为多个。

而PAT由于ip地址不足够,就会出现内网地址被转换成ip地址+端口段的形式,这样的公网ip地址通常只是一个。

举个例子:NAT PAT

192.168.0.2:4444----〉202.116.100.5:4444 192.168.0.2:4444----〉202.116.100.5:50003

192.168.0.3:5555----〉202.116.100.6:5555 192.168.0.3:5555----〉202.116.100.5:50004

192.168.0.10:1233—〉202.116.100.5:1233 192.168.0.10:1233—〉202.116.100.5:50005

简单来说,PAT―多对1,nat―多对多.

55. *问:kernel调参*

linux内核参数调整说明

所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如,下面是最重要的一些调优参数,后面是它们的含义:

1./proc/sys/net/core/rmem_max—最大的TCP数据接收缓冲。

2./proc/sys/net/core/wmem_max—最大的TCP数据发送缓冲。

3./proc/sys/net/ipv4/tcp_timestamps—时间戳在(请参考RFC1323)TCP的包头增加12个字节。

4./proc/sys/net/ipv4/tcp_sack—有选择的应答。

5./proc/sys/net/ipv4/tcp_window_scaling—支持更大的TCP窗口.如果TCP窗口最大超过65535(64KB),必须设置该数值为1。

6.rmem_default—默认的接收窗口大小。 7.rmem_max—接收窗口的最大大小。

8.wmem_default—默认的发送窗口大小。 9.wmem_max—发送窗口的最大大小。

/proc目录下的所有内容都是临时性的,所以重启动系统后任何修改都会丢失。

建议在系统启动时自动修改TCP/IP参数:

把下面代码增加到/etc/rc.local文件,然后保存文件,系统重新引导的时候会自动修改下面的TCP/IP参数:

echo256960>/proc/sys/net/core/rmem_default

echo256960>/proc/sys/net/core/rmem_max echo256960>/proc/sys/net/core/wmem_default

echo256960>/proc/sys/net/core/wmem_max echo0>/proc/sys/net/ipv4/tcp_timestamps

echo1>/proc/sys/net/ipv4/tcp_sack echo1>/proc/sys/net/ipv4/tcp_window_scaling

TCP/IP参数都是自解释的,TCP窗口大小设置为256960,禁止TCP的时间戳(取消在每个数据包的头中增加12字节),支持更大的TCP窗口和TCP有选择的应答。

56. *我们都知道dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?*

dns有两个情况,一种是区域传输,一种是域名解析

1.区域传输时,一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息,传输协议是tcp。问:tcp

2.域名解析时,首选的通讯协议是udp

使用udp传输,不用经过TCP三次握手,这样DNS服务器负载更低,响应更快

但是当域名解析的反馈报文的长度超过512字节时,将不能使用udp协议进行解析,此时必须使用tcp回:udp

57. *当用户在浏览器当中输入一个网站,说说计算机对dns解释结果哪些流程?注:本机跟本地DNS还没有缓存*

www.baidu.com.

1.用户输入网址到浏览器;2.浏览器发出DNS请求信息;3.计算机首先查询本机HOST文件,不存在,继续下一步;

4.计算机按照本地DNS的顺序,向区域dns服务器查询IP结果;区域dns服务器查询不到时会从根域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性;5.将返回dns结果给本地dns和本机,本机和本地dns并缓存本结果,直到TTL过期,才再次查询此结果;

6.返回IP结果给浏览器;并给本地的DNS一份结果;7.浏览器根据IP信息,获取页面;

58. *在nslookup使用中请问如何查询test.com域中的MX记录*

nslookup-querytype=MXtest.com Host dig nslookup settype=mx test.com

59. *修改ssh客户端端口:*

#vim/etc/ssh/ssh_config /Port查找端口行,删除#,将22修改为目标端口

60. *修改ssh服务端端口:*

#vim/etc/ssh/sshd_config /Port查找端口行,删除#,将22修改为目标端口 #systemctlrestartsshd

61. *共享文件怎么做的,用的什么技术,碰到了什么问题*

用nfs做nas存储 当访问的过多时;会比较卡: 提升交换机的配置原来是百兆的话要提升到千兆或者万兆

62. *SHELL脚本*

63. *Linuxshell中单引号,双引号及不加引号的简单区别*

单引强引硬引取消引号内特殊字符的意义

双引弱引软引取消部分引号内特殊字符的意义让多个以空格为分隔符的字符串形成一个整体字符串

64. *如何实现对MySQL数据库进行分库逻辑备份,请用脚本实现*

Mysqldump #vimmysqldump.sh mysqldump-uroot-p’QianFeng@123’\ -A–single-transaction\

–routines–triggers–master-data=2\ --flush-logs\ >/backup/date+%F-%H-mysql-all.sql

65. *设计一个shell程序,每5分钟执行一次获取当前服务器的基本情况(内存使用率,CPU负载,I/O,磁盘使用率),保存到120.20.20.20数据库上数据库帐号aaa密码bbb库名test表名host,表结构自行设计*

#crontab-e /5***bash/serverstatus.sh

mysql-h120.20.20.20-uaaa-p’bbb’-e’createtest.host(cipanvarchar(20),memvarchar(20),loadaver1varchar(20),loadaver2varchar(20),loadaver3varchar(20),ioaveragevarchar(20))’ #vim/serverstatus.sh

1mem_used=free-m|awk'NR==2{print$3}' 2mem_total=free-m|awk'NR==2{print$2}'

3a=df-Th|awk'NR==2{print$6}'|awk-F%'{print$1}' 4mem_average=$((mem_used*100/mem_total))

5load_average1=uptime|awk-F':|+|,''{print$(NF-4)}' 6load_average1=uptime|awk-F':|+|,''{print$(NF-2)}'

7load_average1=uptime|awk-F':|+|,''{print$(NF)}' 8io_average=iostat-x|awk'NR==4{print$4}'

9mysql-h120.20.20.20-uaaa-p’bbb’-e’insetintotest.hostvalues( a , a, a,mem_average, m e m a v e r a g e 1 , mem_average1, memaverage1,mem_average2, l o a d a v e r a g e 3 , load_average3, loadaverage3,io_average)’

66. *写一个脚本,实现tomcat的web服务监控*

监控tomcat的开启和关闭;或是端口8005,8009; http与tomcat连接是8080端口;与nginx是不需要端口

1.可以写脚本+计划任务2.可以使用nagios 3.可以使用zabbix在agent的配置文件内定义key: #vim/etc/zabbix/zabbix_agentd.conf

UserParameter=tomcat_port[*]:/tomcat_monitor.sh$ 编写脚本:

#vim/tomcat_monitor.sh

if[ 1 − e q 8080 ] ; t h e n l s o f − i : 8080 r e t u r n 1-eq8080];then lsof-i:8080 return 1eq8080];thenlsofi:8080return? elif[$1-eq8005];then lsof-i:8005

return$? else return8 fi

67. *写一个脚本实现nginx服务的管理*

文件锁:编译安装时需要写此脚本;笔记上有答案5nginx安装7小步设置开机启动

#vi/etc/init.d/nginx #!/bin/bash #chkconfig:-9920

#description:Oooothisismynginxstartupscript

PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid"

case"$1"in start) $PROG ;; stop)

kill-sQUIT ( c a t (cat (catPIDF) ;; restart) $0stop $0start ;; reload)

kill-sHUP ( c a t (cat (catPIDF) ;; *)

echo"Usage:$0{start|stop|restart|reload}" exit1 esac exit0

#chmod+x/etc/init.d/nginx #chkconfig–addnginx

68. *很重要:写一个防火墙配置脚本,只允许远程主机访问本机的80端口*

#vimiptables.sh

Iptables -t filte r-I INPUT -p tcp! --dport80 -j DROP

69. *编写shell脚本,清理/var/logs/目录下的一个持续增长的conn.log文件,以日为单位形成一个新的压缩文件,并删除30天前的日志压缩文件*

#vimcleanlog.sh #清理日志脚本

tar-czf/log_backup/conn_date+%y年%m月%d号-%H:%M:%S.log.tar.gz/var/logs/conn.log

wait$$ rm-rf/var/logs/conn.log find/log_backup/-mtime+30-execrm{};

70. *1)备份并压缩/data目录的所有内容,存放在/backup目录里,且文件名为如下形式*

*yymmdd_data,yy为年,mm为月,dd为日*

*2)读取/app/app.log文件中每行第一个域的全部数据加入到/backup/yymmdd_app_am.log,yy为年,mm为月,dd为日*

*3)删除/app/app.log文件*

*shell程序appbak存放在/usr/bin目录下。(最少写一个循环)*

#crontab-e 59231**/usr/bin/appbak chmod+x/usr/bin/appbak

vim/usr/bin/appbak abc=date+%Y%b%d_data tar-czf/usr/bin/backup/$abc/data wait

cat/app/app.log|awk’{printKaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲'>>/usr/bin/bac…abc rm-rf/app/app.log

71. *请使用awk、sed、grep三个命令,请举写出命令语句。*

grep‘root’/etc/passwd sed-ri‘/SELINUX=/cSELINUX=disabled’/etc/selinux/conf

cat/etc/passwd|awk‘NR==1{print$1}’

72. *请用shell脚本实现:批量添加5个用户,用户名为:user1-5,密码为:user名+3个随机字符*

For I in{1…5} ;do ;useradduser$i ;suijishu=opensslrand-hex2|sed-r"s/(...)(.)/\1:\2/g"|awk-F:'{print$1}'

echouser i i isuijishu|passwd–stdinuser$i ;done

73. *请说出以下符号在bashshell中的意义:*

0 、 0、 0n、KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲、?、 ∗ 、 *、 、 、 (#aa)

0 当 前 读 取 内 容 0当前读取内容 0n位置变量KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲参数个数上一语句的返回值 p i d pid pid*所有参数

74. *请用自己熟悉的脚本语言,快速替换notic服务下config.properties配置文件中所有变量值为jdbc.username,jdbc.password的值为blue和pass1234*

sed-ri‘s/jdbc.username/blue/g’config.properties

sedri‘s/jdbc.password/pass1234/g’config.properties

echo"ABCDEFGabtdefg"|sed-is/c/t/g这条命令是否正确?如若正确会显示什么结果?

在系统中添加100个用户,用户名为user001到user100

请使用脚本实现批量创建10个系统账号sj_user01-sj_user10并设置密码(密码为随机8位字符串)

在shell编程时,使用方括号表示测试条件的规则是?

用shell写一段启动脚本服务

编写shell脚本,能够生成32位随机密码

计算1加到100的值

75. *统计/var/log下文件(非目录)的个数*

Find /var/log -type f | wc-l

76. *统计出yum安装的apache的访问日志access_log中访问量最多的5个IP*

cat/var/log/httpd/access_log|awk‘{ips[KaTeX parse error: Expected 'EOF', got '}' at position 5: 1]++}̲END{for(iinips)…iips[i]}}’|sort-rn-k2|head-5ssss

77. *编写SHELL脚本,查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行全线的文件并备份到/data/backup/目录下,某一天没有文件在/data/backup下生产一个当时日志的文件,内容为"缺失文件".*

*PYTHON*

*给出程序运行结果*

defextendList(val,list=[]):

​ list.append(val)

​ returnlist

list1=extendList(10)

list2=extendList(123,[])

list3=extendList(‘a’)

print"list1=%s"%list1

print"list2=%s"%list2

print"list3=%s"%list3

78. *实现用用户输入入用用户名和密码,当用用户名为ye或sk且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入入三次*

foriinrange(3):

u=input(“user>:”)

p=input(“pwd>:”)

ifu=="yg"oru=="sk"andp==“123”:

print(“登陆成功”)

break

else:

print(“登陆失败”)

79. *如何用mysql命令进行备份和恢复?以test库为例,创建一个备份,并再用此备份恢复备份:*

mysqldump-u用户名-p’123’-Btest>/mysql_backup/date+%F-%H-mysql-test.sql

备份之后可用mysqlbinlog查看:#mysqlbinlog/mysql_backup/2018-09-26-20-mysql-test.sql

恢复:mysql-uroot-p’123’-Dtest</mysql_backup/2018-09-26-20-mysql-test.sql

80. *MySQL:主从复制集群,高可用,具体配置,关系型数据库原则,怎么在集群中实现分库分>表,锁机制*

主从复制集群:

1、mysql主

①开启二进制文件:#vim/etc/my.cnf(写入如下内容)

[mysqld] log_bin server-id=1 gtid_mode=ON enforce_gtid_consistency=1

②重启服务:#systemctlrestartmysqld

③进入数据库,为从服务器授权

#mysql-uroot-p’123’

mysql>grantreplicationslave,replicationclienton*.*to’rep’@‘IP或网段’identifiedby’123’;

mysql>flushprivileges;

2、mysql从

①测试rep用户是否可用:#mysql-h’mysql主IP’-urep-p’123’

②启动服务序:#vim/etc/my.cnf

[mysqld] log_bin server-id=2 gtid_mode=ON enforce_gtid_consistency=1

③重启服务:#systemctlrestartmysqld ④再次测试rep用户是否可用:#mysql-h’mysql主IP’-urep-p’123’ ⑤从设备上设置主服务

mysql>changemastertomaster_host=‘mysql主IP’,master_user=‘rep’,master_password=‘123’,master_auto_position=1;(自动获取)

3、主主、多从

高可用:

①mysql主主同步

②在两台mysql上安装keepalived:#yum-yinstallkeepalived

③keepalived主备配置文件:#vim/etc/keepalived/keepalived.conf

!ConfigurationFileforkeepalived

global_defs{

router_idmysql1}

vrrp_scriptcheck_run{//定义配置健康检查脚本的配置名称check_run

script"python/root/keepalived_check_mysql.sh"

interval5//执行健康检查的时间间隔单位s(每5秒钟检查一次)}

vrrp_instanceVI_1{

stateMASTER

interfaceens33

virtual_router_id88

priority100

advert_int1//检查keepalived本身服务的时间间隔

authentication{

auth_typePASS

auth_pass1111

}

track_script{

check_run//名字必须和上面的脚本配置名称一致

}

virtual_ipaddress{

192.168.122.100devens33

} }

④编写mysql状态检测脚本(主主):

#vim/root/bin/keepalived_check_mysql.sh

#chmod755/root/keepalived_check_mysql.sh

#/etc/init.d/keepalivedstart

⑤测试及诊断

81. *关系型数据库原则:ACID(注:数据库事务通常指对数据库进行读或写的一个操作序列)*

82. *1、A(Atomicity)原子性是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。*

2、C(Consistency)一致性是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。如完整性约束a存款+b存款=2000。

3、I(Isolation)隔离性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

4、D(Durability)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失

83. *分库:垂直拆分:按照业务垂直划分,将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中*

84. *水平拆分:按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分*

85. *读写分离:对于时效性不高的数据,可以通过读写分离缓解数据库压力*

86. *分表:指将一张表按一定的规则分解成N个具有独立存储空间的实体表。*

87. *常见的分表策略:1.Range(范围)2.Hash(哈希)3.按照时间拆分4.Hash之后按照分表个数取模5.在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系*

88. *锁机制:用于保护数据的完整性,当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性,锁是其中的一种。*

89. *请写MYSQL数据库中的SQL查询,查找customer表中uid列内大于100的记录并以uid排序,正序输出前10条记录*

select*fromcustomerwhereuid>100orderbyuidasclimit10;

90. *使用sql语句创建、删除数据库db_test?查询数据库列表的sql语句*

创建:mysql>createdatabasedb_test;

查询:mysql>usedb_test;

mysql>showtables;

mysql>select*from表名;查内容

删除:mysql>dropdatabasedb_test;

91. *如何实现对Mysql数据库进行分库加分表备份,请用脚本实现*

#!/bin/bash

user=root

pass=test

database=mysql-u$user-p"$pass"-e"showdatabases;"|sed1d|grep-v'schema'

mkdir/mysql_backup

mysql-u u s e r − p " user-p" userp"pass"-e"showdatabases;"&>/dev/null

if[$?-ne0];then

read-p"Mysqldonotrunning,startit?(yes/no):"choice

if[["$choice"-eq"yes"]];then

systemctlstartmysqld&>/dev/null

else

echo-e"\033[31m请开启mysql服务,以过滤库、表\033[0m"

exit2

else

echo-e"\033[33mbackupstart===\033[0m"

foriin$database

do

tables=mysql-u$user-p"$pass"-e"use$i;showtables;"|sed1d

forjin$tables

do

mysqldump-u u s e r − p " user-p" userp"pass"-B–databases i − − t a b l e s i--tables itablesj>/mysql_backup/ i − {i}- i{j}-date+%F.sql

[KaTeX parse error: Expected 'EOF', got '&' at position 7: ?-eq0]&̲&echoi- j o k > > / m y s q l b a c k u p / t a b l e . l o g ∣ ∣ e c h o jok>>/mysql_backup/table.log||echo jok>>/mysqlbackup/table.logechoi-$jfailed>>/mysql_backup/table.log

[KaTeX parse error: Expected 'EOF', got '&' at position 7: ?-eq0]&̲&echo-e"i-KaTeX parse error: Undefined control sequence: \0 at position 2: j\̲0̲33[32mok!\033[0…i-$j\033[31mfailed!\033[0m"

done

done

echo-e"\033[32mbackupcomplete=\033[0m"

92. *如何监控MySQL主从同步是否异常?*

#!/bin/bash

#Date:2018-9-27

#Author:zz(1608843551@qq.com)

#version1.0

whiletrue

do

array=(KaTeX parse error: Undefined control sequence: \G at position 38: …showslavestatus\̲G̲"|egrep'_Runnin…NF}’))

if[" a r r a y [ 0 ] " = = " Y e s " − a " {array[0]}"=="Yes"-a" array[0]"=="Yes"a"{array[1]}"“Yes”-a"${array[2]}"“0”]

then

echo"MySQLisslaveisok"

else

if["${array[3]}"-ne0];then

mysql-uroot-p’123’-e"stopslave&&setglobalsql_slave_skip_counter=1;startslave;"

echo"错误代码${array[3]}"

fi

char=“MySQLslaveisnotok,错误代码${array[3]}”

echo"$char"

echo" c h a r " ∣ m a i l − s " char"|mail-s" char"mails"char"1608843551@qq.com

fi

sleep60

done

93. *Mysql备份命令是什么?Mysql如何让给用户daxiang对库daxiang授权网段为192.168.96.0/24远程访问权限,密码为daxiang@123,请写出命令*

备份:物理备份:

完整备份:innobackupex–user=daxiang–password=‘daxiang@123’/xtrabackup/full

增量备份:innobackupex–user=daxiang–password=‘daxiang@123’–incremental/xtrabackup/–incremental-basedir=/xtrabackup/date+%Y-%m-%d-%H

逻辑备份:mysqldump-p’daxiang@123’-A>/mysql_backup/date+%F-%H-mysql.sql

授权:mysql>grantallondaxiang.*todaxiang@'192.168.96.0/24’identifiedby’daxiang@123’withgrantoption;

94. *数据库用于事务回滚和提交的SQL语句分别是___ROLLBACK________,COMMIT_____________。*

95. *创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data目录下,文件大小为200MB设为自动增长,增量5MB,文>件最大为500MB的SQL为_____________________。*

createtablespaceneuspacedatafile‘d:\data\neudata.dbf’size200mautoextendonnext5mmaxsize500m

96. *SQL语言支持数据库三级模式结构,在SQL中外模式、模式对应于_基本表全体_,内模式对应于_存储文件或数据文件_____*

97. *简述数据库中索引的用法及原理*

索引在mysql中也叫键,是存储引擎用于快速找到记录的一种数据结构

用法:与查阅图书是一个道理:先定位到章,然后定位到章下的一个小节,再定位到页。

原理:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件。

98. *请写出数据库事务的ACID特性并简述唯一(UNIQUE)约束和主键(PRIMARYKEY)约束的异同点*

每个表可以有多个UNIQUE约束,而只能有一个PRIMARYKEY

主键:PRIMARYKEY

约束唯一标识数据库表中的每条记录

主键必须包含唯一的值;主键不能包含NULL值

每个表都应该有一个主键,并且每个表只能有一个主键

唯一:UNIQUE

约束唯一标识数据库表中的每条记录

UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。

PRIMARYKEY约束拥有自动定义的UNIQUE约束。

99. *解释冷备份和热备份的不同点以及各自的优点*

热备份针对归档模式的数据库,再数据库仍旧处于工作状态时进行备份。而冷备份指数据库关闭后进行备份,适用于所有数据库。

不同点:

热备份:备份时数据库仍旧处于运行状态

冷备份:备份时数据处于关闭状态

优点:

热备份:在备份时,数据库仍可以使用并且可以将数据库恢复到任意一个时间点

冷备份:它的备份和恢复操作相当简单,并且冷备份可以工作在非归档模式下,数据库性能会比归档模式稍好

100. *列举三种表连接算法以及各自高性能的场景*

三种连接算法:①嵌套循环连接 ②合并连接 ③Hash连接

嵌套循环连接:通常在小数据量并且语句比较简单的场景中使用

合并连接:在SQL数据库中,如果查询优化器,发现要连接的两张对象表,在连接上都已经排序并包含索引,那么优化器将会极大

可能选择“合并”连接策略。条件是:两个表都是排序的,并且两个表连接条件中至少有一个等号连接,查询分析器会去选择合并连接

Hash连接:当我们尝试将两张数据量较大,没有排序和索引的两张表进行连接时,SQLServer的查询优化器会尝试使用HashJoin

101. *Mysql客户端工具中,请问如何让查询当前所有的连接进程信息*

showprocesslist;

102. *mysql主从,主库宕机,主从切换步骤?*

主机故障或者宕机:

在salve执行:

stopslave;

resetmaster;

103. *查看是否只读模式:showvariableslike’read_only’;*

104. *只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。*

105. *或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;*

查看showslavestatus\G;

查看showmasterstatus\G;

106. *将从库IP地址改为主库IP地址,测试应用连接是否正常。*

正常切换

1、检查slave同步状态

在开始切换之前先对主库进行锁表:

flushtableswithreadlock

flushdata

切换完成后可以释放锁

2、在master执行:showprocesslist;

3、在slave执行:showprocesslist;

检查IO及SQL线程是否正常,如果为NO表明同步不一致,需要重新将slave同步保持主从数据一致。

4、停止slaveio线程

在slave执行:mysql>STOPSLAVEIO_THREAD

mysql>SHOWPROCESSLIST;

确保状态为:hasreadallrelaylog

以上都执行完成后可以把slave提升为master:

5、提升slave为master

Stopslave;

Resetmaster;

Resetslaveall;在5.6.3版本之后

Resetslave;在5.6.3版本之前

查看slave是否只读模式:showvariableslike’read_only’;

只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。

或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;

6、将原来master变为slave

在新的master上创建同步用户:

grantreplicationslaveon*.*repl@‘IPofslave’identifiedby’replpwd’;

在新的slave上重置binlog:

Resetmaster;

changemastertomaster_host=‘192.168.0.104’,//Master服务器Ip

master_port=3306,

master_user=‘repl’,

master_password=’replpwd’,

master_log_file=‘master-bin.000001’,//Master服务器产生的日志

master_log_pos=?;//masterbinlogpos

以上最后两步可以在master执行:showmasterstatus

启动slave:startslave;并查看slave状态:showslavestatus\G;

107. *如何让校验主从数据不一致?出现不一致时如何处理?*

pt-table-check#监测主从一致

数据库不支持emoji表情,如何操作让数据库支持?

修改库级别的字符集:更换字符集utf8–>utf8mb4

utf8与utf8mb4说明:

UTF-8:UnicodeTransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。

UTF8MB4:MySQL在5.5.3之后增加了utf8mb4的编码,mb4就是mostbytes4的意思,专门用来兼容四字节的unicode。

表中有大字段X(例如:text类型),且字段X不会经常更新,以读写为主,请问:

(1)您是选择拆成子表,还是继续放在一起;

(2)写出您这样选择的理由

拆成字表

理由:避免大数据被频繁的从buffer重换进换出,影响其他数据的缓存;

108. *MySQLbinlog的几种日志录入格式以及区别*

(1)binlog的日志格式的种类和分别

(2)适用场景

(3)结合第一个问题,每一种日志格式在复制中的优劣

109. *三种日志格式:StatementMiXEDROW*

1.Statement:每一条会修改数据的sql都会记录在binlog中。

优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题。)

缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同的结果。另外mysql的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数,last_insert_id(),以及user-definedfunctions(udf)会出现问题).

2.Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。

优点:binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题

缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行altertable之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。

3.Mixedlevel:是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种.新版本的MySQL中队rowlevel模式也被做了优化,并不是所有的修改都会以rowlevel来记录,像遇到表结构变更的时候就会以statement模式来记录。至于update或者delete等修改数据的语句,还是会记录所有行的变更。

https://blog.csdn.net/vhomes/article/details/8082734

110. *MySQL数据库cpu飙升到500%的话他怎么处理?*

(1)多实例的服务器,先top查看是那一个进程,哪个端口占用CPU多;

(2)showprocesseslist查看是否由于大量并发,锁引起的负载问题;

(3)否则,查看慢查询,找出执行时间长的sql;explain分析sql是否走索引,sql优化;

(4)再查看是否缓存失效引起,需要查看buffer命中率;

111. *SQL优化中explain各字段的含义*

table:显示这一行的数据是关于哪张表

type:这是重要的列,显示连接使用了何种类型。

possible_keys:显示可能应用在这张表的索引

key:实际使用的索引

key_len:使用的索引的长度

ref:显示索引的哪一列被使用了

rows:mysql认为必须检查的用来返回请求数据的行数

extra:关于mysql如何解析查询的额外信息

Distinct:一旦mysql找到了与行相匹配的行,就不再搜索

Notexists:MYSQL优化了LEFTJOIN,一旦它找到了匹配LEFTJOIN标准的行,就不再搜索了

RangecheckedforeachRecord(indexmap:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Usingfilesort:看到这个的时候,查询就需要优化了。

Usingindex:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

Usingtemporary看到这个的时候,查询需要优化了

const:表中的一个记录的最大值能够匹配这个查询

range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况

index:这个连接类型对前面的表中的每一个记录联合进行完全扫描

ALL:这个连接类型对于前面的每一个记录联合进行完全扫描

https://blog.csdn.net/u012888052/article/details/79499796

112. *请写下命令在MYSQL数据库中检查当前从库的同步状态,然后将同步配置修改为binlog文件"mysql-bin.000001",偏移量为"4"。*

检查状态:

mysql>showslavestatus

Slave_IO_RunningI/O线程是否被启动并成功地连接到主服务器上。(状态信息为YesNo)

Slave_SQL_RunningSQL线程是否被启动(状态信息为YesNo)

Seconds_Behind_Master测量SQL线程和I/O线程的时间差(即延迟,单位为秒)

mysql通过mysqldump命令如何做全量和增量备份

全量备份:

mysqldump-u用户名-p密码数据库名>备份文件.sql

增量备份:

每日定时使用MySQLadminflush-logs来创建新日志,恢复增量备份时恢复全量备份之后的binlog

例如: mysqlMySql-bin.000002|MySQL-uroot-p密码

113. *如何用mysql命令进程备份和恢复?以test库为例,创建一个备份,并再用此备份进行恢复*

备份:

mysqldump-uroot-p密码test>备份文件.sql

恢复: mysql-uroot-p密码<备份文件.sql

Mysql创建数据库的命令,创建表的命令,插入语句的命令?

创建库的命令: createdatabase库名;

创建表的命令: createtable表名;

插入表的语句: insertinto表名(记录); 数据库中有一个6亿的表a,一个3亿的表b,通过外键tid进行关联。

114. *你如何最快的查询出:满足条件的第50000到第50200中的这200条数据记录?*

select*froma,bwherea.tid=b.tidanda.tidBETWEEN50000AND50200;

115. *对于数据库备份正确的做法是什么?*

同时使用多个备份设备,使得备份可以同时写入所有设备。同样,也可以同时从多个设备还原备份。

使用数据库备份、差异数据库备份和事务日志备份的组合,使得将数据库恢复到故障点所用的备份数量减到最少

使用文件和文件组备份以及事务日志备份,使得可以只备份或还原那些包含相关数据的文件,而不用备份整个数据库。

使用快照备份将备份和还原时间减到最少。

有如下表的结构:

​ emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期

/sal薪金/comm佣金/deptno部门编号)

dept部门表(deptno部门编号/dname部门名称/loc地点)

建表语句为:

​ CREATETABLEDEPT–部门表

​ (DEPTNOintCONSTRAINTPKDEPTPRIMARYKEY,–部门编号

​ DNAMEVARCHAR(14),–部门名称

​ LOCVARCHAR(13) --所在地点

​ );

​ CREATETABLEEMP --员工表

​ (EMPNOintCONSTRAINTPKEMPPRIMARYKEY, --员工号

​ ENAMEVARCHAR(10), --员工姓名

​ JOBVARCHAR(9), --工作

​ MGRint, --上级编号

​ HIREDATEDATE, --受雇日期

​ SALfloat , --薪金

​ COMMfloat, --佣金

​ DEPTNOintCONSTRAINTFKDEPTNOREFERENCESDEPT --部门编号

​ );

​ 完成下面的SQL语句:

116. *1.列出至少有一个员工的所有部门*

selectdistinctEMP.DEPTNO,DEPT.DNAMEfromEMP,DEPTwhereEMP.DEPTNO=DEPT.DEPTNO

*2.列出所有员工的姓名及其上级的姓名*

selectename,(selectenamefromempwhereempnoin(emp.mgr))fromemp;

*3.列出受雇日期晚于其直接上级的所有员工*

selectempno,enamefromempawherehiredate>(selecthiredatefromempwhereempno=a.mgr);

*4.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门*

selectdname,emp.*fromdept,empwheredept.deptno=emp.deptno;

*5.列出薪金高于公司平均薪金的所有员工*

selectempnofromempwheresal>(avg(sal));

*6.列出与“SCOTT”从事相同工作的所有员工*

selectenamefromempwherejob=(selectjobformempwhereename=SCOTT)andenamenotin(SCOTT);

*7.列出所有员工的姓名、部门名称和工资*

selectename,dname,(sal+nvl(comm,0))fromemp,deptwhereemp.deptno=dept.deptno

*8.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金*

select*fromempwheresal>all(selectsalfromempwheredeptno=30);

*9.列出所有部门的详细信息(包括部门表的所有字段)和部门人数*

selectfromdeptaleftjoin(selectdeptno,count()fromempgroupbydeptno)bona.deptno=b.deptno;

*10.列出各种工作的最低工资*

selectjobmin(sal+nvl(comm,0))fromempgroupbyjob

117. *事务有几大特性?分别代表什么意思?*

*事务的四种隔离级别*

1.原子性(atomicity):事务是一个完整的操作。事务的各步操作是不可分的;要么都执行、要么都不执行。

2.一致性(consistency):当事务完成时,数据必须处于一致状态。

3.隔离性(isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。

4.持久性(durability):事务完成后,它对数据库的修改被永久保存,事务日志能保持事务的永久性。

*事务的四种隔离级别?*

隔离级别分为:

ReadUncommitted(读未提交)、ReadCommitted(读提交)、RepeatableRead(可以重复读)、Serializable(序列化)

*事务是如何让通过日志来实现的(Redo)?*

在Innodb存储引擎中,事务日志是通过redo和innodb的存储引擎日志缓冲(Innodblogbuffer)来实现的,当开始一个事务的时候,会记录该事务的lsn(logsequencenumber)号;当事务执行时,会往InnoDB存储引擎的日志的日志缓存里面插入事务日志;当事务提交时,必须将存储引擎的日志缓冲写入磁盘(通过innodb_flush_log_at_trx_commit来控制),也就是写数据前,需要先写日志。这种方式称为“预写日志方式”,

innodb通过此方式来保证事务的完整性。也就意味着磁盘上存储的数据页和内存缓冲池上面的页是不同步的,是先写入redolog,然后写入datafile,因此是一种异步的方式。通过showengineinnodbstatus\G来观察之间的差距

118. *为100G的MySQL的数据库制定备份计划,简述mysqldump以及xtranbackup的实现*

原理

(1)备份计划:

(2)xtrabackup实现原理

mysqldump属于逻辑备份。加入–single-transaction选项可以进行一致性备份。后台进程会先设置session的事务隔离级别为RR(SETSESSIONTRANSACTIONISOLATIONLEVELREPEATABLEREAD),之后显式开启一个事务(STARTTRANSACTION/!40100WITHCONSISTENTSNAPSHOT/),这样就保证了该事务里读到的数据都是事务事务时候的快照。之后再把表的数据读取出来。如果加上–master-data=1的话,在刚开始的时候还会加一个数据库的读锁(FLUSHTABLESWITHREADLOCK),等开启事务后,再记录下数据库此时binlog的位置(showmasterstatus),马上解锁,再读取表的数据。等所

有的数据都已经导完,就可以结束事务。

xtrabackup属于物理备份,直接拷贝表空间文件,同时不断扫描产生的redo日志并保存下来。最后完成innodb的备份后,会做一个flushenginelogs的操作(老版本在有bug,在5.6上不做此操作会丢数据),确保所有的redolog都已经落盘(涉及到事务的两阶段提交概念,因为xtrabackup并不拷贝binlog,所以必须保证所有的redolog都落盘,否则可能会丢最后一组提交事务的数据)。这个时间点就是innodb完成备份的时间点,数据文件虽然不是一致性的,但是有这段时间的redo就可以让数据文件达到一致性(恢复的时候做的事情)。然后还需要flushtableswithreadlock,把myisam等其他引擎的表给备份出来,备份完后解锁。这样就做到了完美的热备。

备份计划:视库的大小来定,一般来说100G内的库,可以考虑使用mysqldump来做,因为mysqldump更加轻巧灵活,备份时间选在业务低峰期,可以每天进行都进行全量备份(mysqldump备份出来的文件比较小,压缩之后更小)。

100G以上的库,可以考虑用xtranbackup来做,备份速度明显要比mysqldump要快。一般是选择一周一个全备,其余每天进行增量备份,备份时间为业务低峰期。

备份恢复时间:物理备份恢复快,逻辑备份恢复慢

119. *备份恢复失败如何处理:*

首先在恢复之前就应该做足准备工作,避免恢复的时候出错。比如说备份之后的有效性检查、权限检查、空间检查等。如果万一报错,再根据报错的提示来进行相应的调整。

120. *Mysql的复制原理以及流程,简述基本原理流程,3个线程以及之间的关联*

mysql主从复制原理:

从库有两个线程IO线程和SQL线程

1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库

3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

6.从库如果也要做主库,也要打开log_bin和log-slave-update参数

121. *配置读写mysql主从复制的步骤:*

1.在主库与从库都安装mysql数据库

2.在主库的配置文件(/etc/my.cnf)中配置server-id和log-bin

3.在登陆主库后创建认证用户并做授权。

4.在从库的配置文件(/etc/my.cnf)中配置server-id

5.登陆从库后,指定master并开启同步开关。

需要注意的是server-id主从库的配置是不一样的。

122. *Server-id存在作用:*

mysql同步的数据中是包含server-id的,而server-id用于标识该语句最初是从哪个server写入的。因此server-id一定要有的

Server-id不能相同的原因:每一个同步中的slave在master上都对应一个master线程,该线程就是通过slave的server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id相同,则后一个连接成功时,slave主动连接master之后,如果slave上面执行了slavestop;则连接断开,但是master上对应的线程并没有退出;当slavestart之后,master不能再创建一个线程而保留原来的线程,那样同步就可能有问题;

123. *MySQL中myisam与innodb的区别*

(1)不同点有哪些?

1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁

3>.InnoDB支持MVCC,而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持

5>.InnoDB不支持全文索引,而MyISAM支持。

1、存储结构

MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD(MYData)。索引文件的扩展名是.MYI(MYIndex)

InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

2、存储空间

MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。

InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。

3、可移植性、备份及恢复

MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。

InnoDB:免费的方案可以是拷贝数据文件、备份binlog,或者用mysqldump,在数据量达到几十G的时候就相对痛苦了。

4、事务支持

MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。

InnoDB:提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crashrecoverycapabilities)的事务安全(transaction-safe(ACIDcompliant))型表。

5、AUTO_INCREMENT

MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。

InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。

6、表锁差异

MyISAM:只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。

InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。

7、全文索引

MyISAM:支持FULLTEXT类型的全文索引

InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

8、表主键

MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。

InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。

9、表的具体行数

MyISAM:保存有表的总行数,如果selectcount(*)fromtable;会直接取出出该值。

InnoDB:没有保存表的总行数,如果使用selectcount(*)fromtable;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。

10、CURD操作

MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。

InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE从性能上InnoDB更优,但DELETEFROMtable时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncatetable这个命令。

11、外键

MyISAM:不支持

InnoDB:支持

(2)两种引擎者selectcount(*)哪个更快,为什么?

innodb引擎的表在使用selectcount的时候,如果表的总行数在1-2万条以内,速度应该不是瓶颈,但是一旦超过了这个值,随着行数的增多,selectcount查询效率会迅速的下降。

测试表大约4.3万行

Myisam引擎:

SELECTSQL_NO_CACHECOUNT(*)FROMroundmember2

耗费105微秒

innodb引擎:

耗费10335微秒

可以看出innodb引擎耗时是myisam引擎的98倍!这还是仅仅是4万多行的数据下测试的差距,随着记录行的增加,这个差距会越来越大。

MyISAM会保存表的总行数,这段代码在MyISAM存储引擎中执行,MyISAM只要简单地读出保存好的行数即可。因此,如果表中没有使用事务之类的操作,这是最好的优化方案。然而,innodb表不像myisam有个内置的计数器,InnoDB存储引擎不会保存表的具体行数,因此,在InnoDB存储引擎中执行这段代码,InnoDB要扫描一遍整个表来计算有多少行。

http://www.piaoyi.org/database/MySQL-INNODB-SELECT-COUNT.html

124. *MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义*

(1)varchar与char的区别

CHAR(char):固定长度,最多255个字符 VARCHAR(varchar):固定长度,最多65535个字符

CHAR的长度是固定的 VARCHAR长度是可以变化的

固定与可变是针对存储介质(硬盘)来说的

(2)varchar(50)中50的涵义 ----- 设置表里的最多字符是50

(3)int(9)中9的涵义 ----- 设置表里整数的最多数字是9个字节

125. *mysqldump中备份出来的sql,如果我想sql文件中,一行只有一个insert…value()的话,怎么办?如果备份需要带上master的复制点信息怎么办?*

1).–skip-extended-insert 2).–master-date=1

126. *mysql的架构,怎么保证它的安全性*

1、避免从互联网访问MySQL数据库,确保特定主机才拥有访问特权 2、禁用或限制远程访问

3、定期备份数据库 4、设置root用户的口令并改变其登录名

5、移除测试(test)数据库 6、禁用LOCALINFILE

7、移除匿名账户和废弃的账户 8、降低系统特权

9、降低用户的数据库特权 10、移除和禁用.mysql_history文件

11、保持数据库为最新稳定版本,因为攻击者可以利用上一个版本的已知漏洞来访问企业的数据库。

12、启用日志 13、改变root目

14、禁用LOCALINFILE命令

http://dev.yesky.com/429/35432929.shtml

*REDIS*

127. *redis有几种高可用方案,每个方案的优缺点*

Redis多副本(主从)

优点:

1、高可靠性,一方面,采用双机主备架构,能够在主库出现故障时自动进行主备切换,从库提升为主库提供服务,保证服务平稳运行。另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题。

2、读写分离策略,从节点可以扩展主库节点的读能力,有效应对大并发量的读操作。

RedisSentinel:

1、RedisSentinel集群部署简单 2、能够解决Redis主从模式下的高可用切换问题

3、很方便实现Redis数据节点的线形扩展,轻松突破Redis自身单线程瓶颈,可极大满足对Redis大容量或高性能的业务需求。 4、可以实现一套Sentinel监控一组Redis数据节点或多组数据节点

RedisCluster

1、无中心架构

2、数据按照slot存储分布在多个节点,节点间数据共享,可动态调整数据分布。

3、可扩展性,可线性扩展到1000多个节点,节点可动态添加或删除。

4、高可用性,部分节点不可用时,集群仍可用。通过增加Slave做standby数据副本,能够实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。

5、降低运维成本,提高系统的扩展性和可用性。

redis的备份方式,有没有做过redis集群

RDB(RedisDataBase)是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;

AOF(AppendOnlyFile)则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令(每秒钟)记录在日志中,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

128. *redis有几种持久化存储化的方式?工作原理?两者是否能够共存?*

有2种:AOF和RDB

RDB方式原理:当redis需要做持久化时(执行SAVA或者BGSAVA命令,或者是达到配置条件时执行),redis会fork一个子进程,子进程将数据写到磁盘上一个临时RDB文件中,当子进程完成写临时文件后,将原来的RDB替换掉(默认文件名为dump.rdb)

AOF方式原理:AOF可以做到全程持久化,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中,当Redis重启时,将会读取AOF文件进行“重放”以恢复到Redis关闭前的最后时刻。由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。不过我们可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。

可以共存

redis两种存储的文件格式 rdb /aof

redis主从集群的配置 AB / mysql-cluster / galera

主从配置

master: bind0.0.0.0//监控本地所有网卡IP protected-modeno

客户端连到服务器查看复制信息:

>inforeplication slave1: bind0.0.0.0

slaveofmaster_ipmaster_port//修改master_ip和port protected-modeno

客户端连到服务器查看复制信息:

>inforeplication slave2: bind0.0.0.0 slaveofmaster_ipmaster_port protected-modeno

客户端连到服务器查看复制信息:

>inforeplication

--------------------

哨兵模式:1主2从做好最少3台机器

配置哨兵模式:

每台机器上修改redis主配置文件设置:bind0.0.0.0

每台机器上修改sentinel.conf配置文件:添加如下配置

sentinelmonitormymaster10.0.0.13763791 sentineldown-after-millisecondsmymaster3000

sentinelfailover-timeoutmymaster10000 protected-modeno

每台机器启动服务:

#./src/redis-sentinelsentinel.conf 注意:每台机器的防火墙

配置解析:

sentinelmonitormymaster10.0.0.13763792

这一行代表sentinel监控的master的名字叫做mymaster,地址为10.0.0.137,行尾最后的一个2代表什么意思呢?我们知道,网络是不可靠的,有时候一个sentinel会因为网络堵塞而误以为一个masterredis已经死掉了,当sentinel集群式,解决这个问题的方法就变得很简单,只需要多个sentinel互相沟通来确认某个master是否真的死了,这个2代表,当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通过gossip协议)。

sentineldown-after-millisecondsmymaster3000

sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectivelydown,也简称为SDOWN)。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒。

*MEMCACHED* *M********ONGDB*

129. *mongdb的储存引擎,查库查表,查看数据,怎么将库里面的数据导出来*

在2015/3/17以前,MongoDB只有一个存储引擎,叫做MMAP,MongoDB3.0的推出使得MongoDB有了两个引擎:MMAPv1和WiredTiger。

>db.stats()

{

“db”:“demo”,

“collections”:3,

“objects”:5,

“avgObjSize”:55.2,

“dataSize”:276,

“storageSize”:16384,

“numExtents”:3,

“indexes”:1,

“indexSize”:8176,

“fileSize”:50331648,

“nsSizeMB”:16,

“ok”:1

}

2、查看数据库表

>db.system.users.stats()

{

“ns”:“demo.system.users”,

“count”:1,

“size”:92,

“avgObjSize”:92,

“storageSize”:8192,

“numExtents”:1,

“nindexes”:1,

“lastExtentSize”:8192,

“paddingFactor”:1,

“systemFlags”:1,

“userFlags”:0,

“totalIndexSize”:8176,

“indexSizes”:{

id”:8176

},

“ok”:1

}

db的帮助文档

输入:db.help();

db.AddUser(username,password[,readOnly=false])添加用户

db.auth(usrename,password)设置数据库连接验证

db.cloneDataBase(fromhost)从目标服务器克隆一个数据库

db.commandHelp(name)returnsthehelpforthecommand

db.copyDatabase(fromdb,todb,fromhost)复制数据库fromdb—源数据库名称,todb—目标数据库名称,fromhost—源数据库服务器地址

db.createCollection(name,{size:3333,capped:333,max:88888})创建一个数据集,相当于一个表

db.currentOp()取消当前库的当前操作

db.dropDataBase()删除当前数据库

db.eval(func,args)runcodeserver-side

db.getCollection(cname)取得一个数据集合,同用法:db[‘cname’]or

db.getCollenctionNames()取得所有数据集合的名称列表

db.getLastError()返回最后一个错误的提示消息

db.getLastErrorObj()返回最后一个错误的对象

db.getMongo()取得当前服务器的连接对象gettheserver

db.getMondo().setSlaveOk()allowthisconnectiontoreadfromthennonmastermembrofareplicapair

db.getName()返回当操作数据库的名称

db.getPrevError()返回上一个错误对象

db.getProfilingLevel()获取profilelevel

db.getReplicationInfo()获得重复的数据

db.getSisterDB(name)getthedbatthesameserverasthisonew

db.killOp()停止(杀死)在当前库的当前操作

db.printCollectionStats()返回当前库的数据集状态

db.printReplicationInfo()打印主数据库的复制状态信息

db.printSlaveReplicationInfo()打印从数据库的复制状态信息

db.printShardingStatus()返回当前数据库是否为共享数据库

db.removeUser(username)删除用户

db.repairDatabase()修复当前数据库

db.resetError()

db.runCommand(cmdObj)runadatabasecommand.ifcmdObjisastring,turnsitinto{cmdObj:1}

db.setProfilingLevel(level)设置profilelevel0=off,1=slow,2=all

db.shutdownServer()关闭当前服务程序

db.stats()返回当前数据库的状态信息

db.version()返回当前程序的版本信息

./mongoexport-dmy_mongodb-cuser-ouser.dat

root@localhostbin]#./mongoexport-dmy_mongodb-cuser-ouser.dat

connectedto:127.0.0.1

exported2records

[root@localhostbin]#catuser.dat

{"_id":{"$oid":“4f81a4a1779282ca68fd8a5a”},“uid”:2,“username”:“Jerry”,“age”:100}

{"_id":{"$oid":“4f844d1847d25a9ce5f120c4”},“uid”:1,“username”:“Tom”,“age”:25}

参数说明

-d指明使用的库,本例中为”my_mongodb”

-c指明要导出的表,本例中为”user”

-o指明要导出的文件名,本例中为”user.dat”

130. *ANSIBLE*

使用ansible-playbook创建一个abc用户并赋予644权限,host为all

-hosts:all

user:root

tasts:

-name:useraddabc

user:name=abcpassword=1group=root

-name:privileges

shell:chmod-R644/home/abc

**
**

131. *请写出saltstack或者ansible中你常用的5个管理模块*

文件模块:copy,file,blockinfile,lineinfile,find,replace

包管理模块:yum_repository,yum

命令模块:command,shell,script

系统类模块:cron,service,user,group

收集模块:setup

Linux下使用ansible实现批量修改50台机器上面的test用户密码。请写出实现方法

方法一:

-hosts:test

gather_facts:false

tasks:

-name:changeuserpasswd

user:name={{item.name}}password={{item.chpass|password_hash(‘sha512’)}}update_password=alwayscreaton

with_items:创建和校验哈希密码

-{name:‘root’,chpass:‘123’}

-{name:‘rep’,chpass:‘123’}

注释:对迭代项的引用,固定变量名为"item”,使用with_item属性给定要迭代的元素;

方法二:

/etc/ansible/hosts

test

132. *ansible都用来做什么*

实现了批量系统配置;批量程序部署;批量运行命令;自动化运维工具

*NGINX*

133. *请简单描述nginx与php-fpm的两种连接方式及其优缺点*

nginx服务器和php-fpm可以通过端口和unixsocket两种方式实现

tcpsocket的优点是可以跨服务器,当nginx和php-fpm不在同一台机器上时,只能使用这种方式

TCP是使用TCP端口连接127.0.0.1:9000Socket是使用unixdomainsocket连接套接字/dev/shm/php-cgi.sock

请写下命令检查nginx的当前配置文件,然后平滑重启

nginx-t-c指定配置文件

kill-HUP住进称号或进程号文件路径

134. *nginx如何配置能够获取用户的真实ip?*

当多层代理或使用CDN时,如果代理服务器不把用户的真实IP传递下去,那么业务服务器将永远不可能获取到用户的真实IP

nginx反向代理及cdn:•proxy_set_headerHost$http_host;

proxy_set_headerX-Real-IP$remote_addr;针对首层代理

proxy_set_headerX-Forwarded-F$proxy_add_x_forwarded_for;针对非首层代理

使用nginx自带模块realip获取用户IP地址:nginxrealip_module模块需要在编译nginx的时候加上参数–with-http_realip_module

#setuserrealiptoremoteaddr

set_real_ip_fromip段或地址

set_real_ip_fromip段或地址

real_ip_headerX-Forwarded-For;

real_ip_recursiveon;

需要知道所有CDN节点的ip地址或者ip段

135. *下面nginx配置文件中的一段配置,请写出输出结果,并说明为什么?*

location/test{

set$a32;

echo$a;

set$a56;

echo$a;

}

理论:输出3256实际:nginx配置文件不识别echo命令服务起不来

客户端发起请求,需要Web代理服务器根据请求(GET和POST)的参数代理到不同的后端服务器,请选择Web代理软件并简述实现的过程?

我们是用nginx做的代理软件

只需在nginx的location块下配置相应请求的路由

列如:location/{

root/usr/share/nginx/html;

indexindex.htmlindex.htm;

if(KaTeX parse error: Can't use function '\.' in math mode at position 14: request_uri~*\̲.̲html){

proxy_passhttp://htmlserver;

}

再在nginx的相应子配置文件中配置upstream

如:upstreamhtmlserver{

server192.168.122.10;

server192.168.122.20;

}

编写nginxrewrite规则,http://192.168.1.1/ops/index.php/admin/idc转化成http://192.168.1.1/ops/index.php?act=admin&arg=idc?

location~/ops/index.php/admin/(.)${

rewrite/ops/index.php/admin/(.*)/ops/index.php?act=admin&arg=$1last;

}

136. *线上访问的WEB页面出现504,如何处理?*

504表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。

与nginx.conf的配置也有关系

fastcgi_connect_timeout60 fastcgi_send_timeout60

fastcgi_read_timeout60

设置更久的nginx连接超时时间

nginx遇到盗链怎么解决的,Nginx的几种算法,反向代理,跨网访问

nginx遇到盗链怎么解决的:

模块:ngx_http_referer_module Syntax: valid_referersnone|blocked|server_names|string…;

Default: —

Context:server,location

列子:

location~*.(gif|jpg|png|bmp)${

valid_referersnoneblocked*.qfcloud.topserver_namestianyun.google.~.baidu.;

if($invalid_referer){

return403;

#rewrite.*http://qfcloud.top/403.jpg;

}

}

Nginx的几种算法:

轮询、ip_hash、weight、fair(第三方)、url_hash(第三方)

反向代理:笔记

跨域访问:

add_header’Access-Control-Allow-Origin’’*’;

add_header’Access-Control-Allow-Credentials’‘true’;

nginx怎么控制一个ip访问的次数?

请求数限制模块:

Syntax: limit_req_zonekeyzone=name:sizerate=rate;

Default:p

​ —

Context:http

列子:limit_req_zone$binary_remote_addrzone=allips:10mrate=20r/s;

链接数限制模块:

Syntax: limit_conn_zonekeyzone=name:size;

Default:p

​ —

Context:http

137. *nginx:实现负载均衡和反向代理,503,502,504报错从哪几个方面去考虑*

使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经执行fastCGI使用情况等都会导致502、504错误

502:调整php-fpm.conf的相关设置进程数不够max_children增加request_terminate_timeout也可以相应增加

503:用limit_conn_zone和limit_req指令配合使用来达到限制。一旦并发连接超过指定数量,就会返回503错误

nginx后端有2台PHP服务器A和B,匹配url开头为Login的请求转发到服务器A8080端口;匹配以png和jpg结尾的请求转发到服务器B的80端口,并指定的根目录为/appe/webroot/static/下,请简单编写nginx匹配转发规则

location/{

​ root/appe/webroot/static/;

​ if(KaTeX parse error: Can't use function '\.' in math mode at position 14: request_uri~*\̲.̲(png|jpg)){

​ proxy_passhttp://phpb:80/;

​ }

​ if($request_uri^~/login){

​ proxy_passhttp://phpa:8080/;

​ }

​ }

**
**

138. *防火墙*

139. *禁止来自10.0.0.188ip地址访问80端口的请求*

#iptables-tfilter-AINPUT-s10.0.0.188-ptcp–dport80-jREJECT

或者

#iptables-tfilter-AINPUT-s10.0.0.188-ptcp–dport80-jDROP

用iptables添加一个规则允许192.168.0.123访问本机端口

#iptables-tfilter-AINPUT-s192.168.0.123-jACCEPT

140. *iptables是否支持time时间控制用户行为,如有请写出其具体操作步骤*

支持。需要增加相关支持的内核补丁,并且要重新编译内核。

或者使用crontab配合iptables,首先:vi/deny.bat输入/sbin/iptables-AOUTPUT-ptcp-s192.168.1.0/24–dport80-jDROP保存退出

打开crontab-e

输入:0021* * */bin/sh/deny.bat

141. *包过滤防火墙与代理应用防火墙有什么区别,能列出几种相应的产品吗?*

包过滤防火墙工作在网络协议IP层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力。

代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。

代理应用防火墙:天融信GFW4000

包过滤防火墙:华为NE16E

142. *什么是NAT,常见分为哪几种,DNAT与SNAT有什么不同,应用事例有哪些?*

NAT(NetworkAddressTranslation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程。分为DNAT(目的网络地址转换)和SNAT(源网络地址转换)

SNAT主要是用于内网主机通过路由器或网关访问外网

DNAT将外部地址和端口的访问映射到内部地址和端口

如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0

#iptables-tnat-APREROUTING-d192.168.16.1-ptcp–dport80-jDNAT–to192.168.16.1:8080

或者:

#iptables-tnat-APREROUTING-ieth0-d192.168.16.1-ptcp-mtcp–dport80-jREDIRECT–to-ports8080

请注释说明以下iptables规则中划线部分中实现的功能

-APOSTROUTING-s192.168.0.0/255.255.0.0-jRETURN

-APOSTROUTING-d192.168.0.0/255.255.0.0-jRETURN

-IFORWARD-d192.168.3.150-jACCEPT-mcomment–comment"redisserver"

-AFORWARD-d192.168.0.0/255.255.0.0-jREJECT–reject-with_icmp-port-unreachable

-APOSTROUTING-s10.0.1.0/255.255.255.0-oeth0-JMASQUERADE

centos7默认防火墙允许80端口外网访问,写出相应安全策略。

firewall-cmd–zone=public–add-port=80/tcp–permanent

143. *serviceiptablesstop与iptables-F有何区别?*

serviceiptablesstop停止iptables服务,防火墙设定的所有规则都失效,但表和链中的规则还在

iptables-F,清空所有表所有链中的规则,iptables服务是运行状态,链中的默认策略还生效

请问如何用iptables工具阻断来自192.168.0.1的所有网络连接

iptables-AINPUT-s192.168.0.1-jDROP

请写出iptables做NAT转发的步骤及iptables命令

DNAT目标地址转换

iptables-tnat-APREROUTING-ippp0-ptcp–dport80-jDNAT–to192.168.0.3:80把从ppp0进来的要访问tcp/80的数据包的地址改为192.168.0.3

SNAT网络地址转换

iptables-tnat-APOSTROUTING-s192.168.0.0/24-jSNAT–to1.1.1.1将内网192.168.0.0/24的源地址改为1.1.1.1

144. *诊断DNAT映射是否成功的最好方法(命令)是?*

elinkshttp://映射前的ip

配置iptables,允许221.166.247.12访问本机(eth1:221.100.247.10,eth0:172.20.46.254)的8080端口,并将本机(eth1:221.100.247.10)的8080端口转发到172.20.46.30的80端口(使用NAT)(无需考虑系统限制及路由,写出iptables的配置即可)

iptables-AINPUT-ptcp–dport8080-s221.166.247.12-jACCEPT

iptables-tnat-APREROUTING-ptcp–dport8080-d221.100.247.10-jDNAT–to172.20.46.30:80

实现把访问10.0.0.3:80的请求转到172.16.1.17:80

iptables-tnat-APREROUTING-d10.0.0.3-ptcp–dport80-jDNAT–to172.16.1.17:80

*TOMCAT*

145. *您用过的几种中间件/Web应用服务器软件产品,各是什么?*

中间件:php:php-fpmphp-mysqlphp-gdphp-cli

jsp:Tomcat,Resin,JBOSS,WebSphere(IBM),Weblogic(Oracle)

Web应用服务器软件产品:

Apache,由于其跨平台和安全性被广泛使用,是最行流行的web服务器端软件之一;

tomcat服务器是一个免费的开放源代码的Web应用服务器nginx

Tomcat调整JVM内存的大小需要修改哪些配置文件。

在tomcat的启动脚本catalina.sh添加如下:

#OSspecificsupport.$var_must_besettoeithertrueorfalse.

JAVA_OPTS="-server-Xms800m-Xmx800m-XX:PermSize=64M-XX:MaxNewSize=256m-XX:MaxPermSize=128m-Djava.awt.headless=true" 常见的Java虚拟机有:J9VM、HotSpotVM、ZingVM。

146. *请写出Tomcat程序的主配置文件名* *在conf目录下:server.xml*

147. *Tomcat:调优工作模式基于什么协议*

并发优化:在TOMCAT_HOME/bin/catalina.sh增加如下语句,

JAVA_OPTS="-Xms1024m-Xmx1024m-Xss1024K-XX:PermSize=64m-XX:MaxPermSize=128m"

建议和注意事项:

-Xms和-Xmx选项设置为相同堆内存分配,以避免在每次GC后调整堆的大小,堆内存建议占内存的60%~80%;非堆内存是不可回收内存,大小视项目而定;线程栈大小推荐256k.

tomcat的运行模式有3种,即BIO、NIO和APR。 tomcat基于HTTP协议

148. *Tomcat服务的配置文件是哪个?* *tomcat服务的配置文件是server.xml*

*后端Java,客户端访问慢,从哪几点考虑?服务器内存java虚拟机内存分配问题并发设置进程设置*

*邮件服务器*

149. *列出作为完整邮件系统的软件,至少二类*

Sendmail,(邮件传输代理程序)postfix,(WietseVenema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件)

qmail(qmail是一个因特网邮件传送代理(简写为MTA),它运行在linux/Unix兼容系统下,是一个直接代替UNIX下Sendmail软件的邮件传送程序。)

*ZABBIX*

150. *写下之前工作中在生产环境配置使用过的监控系统?针对网络或服务配置过哪些监控项?使用什么方法进行报警通知*

答:zabbix监控:服务器启动分区剩余空间服务器网络接口进出流量服务器服务状态服务器进程数量服务器CPU状态磁盘IO情况文件修改磁盘总和报警方式:邮件报警,微信报警,

151. *使用何种工具监控的数据库?监控哪些指标?*

zabbix

使用mysql自带的模板

监控:QPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,监控主从(showslavestatus\G);TPS(每秒事务的处理数量);监控缓冲池使用情况;缓存碎片;慢查询数量;当前连接数;吞吐量;端口和服务状态;mysql正常运行的时间;

152. *架构设计题:*

153. *你可以采取任何设备和不同操作系统服务设计对两台WWW服务器和两台FTP服务器作负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)*

这是利用DNS处理域名解析请求的同时进行负载均衡的一种方案。

在DNS服务器中配置多条A记录,

每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样A记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。

www1INA192.168.1.1

www2INA192.168.1.2

www3INA192.168.1.3

ftp1INA192.1.1.4

ftp2INA192.1.1.5

ftp3INA192.1.1.6

wwwINCNAMEwww1

wwwINCNAMEwww2

wwwINCNAMEwww3

ftpINCNAMEftp1

ftpINCNAMEftp2

ftpINCNAMEftp3

154. *Linux系统层面有哪些常见的安全防护方法*

1,防火墙只开放对外的服务端口 2,禁止ROOT远程登录 3,修改/etc/passwd访问权限 4,修改sshd的服务端口

5,只允许公司出口IP连接sshd服务端口 6,还有修改执行命令历史记录数 7,禁用不用的服务和应用

8,检查系统日志

155. *怎么理解存储?*

存储就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问,总的来讲可以包含两个方面的含义: 它是数据临时或长期驻留的物理媒介; 它是保证数据完整安全存放的方式或行为。

156. *请描述你是怎么优化Linux系统的?*

1、不用root,添加普通用户,通过sudo授权管理。

2、更改默认的远程连接SSH服务端口及禁止root用户远程连接。

3、定时自动更新服务器时间。

4、配置yum更新源,从国内更新源下载安装rpm包。

5、关闭selinux及iptable。

6、调整文件描述符的数量。进程及文件的打开都会消耗文件描述符。

7、定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。

8、精简开机自启动服务(crond,sshd,network,rsyslog)。

9、linux内核参数优化/etc/sysctl.conf,执行sysctl-p生效。

10、更改字符集,支持中文,但建议还是使用英文字符集,防止乱码问题,不要使用中文。

11、锁定关键系统文件。

12、清空/etc/issue,去除系统及内核版本登陆前的屏幕显示。

157. *请用画图的方法说明并讲解你曾经接触过的规模最大的服务器集群架构*

client:客户端 cdn加速:内容分发网络 firewall:防火墙 wiki:(多人协作的写作系统) dr:负载均衡器 rabbitMQ:消息队列集群 站内搜索服务器solr(做集群,工具由开发选用)

memcachedx3:缓存堆(不能做集群,但可用多个。与gelara集群并行)

redis集群:(keepalived提供一个唯一ip入口)

pxe服务器:批量安装操作系统,初始化使用服务器 ansible:统一部署

zabbix:监控服务器(可用做高可用)(分布式监控:核心监控,代理层监控下的服务器才是真正被监控的机器)

ELK:开源实时日志分析平台 ips:入侵防御系统 ids:入侵检测系统

cmdb资产管理:配置管理数据库,通过识别、控制、维护,检查企业的IT资源,从而高效控制与管理不断变化的IT基础架构与IT服务

158. *如何查看Linux系统每个IP的连接数*

netstat-n|awk’/^tcp/{print$5}’|awk-F:’{print$1}’|sort|uniq-c|sort-rn

159. *rsync+inotify是做什么的?加什么参数才能实现实时同步?–delete参数又是什么意*

160. *思?*

1:Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)

161. *加什么参数才能实现实时同步?* *inotifywait-m*

162. *–delete参数又是什么意思?* *–delete:文件或目录被删除在监控目录中*

163. *虚拟化vSphere,Hyper-V,kvm*

1、VMwarevSphere集成容器(VIC)建立了一个在轻量级虚拟机内部署并管理容器的环境。

2、Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化

3、KVM是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM(虚拟机监控器)之一。

164. *问:Linux系统下,如何修改test用户,最大的打开文件数量为10240,最大的进程数为20480?*

答:[root@wing~]#vim/etc/security/limits.conf testsoftfsize9000 testhardfsize10240

[root@wing~]#vim/etc/security/limits.d/20-nproc.conf rootsoftnprocunlimited

test hard nproc 20480

*KEEPALIVED*

165. *请简单阐述keepalived的故障切换工作原理*

keepalived是以VRRP协议为实现基础的VRRP,全称VirtualRouterRedundancyProtocol,中文名为虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。

在两个负载均衡调度器上安装Keepalived以实现高可用的目的。

两个调度器之间通过VRRP协议来保证高可用性,当一台调度器宕机时,另一台备用的立即接替原主机服务,当主机被修复之后又将服务返还给主机。

在主节点正常工作的时候,会不断地向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障的时候,备节点就无法收到主节点广播的消息,即可判定主节点发生故障,进而调用自身的接管程序,接管主节点的IP资源及服务。而而当主节点被修复时,备节点会释放主节点故障时自己所接管的IP资源和服务,恢复到原来备用的角色。

166. *请简述非对称加密算法工作过程*

1.乙方生成两把密钥(公钥和私钥)

2.甲方获取乙方的公钥,然后用它对信息加密。

3.乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串

4.甲方获取乙方私钥加密数据,用公钥解密

*负载均衡*

167. *描述Lvs、Nginx负载均衡的五种调度算法。*

nginx负载均衡的5种策略

一,Lvs:

1、静态算法:rr(轮询调度算法),wrr(权重调度算法),sh(源地址散列),dh(目标地址散列,把同一个ip地址的请求,发送给同一个server)

2、动态调度算法:LC(最少连接),wlc(加权最少连接),sed(最短延迟调度),nq(永不排队,改进的sed)

二、nginx:

1、rr:轮询算法(依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于所有节点的性能一致的情况)

2、wrr:权重算法(根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点)

3、ip_hash算法(根据用户访问的真实ip生成一个hash表,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session会话共享的问题)

4、url_hash(根据用户访问的url的hash结果,使每个url定向到同一个后端服务器上)

5、fair(更加智能的负载均衡算法,可以根据页面大小的和加载时间长短智能的进行负载均衡)

168. *问:采用四层负载均衡的可以用哪种方式?********答:lvshaproxy硬件负载均衡器(F5-BigIpRedware)*

*REBBITMQ*

169. *描述rabbitmq集群搭建步骤*

通过Erlang的分布式特性(通过magiccookie认证节点)进行RabbitMQ集群,各RabbitMQ服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。

这些节点通过RabbitMQHA队列(镜像队列)进行消息队列结构复制。本方案中搭建3个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ集群对外就能提供服务。

RabbitMQ集群安装在3个节点上:192.168.1.1、192.168.1.2、192.168.1.3;

HAProxy安装在192.168.1.1上,用于对外提供RabbitMQ均衡

*ZOOKEEPER*

170. *zookeeper如何保证事务的一致性*

数据一致性是靠Paxos算法(一种基于消息传递的一致性算法。)保证的,Paxos可以说是分布式一致性算法的鼻祖,是ZooKeeper的基础 paxos的基本思路(深入解读zookeeper一致性原理):http://wely.iteye.com/blog/2362118

171. *你对运维工程师的理解和以及对其工作的认识*

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供稳定、安全的服务。保障公司正常对外提供服务。运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨。

同时在工作中也要能及时发现问题,解决问题,记录问题。在工作中以及工作之余不断充实完善自己,更好的服务公司。

172. *请简述C/S、B/S的含义。*

C/S表示客户端/服务器的模式C是client,S是server。c/s中需要另外开发客户端程序

B/S表示浏览器/服务器的模式B是browser,S是server。b/s是基于浏览器来实现的。

173. *电脑开机时主机内发出嘀嘀的鸣叫声,且显示器无任何信号,此对象可能是哪方面所导致,怎样处理?*

可能是内存问题导致,一般是内存松动,灰尘较多.可以做清扫灰尘处理,重新插好内存等操作.

各种主板的报警音有些差别,常见两种BIOS报警声音含义如下,自己根据长短查对属于那种情况吧:

AwardBIOS的报警音:

1短:系统正常。

2短:需要更正CMOS设置,请进入CMOSSetup重新设置。

1长1短:RAM或主板出错。

1长2短:显示卡错误,检查独立显卡是否插牢,或者显卡坏了。

1长3短:键盘控制器错误。检查主板。

1长9短:主板BIOS损坏。

不断地响(长声):内存条未插好或损坏。重复短响:电源故障。 无声音无显示:电源故障。

AMIBIOS的报警音:

1短:内存问题。

2短:内存ECC较验错误。在CMOSSetup中将内存关于ECC校验的选项设为Disabled就可以解决。

3短:系统基本内存(第1个64kB)检查失败。换内存。

4短:系统时钟出错。

5短:CPU损坏。

6短:键盘控制器故障。

7短:系统实模式错误,不能切换到保护状态。

8短:显存错误。更换显卡。

9短:ROMBIOS错误。

1长3短:内存错误。内存损坏,更换即可。

1长8短:显卡损坏或显示卡没插好。

174. *有一个员工,说他的机器上不了网,请你描述一下,可能是哪些故障产生的,怎么解决这些故障?*

查看软件和硬件

ping网关和其他机器.ping不通,看看是不是网卡被禁了,还是ipdnsgateway有问题,再看看网卡驱动是不是有问题.

硬件方面: 看看是不是网线没插好,网卡的灯亮不亮.

175. *Linux系统统计服务器服务连接数命令?(前面原题)*

netstat-n|awk’/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}’

或是

netstat-nat|grepESTABLISHED|wc-l

176. *Linux运维工程师都需要具备哪些技能和职业品质?*

熟练使用shell,最好也能掌握python的使用。

熟悉运维自动化工具和平台的使用,能整合、研发更好,通过自动化,实现运维数据可视化、生成报表;

能够独立进行运维的问题跟踪与管理,故障处理和隐患排查,定期给出业务运维状况和容量报告;

能够研究移动互联网应用服务架构及其依赖的软硬件环境,跟踪各个子系统的内部运行状况,不断提高系统的健壮性与效率;

能熟练应对协助开发完成日常变更,上下线等的维护事务;

能对系统和业务数据进行统一存储、备份和恢复,对网络设备、服务器设备、操作系统运行状况进行监控。

首先要有良好的品行需要有发现问题,解决问题的能力。遇事沉着冷静。动动你的小脑袋夸夸自己,

不过一定要积极向上,杜绝消极思想。

查看http并发请求数及连接状态的命令关键字分别是:

[root@web1~]#netstat-nt

ActiveInternetconnections(w/oservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp0010.18.45.108:8010.18.45.47:63136SYN_RECV tcp05210.18.45.108:2210.18.45.47:52455ESTABLISHED

tcp60010.18.45.108:8010.18.45.47:63133ESTABLISHED tcp60010.18.45.108:8010.18.45.47:63135ESTABLISHED

netstat-nt|awk’/^tcp/{++S[$NF]}END{for(ainS)printS[a],a}’

1SYN_RECV 3ESTABLISHED 2TIME_WAIT SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。

状态:描述

CLOSED:无连接是活动的或正在进行 LISTEN:服务器在等待进入呼叫 SYN_RECV:一个连接请求已经到达,等待确认 SYN_SENT:应用已经开始,打开一个连接 ESTABLISHED:正常数据传输状态 FIN_WAIT1:应用说它已经完成

FIN_WAIT2:另一边已同意释放 ITMED_WAIT:等待所有分组死掉 CLOSING:两边同时尝试关闭 TIME_WAIT:另一边已初始化一个释放 LAST_ACK:等待所有分组死掉

对文件系统进行检查的命令是:

fsck-text4/dev/sda1-r(这样它会检查文件系统完整性,如果有什么问题,它会提示问你要不要修复的,如果你懒得理它,想让它自己修复,那就在末尾加上-y参数。)

177. *简述当用户输入login.lanxin.cn到这个页面显示在浏览器上,这个过程中都发生了?*

1.浏览器输入域名回车 2.查询本地的DNS缓存,以找到域名对应的主机IP地址,如果本地没有 3.查询远程域名根DNS,找到IP地址 4.查询到后,向远程IP地址的服务器发送请求 5.服务器响应请求,向用户发送数据

6.浏览器对返回的数据进行处理(浏览器渲染) 7.显示

178. *如果接到客服反馈:A项目www.lanxinA.cn无法打开,作为一名运维人员需要怎么操作?*

1、先把服务切走,保证公司网站能正常对外提供服务

2、查看网络是否正常

3、本地网络速率正常时,再检查网站是否正常,域名是否能被正常解析到ip

使用故障诊断命令定位故障点。

命令分析:ping:检测IP或域名的连通性

dig/nslookup:查看DNS解析情况

traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。

4、检查服务器本身是否故障

5、协调开发检查设计是否异常

179. *在之前的运维工作中你遇到过哪些运维故障?是怎么解决的?请描述2个你发现并解决的故障案例*

1、问题描述:服务器tomcat重启之后,网站很长一段时间无法访问,然后过几分钟就可以访问了。

使用命令netstat-tulnp|grepjava发现是8005端口的问题,起来很慢,日志里面又没有什么报错信息。

原因:Tomcat启动过程很慢,JVM上的随机数与熵池策略耗时:session引起的随机数问题导致的。

解决方案: 修改$JAVA_HOME/jre/lib/security/java.security文件中securerandom.source配置项:

#securerandom.source=file:/dev/urandom 改为 securerandom.source=file:/dev/./urandom

最后重启tomcat发现速度快了。

2、Tomcat每周六重启失败

问题背景:生产环境上面的tomcat每周六重启,但是重启失败

原因:经过调查发现是因为一个tomcat产生了多个java进程,所以执行自带脚本shutdown.sh的时候没有把tomcat进程完全杀死。

解决方案:将杀死tomcat进程的脚本放在重启脚本的前面执行

592**6/app/bin/kill.sh>>/app/log/backup/kill.log2&1

013**6/app/bin/restart_tomcat.sh>>/app/log/backup/restart.log2&1

180. *假设网站结构为:Nginx→PHP-FPM→Mysql有部分链接打开缓慢,通过什么方式可以找到访问缓慢的链接*

1、系统负载,磁盘IO 2、是否有php慢查询程序 打开php-fpm中php慢查询日志

request_slowlog_timeout=5 slowlog=var/log/slow.log

reload访问之后无慢查询日志,判断无执行时间比较慢的php程序

2.检查该配置文件

pm=static pm.max_children=300 pm.start_servers=15 pm.min_spare_servers=8 pm.max_spare_servers=48

request_terminate_timeout=200 排除是pm.max_children设置过小引起的问题。

3,mysql可能有慢查询

181. *请写出5个你常用的系统或网络维护工具的名称*

配置部署自动化:ansible(puppet,saltstart)

日志采集、分析、报警:ELK

网络质量监控:smokeping、zabbix

监控(报警)自动化:nagios(监控系统),ganglia(集群监控),cacti(流量监控)、ipmonitor(ping监控)等

指标收集:collectd+statsd(statsite)

指标绘图:graphite、nrpe、pnp4nagios

182. *有IP恶意刷流量怎么办*

将对应ip禁掉 #iptables-tfilter-AINPUT-sip-ptcp–dport80-jREJECT

或者 #iptables-tfilter-AINPUT-sip-ptcp–dport80-jDROP

183. *远程管理卡作用。怎么通过命令看硬盘,内存等硬件故障。*

1、远程安装操作系统

登录 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态远程管理卡管理界面,用控制卡上的虚拟介质映射功能把自己电脑上的ISO文件或者物理光驱投递给机房里服务器。

2、电源控制功能 远程登录管理界面,进行开机、关机、重启

3.检查服务器硬件状态 监控电池、风扇、CPU、内存、磁盘等硬件设备的状态

184. *平时在公司都干些什么?*

1.处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些定时清理脚本

2.处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入,找到原因,并跟开发一起讨论最后是否撤销还是重上 3.日常一起能够自动化的工作尽量找到自动化的方法

4.会启动一些和运维相关的项目,所以有时候也兼职项目开发 5.参与例会 6.学习,看看新闻,学习资料等等。

或者

1,等待监控系统报警 2,核心系统巡检,备份系统备份任务完成情况巡检 3,等待用户报障

4,例行任务计划攥写,例行任务执行,比如新开用户,存储扩容等; 5,项目性的工作,比如新购存储,新的监控系统,新的操作系统,应用系统验证 6,学习新知识,看技术文档或者公司的各种通知 7,和不同供应商(工程师),内部人员开会

185. *java报错socket*

1.java.net.SocketTimeoutException.这个异常比较常见,socket超时。

一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(SocketAddressendpoint,inttimeout)中的后者来决定,还有就是setSoTimeout(inttimeout),这个是设定读取的超时时间。它们设置成0均表示无限大。

.java.net.BindException:Addressalreadyinuse:JVM_Bind。

该异常发生在服务器端进行newServerSocket(port)或者socket.bind(SocketAddressbindpoint)操作时。

原因:与port一样的一个端口已经被启动,并进行监听。此时用netstat–an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。

status模块监控nginx等。

如何测试网速,测试视频吞吐与常规网速测试的区别

ping

服务器系统状态监控指标(前面有原题)

名词解释:

HDLC,VTP,OSPF,RIP,DDOS,GNU,netscreen,ssh,smartd,apache,WAIT_TIME

HDLC(High-LevelDataLinkControl):

高级数据链路控制:是一个在同步网上传输数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据IBM公司的SDLC(SynchronousDataLinkControl)协议扩展开发而成的。

VTP(VLANTrunkingProtocol):

VLAN中继协议,也被称为虚拟局域网干道协议:它是思科私有协议。作用是十几台交换机在企业网中,配置VLAN工作量大,可以使用VTP协议,把一台交换机配置成VTPServer,其余交换机配置成VTPClient,这样他们可以自动学习到server上的VLAN信息。

它是一个OSI参考模型第二层的通信协议,主要用于管理在同一个域的网络范围内VLANs的建立、删除和重命名。

OSPF(OpenShortestPathFirst开放式最短路径优先):

OSPF是IETF(国际互联网工程任务组TheInternetEngineeringTaskForce)开发的基于链路状态的自治系统内部路由协议。

OSPF仅传播对端设备不具备的路由信息,网络收敛迅速,并有效避免了网络资源浪费;OSPF直接工作于IP层之上,IP协议号为89;OSPF以组播地址发送协议包;

RIP(RoutingInformationProtocol)

路由信息协议RIP是基于距离矢量算法的路由协议,利用跳数来作为计量标准。

(缺点:由于15跳为最大值,RIP只能应用于小规模网络;收敛速度慢;根据跳数选择的路由,不一定是最优路由。)

DDOS(DistributedDenialofService)

分布式拒绝服务攻击攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

在信息安全的三要素——“保密性”、“完整性”和“可用性”中,DDOS针对的是可用性。

GNU(GNUisNotUnix”的递归缩写)

GNU是一个自由的操作系统,其内容软件完全以GPL(GNU通用公共许可证)方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU’sNotUnix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。

netscreen

Netscreen防火墙是一种高性能的硬件防火墙,与其它的硬件防火墙相比有本质的区别。

其它的硬件防火墙实际上是运行在PC平台上的一个软件防火墙,而Netscreen防火墙则是由ASIC芯片来执行防火墙的策略和数据加解密,因此速度比其它防火墙要快得多。从软件特性上看Netscreen防火墙是状态检测与应用代理混合的防火墙,对于大部份的应用Netscreen防火墙是监测整个通讯状态,如果发现通讯状态不正常便拒绝进入受保护的内部网络,对于FTP或H322等通讯状态不好跟踪的服务Netscreen防火墙通过应用代理来确保服务安全。

ssh(SecureShell)

安全外壳协议由IETF的网络小组(NetworkWorkingGroup)所制定;SSH为建立在应用层基础上的安全协议。目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

smartd

smartd是一个守护进程(一个帮助程序),它能监视拥有自我监视,分析和汇报技术(Self-Monitoring,Analysis,andReportingTechnology-SMART)的硬盘。SMART系统使得硬盘能监视并汇报自己的运行状况。它的一个重要特性是能够预测失败,使得系统管理员能避免数据丢失。

apache

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。

WAIT_TIME

186. *写下之前工作中在生产环境中对何种角色的服务器上的哪些内容配置过备份,使用什么备份方法及备份策略,使用了什么方法检查备份的可用性?*

1、 每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留2.内核备份

数据库备份

备份方案:1.设置数据库自动备份脚本文件,计划任务2.每个星期天做全库备份3.每日(星期天除外)做级增量备份4.在主服务器保留一个礼拜内的全库备份、增量备份5.将一个礼拜前的全库备份,增量备份数据FTP到其他环境6.还可以加入差异备份,多种备份形式。

187. *tcp链接状态有哪些,分别代表什么意思*

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

https://www.cnblogs.com/Jessy/p/3535612.html

188. *linuxA机器提供了80端口服务,但是用户反馈访问慢,如何排查问题?*

1、当网站访问较慢时,首先先查看本地网络是否正常

2、本地网络速率正常时,再检查下所访问的网站是否正常

总时间:网站的响应时间,可了解网站的性能瓶颈或者是利用谷歌或IE浏览器的F12开发者工具查看下网站的大小和网站的打开速度成不成正比。

3、网站出现无法访问时,使用故障诊断命令定位故障点。

命令分析:ping:检测IP或域名的连通性dig/nslookup:查看DNS解

析情况traceroute:显示从访问者到网站的路由连接状态,如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。

4、利用浏览器开发者模式检查下图片、js、css是否做过压缩处理

5、数据库(连接数等)、服务器(cpu、内存等)

6、从网站本身找问题,网站的问题包括网站程序设计,网页设计结构,网页内容三个部分。

迅游科技有限公司

189. *现有两个文件里面分别有3行内容,现将两个文件里面的内容放到第三个文件里,要求是交叉放到两个文件里,一条命令如何解决?*

一个比较粗糙的答案:

#awk’NR1{a=$0};NR2{b=$0};NR3{c=$0};NR4{d=$0};NR5{e=$0};NR6{f=$0}END{printa,"\n"d,"\n"b,"\n"e,"\n"c,"\n"f}'a.txtb.txtaaa

111

bbb

222

ccc 333

用数组处理:

#awk’{a[NR]=$0}END{printa[1]"\n"a[4]"\n"a[2]"\n"a[5]"\n"a[3]"\n"a[6]}'a.txtb.txt

Aaa 111 bbb 222 ccc 333

190. *现有a和b两个文件,将a和b文件的内容输出到c文件里,按要求写入到c文件里.1\na\n2\nb\n3\nc*

a文件内容 1 2 3

b文件内容 a b c

awk’{a[NR]=$0}END{printa[1]"\n"a[4]"\n"a[2]"\n"a[5]"\n"a[3]"\n"a[6]}'ab>>c

191. *icmp协议属于tcp/ip协议或者OSI模型的那一层。*

icmp===Internet控制消息协议

该协议是TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,

包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的

传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息

并记录收到ICMP回应回复消息,通过这些消息来对网络或主机的故障提供参考依据。

192. *hadoop中的HDFS的文件存储过程中的写操作。namenode节点作用*

hadoop概念:

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streamingaccess)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。

193. *Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:*

1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5.低成本。与一体机、商用数据仓库以及QlikView、YonghongZ-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

194. *HDFS写文件过程:*

1.初始化FileSystem,客户端调用create()来创建文件

2.FileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件,元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。

3.FileSystem返回DFSOutputStream,客户端用于写数据,客户端开始写入数据。

4.DFSOutputStream将数据分成块,写入dataqueue。dataqueue由DataStreamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。DataStreamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。

5.DFSOutputStream为发出去的数据块保存了ackqueue,等待pipeline中的数据节点告知数据已经写入成功。

6.当客户端结束写入数据,则调用stream的close函数。此操作将所有的数据块写入pipeline中的数据节点,并等待ackqueue返回成功。最后通知元数据节点写入完毕。

7.如果数据节点在写入的过程中失败,关闭pipeline,将ackqueue中的数据块放入dataqueue的开始,当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。元数据节点则被通知此数据块是复制块数不足,将来会再创建第三份备份。

NameNode:是一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上

NameNode的作用:是管理文件目录结构,接受用户的操作请求,是管理数据节点的

195. *zabbix监控的优缺点。*

zabbix优点:

1、数据采集:可用性和性能检测,自动发现,支持agent、snmp、JMX、telnet等多种采集方式,支持主动和被动模式数据传输、支持用户自定义插件,自定义间隔收集数据

2、高可用:server对设备性能要求低,支持proxy分布式监控,分布式集中管理,有自动发现功能,可以实现自动化监控;开放式接口,扩展性强,插件编写容易

3、告警管理:支持多条件告警,支持多种告警方式,支持多组模板,模板继承。

4、告警设置:告警周期,告警级别,告警恢复通知、告警暂停,时段阈值、支持维护周期、支持单机停用

5、图形化展示:允许自定义创建多监控项视图,网络拓扑,自定义面板展示,自定义IT服务可用性

6、历史数据:历史数据查询可配置,内置housekeeping数据清理机制

7、安全审计:具备安全的用户审计日志,权限认证,用户可以限制允许维护的列表。

zabbix缺点:

1、性能瓶颈,监控系统没有低估高峰期,具有持续性和周期性,机器量越大,数据的增大会使数据库的写入成为一定的瓶颈,官网给出的单机上限5000台,届时就需要增加proxy,增加成本。

2、Zabbix采集数据有pull方式,也就是server主动模式,当目标机器量大之后,pull任务会出现积压。采集数据会延迟

3、项目二次开发,需要分析MySQL表结构,表结构比较复杂,通过API开发对开发能力有要求。

4、内置housekeeping在执行过程中会对数据库增加压力,需要对数据库进行优化

196. *大小写字母的替换,将qianfengjiaoyu中的n转换成大写的N.*

(1)url=qianfengjiaoyu echo${url//n/N} 或

(2)echoqianfengjiaoyu>1.txt sed-ris/qianfengjiaoyu/qiaNfeNgjiaoyu/g1.txt

197. *简单说一下tcp/ip协议中的tcp和ip*

TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。

说明:

TCP(TransportControlProtocol)传输控制协议 IP(InternetworkingProtocol)网间网协议

UDP(UserDatagramProtocol)用户数据报协议 ICMP(InternetControlMessageProtocol)互联网控制信息协议

SMTP(SimpleMailTransferProtocol)简单邮件传输协议 SNMP(SimpleNetworkmanageProtocol)简单网络管理协议

FTP(FileTransferProtocol)文件传输协议 ARP(AddressResolationProtocol)地址解析协议

从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网间网层、传输层、应用层。

TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议

在因特网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的中间层

ip协议是网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议

IP协议是将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。

IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。

198. *公司的架构,服务器的数量,之前公司运维部的人员数量,之前工作流程*

服务器数量五六十台,运维人数2人,运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强,进行日常巡检发现服务可能存在的隐患,对整体架构进行优化以屏蔽常见的运行故障,多数据中接入提高业务的容灾能力。通过监控、日志分析等技术手段,及时发现和响应服务故障,减少服务中断的时间,使公司的互联网业务符合预期的可用性要求,持续稳定地为用户提供务。

---------------------

199. *进程和线程的区别*

线程:线程来源与进程 线程模式需要事先开启进程 线程模式并发量高

进程:进程稳定性高;线程稳定性低 进程独占内存;线程共享进程的内存 一个进程可以有多个线程;

200. *他们公司数据库使用的是mongodb,注意mongodb*

MongoDB是一个基于分布式文件存储的数据库

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

*面向集合存储,易存储对象类型的数据。mongodb集群参考 *模式自由。 *支持动态查询。

*支持完全索引,包含内部对象。 *支持查询。支持复制和故障恢复。 *可通过网络访问。

*使用高效的二进制数据存储,包括大型对象(如视频等)。 *自动处理碎片,以支持云计算层次的扩展性。

*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 *文件存储格式为BSON(一种JSON的扩展)。

某公司面试总结

201. *keepalived的协议?vrrp*

Haproxy可以做web中间件吗?不可以Haproxy可以作web负载均衡。

ha-proxy作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。

支持tcp/http两种协议层的负载均衡,使得其负载均衡功能非常丰富。

支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。

性能非常优秀,基于事件驱动的链接处理模式及单进程处理模式(和Nginx类似)让其性能卓越。

拥有一个功能出色的监控页面,实时了解系统的当前状况。 功能强大的ACL支持,给用户极大的方便。

202. *Nginx的rewrite地址重写的四中模式与区别?*

last相当于Apache里的[L]标记,表示完成rewrite//如果不写标记默认为这个

break本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent返回301永久重定向,浏览器地址会显示跳转后URL地址

Last表示匹配完成后会重新发起请求。last和break用来实现URL重写,浏览器地址栏URL地址不变

203. *301和302的区别?*

301会直接跳转到指定的url,302会选择那个好看跳转那个,会发生url地址劫持现象。

301永久移动请求的网页已被永久移动到新位置。服务器返回此响应(作为对GET或HEAD请求的响应)时,会自动将请求者转到新位置。您应使用此代码通知Googlebot某个网页或网站已被永久移动到新位置。

302临时移动服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应GET和HEAD请求的301代码类似,会自动将请求者转到不同的位置。但由于Googlebot会继续抓取原有位置并将其编入索引,因此您不应使用此代码来通知Googlebot某个页面或网站已被移动。

204. *Ansible的优缺点?*

优点:模块工作基于ssh连接,不需要服务器端,使用时直接运行命令即可。轻量级不用安装客户端分布式的

缺点:二次开发难,ssh如果拷贝公钥不成功,无法实现批量管理。如果控制的机器少不适合用ansible

205. *Lvs和keepalived的区别?*

lvs用于负载均衡,分担服务器压力, keepalived实现高可用,通常会对负载均衡集群实现高可用

206. *Python的类模块?*

模块分为三类:内置模块;第三方;自定义;

207. *Docker的网络?*

1.openvswitch

果要在生产和测试环境大规模采用docker技术,首先就需要解决不同物理机建的docker容器互联问题。可以采用openvswitch实现不同物理服务器上的docker容器互联

2.路由模式:Docker默认的内部ip为172.17.42.0网段,所以必须要修改其中一台的默认网段以免ip冲突。宿主机开路由:echo1>/proc/sys/net/ipv4/ipf_forward

现在两台宿主机里的容器就可以通信了。

host模式:

dockerrun使用–net=host指定,docker使用的网络实际上和宿主机一样

2.container模式:

使用–net=container:container_id/container_name,多个容器使用共同的网络,看到的ip是一样的。

3.none模式

使用–net=none指定,这种模式下,不会配置任何网络。

4.bridge模式

使用–net=bridge指定,默认模式,不会指定,此模式会为每个容器分配一个独立的networknamespace

208. *如何查看nginx的连接满了?*

netstat-n|awk’/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}’

SYN_RECV//一个连接请求已经到达,等待确认,ESTABLISHED//正常数据传输状态/当前并发连接数

FIN_WAIT2//另一边已同意释放,ITMED_WAIT//等待所有分组死掉

CLOSING//两边同时尝试关闭,TIME_WAIT//另一边已初始化一个释放,LAST_ACK//等待所有分组死掉

或:通过界面查看通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上–with-http_stub_status_module,然后配置Nginx.conf,在server里面加入如下内容:

location/Nginxstatus{

stub_statuson;

access_log/usr/local/nginx/logs/status.log;

auth_basic"NginxStatus";

}

配置完后重新加载Nginx后我们可以通过浏览器访问http://10.0.0.1/Nginxstatus查看:Nginx加载命令

209. *面试总结*

1802卢康正:

>>有什么才艺吗,会唱歌吗,跳舞之类的。 视个人情况而定

>>说一下jenkins的工作流程

开发(git)–>git主库–>jenkins(git+jdk(环境)+tomcat+maven打包+测试)–>发布到tomcat服务器

张武松学长分享的工作环境下的jenkins流程

ftp://10.18.45.13/%E6%AD%A6%E6%9D%BE%E5%85%AC%E5%8F%B8jenkins.pptx

上家公司有多少台服务器,几个运维。

王振给答案, 会python吗? 了解一些python

210. *了解docker和别的虚拟化技术的区别吗?*

1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;

2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;

3)方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;

4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;

5)方便持续集成,通过与代码进行关联使持续集成非常方便;

6)可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

7)应用隔离

211. *个人兴趣爱好是什么?*

212. *说一下数据库的几个缓存服务器*

Redis memcached 你对未来有什么规划,三到五年 nginx的工作原理:

nginx作为web服务器:

nginx是基于http协议实现的web服务器,通过epoll技术实现I/O口多路复用,采用异步非阻塞实现高并发请求,高度的模块化设计。 异步非阻塞:1个master进程,2个work进程

​ 每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。此时,如果再有request进来,他就可以很快再按这种方式处理。

nginx作为代理服务器:

代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

作为内容服务器的负载均衡器:

当客户机向站点提出请求时,请求将转到负载均衡服务器。然后,负载均衡服务器通过防火墙中的特定通路,将客户机的请求按照一定的规则发送到后端内容服务器。后端内容服务器再通过该通道将结果回传给负载均衡器。负载均衡器服务器将检索到的信息发送给客户机,好像负载均衡服务器就是实际的内容服务器

1802毕京钊:

213. *zabbix界面出现字符乱码如何处理?*

linux直接更改字体 windows

解决方案:Win+R打开运行,输入fonts,回车进入Windows字体目录,找到微软雅黑-常规字体,复制出来将文件名修改为msyh.ttf,注意后缀ttf,将msyh.ttf上传到服务器zabbix字体目录中:/usr/share/zabbix/fonts/

,查看字体配置#grepFONT_NAME/usr/share/zabbix/include/defines.inc.php-n,执行快捷替换:

sed-i"s/graphfont/msyh/g"/usr/share/zabbix/include/defines.inc.php

确认是否替换成功:grepFONT_NAME/usr/share/zabbix/include/defines.inc.php-n

45:define(‘ZBX_GRAPH_FONT_NAME’,‘msyh’);//fontfilename 93:define(‘ZBX_FONT_NAME’,‘msyh’);

字体配置修改成功后,刷新图形界面即可看到图形字体显示正常了。

214. *grep同时过滤两个条件?*

cat文件名|grep’条件一’|grep’条件二’

ansible原理 模块 平时怎么用的

ansible的工作原理:ansible在管理节点将ansible模块通过ssh协议推送到被管理端执行,执行完后自动删除,可以使用svn等来管理自定义模块及编排

常用模块

shell远程执行命令 user创建或删除用户 yum软件安装模块

service服务启动或管理模块 写剧本或者直接执行 剧本

-hosts:all tasks: -name:createuserabc user:name=abcstate=present

直接执行:ansibleall-muser-a’name=qianfengstate=present’ 脚本 写过什么脚本

215. *nginx可以做什么用*

web服务器、代理服务器、负载均衡器、邮件服务器

216. *mysql备份和恢复*

mysql备份方式有物理备份和逻辑备份

物理备份:有tar备份、lvm快照备份、利用percona-xtrabackup软件进行物理备份

逻辑备份示例:mysqldump-u用户名-p’123’-Btest>/mysql_backup/date+%D-mysql.test.sql

备份之后用mysqlbinlog查看:mysqlbinlog/mysql_backup/date+%D-mysql.test

恢复:mysql-u用户名-p’密码’</mysql_backup/date+%D-mysql.test.sql

mysqldump常用选项 #mysqldump-p’密码’\

–databases库名–single-transaction\ --routines–triggers–master-data=2\ --flush-logs\

>目标路径 --master-data=n n的取值范围为0-20表示不记录二进制日志文件以及路径位置

1表示以changemasterto的方式记录位置,可用于恢复启动后直接启动从服务器

2表示以changemasterto的方式记录位置,但是默认为被注释掉

–flush_logs:备份之前自动执行日志刷新到磁盘

–single-transaction启动热备份,启动热备份就无需我们手动锁表

–routines:存储过程,存储函数 --triggers:触发器

217. *nginx负载均衡指定域名访问后端服务器怎么实现?*

将ip换成域名

在负载均衡器上做好域名解析

DNS域名服务器

本地host文件 或:

[root@localhost~]#vim/etc/nginx/nginx.conf

​ location/{

​ root/usr/share/nginx/html;

​ indexindex.htmlindex.htm;

​ if(KaTeX parse error: Can't use function '\.' in math mode at position 14: request_uri~*\̲.̲html){

​ proxy_passhttp://htmlserver;

​ }

​ if(KaTeX parse error: Can't use function '\.' in math mode at position 14: request_uri~*\̲.̲php){

​ proxy_passhttp://phpserver;

​ }

​ }

[root@localhost~]#vim/etc/nginx/conf.d/test.conf

upstreamhtmlserver{

​ server192.168.122.10;

​ server192.168.122.20;

​ }

upstreamphpserver{

​ server192.168.122.30;

​ server192.168.122.40;

​ }

218. *mysql主从延迟的各种原因*

1、从库太多导致复制延迟 优化:建议从库数量3-5个为宜

2、从库的硬件比主库差 优化:提升硬件性能

3、慢SQL语句过多 优化:SQL语句执行时间太长,需要优化SQL,包括建立索引或者采用分库分表等。

4、主从复制的设计问题

优化:主从复制单线程,可以通过多线程IO方案解决;另外mysql5.6.3支持多线程的IO复制。

5、主从之间的网络延迟 优化:尽量采用短的链路,提升端口的带宽

6、主库读写压力大 优化:前端加buffer和缓存。主从延迟不同步

219. *判断主从延迟的方法?*

通过showslavestatus进行查看,比如可以看看Seconds_Behind_Master参数的值来判断,是否有发生主从延时。

NULL-表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.

0-该值为零,是我们极为渴望看到的情况,表示主从复制状态正常

220. *zabbix自定义的key值做过哪些?*

服务器服务状态 磁盘I/O情况 服务器网络接口进出流量

服务器cpu状态等 自定义KEY的方法 zaxbix客户端

[root@hh22~]#mysqladmin-uroot-p’WZ123’status|grep’Opens’|awk-F:’{print$5}’

mysqladmin:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.

0Opens

vim/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql.questions,mysqladmin-uuser-p’密码’status|grep’Opens’|awk-F:’{print$5}’

zabbix服务器

zabbix_agentd-tmysql.questions

1802穆鹏飞:天驰传媒

221. *什么是磁盘碎片*

其实磁盘碎片应该称为文件碎片.磁盘碎片指的是硬盘读写过程中产生的不连续文件.

硬盘上非连续写入的档案会产生磁盘碎片,磁盘碎片会加长硬盘的寻道时间,影响系统效能.比如虚拟内存使用了硬盘,硬盘上便会产生磁盘碎片.

222. *什么是内存碎片*

内存碎片分为:内部碎片和外部碎片。

内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;

外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

223. *目录下有ab两个文件,ls-a显示的是什么写出来*

…ab

224. *介绍一下lvs具体在每一层都怎么实现的?*

​ lvs集群里:

​ LVS是(LinuxVirtualServer)的简写,意即Linux虚拟服务器.是国人章文嵩发起的一个开源项目,是一个虚拟的服务器集群系统.可以做四层的负载均衡.早期使用lvs需要修改内核才能使用。但是由于性能优异,现在已经被收入内核。

​ 一般来说,LVS集群采用三层结构,其主要组成部分为:

​ A、负载调度器(loadbalancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

​ B、服务器池(serverpool)是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

​ C、共享存储(sharedstorage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

​ 调度器是服务器集群系统的唯一入口点(SingleEntryPoint),它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合

​ 负载均衡层:处于整个集群的最前端,由一台或者多台调度器构成,LVS模块部署在调度器上,调度器根据既定的算法来实现将网络请求调度到不同后端服务器,完成对应的功能。

服务器集群层:由一组实际运行着应用服务的服务器构成,后端服务器支持的服务包括,web服务,邮件服务,FTP服务,DNS服务等一个或者多个,每个服务器之间可以通过LAN或者更大范围的WAN相连,在实际的应用场景中,调取服务器也可以作为应用服务器提供服务。

共享数据层:向服务器集群中的所有realserver提供共享存储空间和内容一致性的存储区域。一般是由磁盘阵列组成,提供数据的一致性。也可以由NFS提供。目前来说磁盘阵列更为适合,NFS受网络影响较大,不太稳定。

225. *777是什么?*

一个文件有三个权限,分别是读、写和执行,它们对应的数分别是4、2和1。而一个文件面对的用户分三类:所属用户、所属组其他用户和组。

所以777三个数字就是对应这三个用户对象全部都有读、写、执行权限.

226. *777在文件中是怎么显示的?*

​ -rwxrwxrwx

227. *rwx前面那些—是干什么的?*

​ 占位符表示没有权限

228. *是怎么描述一个文件的?*

###文件类型还是路径,看不懂

229. *swap分区是做什么的?*

如果linux系统物理内存不够用了,系统会用swap分区来模拟内存。系统会把物理内存里的访问频率低的内存对象移动到swap里,再在物理内存里产生新的连接指向swap里的那个对象;

230. *我的带宽是固定的,怎么提升用户的访问速度*

1使用CDN网络加速 2服务器开启gzip压缩 3网站实现纯静态

4设置缓存 5减少重定向 6代码优化

231. *简单介绍一下linux的文件系统*

Linux操作系统支持很多不同的文件系统,比如ext2、ext3、ext4,XFS、FAT等等

linux以文件的形式对计算机中的数据和硬件资源进行管理,也就是彻底的一切皆文件,反映在Linux的文件类型上就是:普通文件、目录文件、链接文件、管道文件、套接字文件、设备文件等

EXT家族支持度最广:

但创建文件系统(格式化)慢! 但修复慢! 但文件系统存储容量有限!

xfs同样是一种日志式文件系統: 高容量,支持大存储

高性能,创建/修复文件系统快

inode与block都是系統需要用到時,才动态配置产生

232. *写个12加7的脚本,12和7是进行传参的*

echo$[$1+$2]

1802孙枭彬:百途面试题

233. *如何查看8080端口被哪个进程占用*

ss-anptu|grep8080

netstat-anptu|grep8080

lsof-i:8080

234. *ftp mysql http rsynct ftp tomcat的端口号*

21 3306 80 873 69 8080

235. *如何将本地80端口的请求转发到8080端口,当前主机ip为192.168.1.1*

Iptables -t nat -A PREROUTING -d 192.168.1.1 -p tcp --d port 80 -j DNAT --to 192.168.1.1:8080

236. *用一条命令创建/tmp/bt.txt并把helloworld写入bt.txt里*

echo’'helloworld">/tmp/bt.txt

237. *凌晨1:59删除/bt目录下的全部子目录和子文件用crontab计划任务写*

591**rm-rf/bt/

238. *简述一下linux系统性能优化?*

系统级别的调优考虑的是怎么让应用程序在我们系统上运行的更合理规范,或者说在硬件不变动的情况下,对系统优化提高性能和效率。使用topvmstatiostatmpstat等命令查看系统状态,找到系统瓶颈,进行相应的调整优化。

239. *简述一下你知道的监控软件(有关键内容即可)*

zabbix监控软件

Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

zabbix分为主动模式和被动模式

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动:server向agent请求获取监控项的数据,agent返回数据。

240. *简述一下你知道的负载均衡(有关键内容即可)*

​ 常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。

​ lvs做四层负载均衡。有nat模式和dr模式。

nginx做七层负载均衡。nginx负载均衡配置,主要是proxy_pass,upstream的使用。

241. *用一条命令检测nginx语法平滑启动命令*

nginx-t-c/etc/nginx/nginx.conf&&kill-HUPnginx主进程号

242. *简述mysql主从复制原理*

mysql主从复制原理:从库有两个线程IO线程和SQL线程

1.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

2.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息,偏移量和binlog文件名等发送给从库

3.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

4.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

5.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

6.从库如果也要做主库,也要打开log_bin和log-slave-update参数

243. *11.用脚本写出172.10.13.0/24网段里能ping通的ip*

foriin{1…254}; do; ip=10.18.45. i ; p i n g − c 1 − W 1 i; ping-c1-W1 i;pingc1W1ip&>/dev/null; if[ ? − e q 0 ] ; t h e n ; e c h o ?-eq0]; then; echo ?eq0];then;echoip; fi; done

244. *12.你熟悉的服务器压测工具有哪些?*

四款Web服务器压力测试工具http_load、webbench、ab、siege

##ab是apache自带的一款功能强大的测试工具 数据库测试工具mysqlslapbenchmark

*面试总结*

245. *关于一些面试的技术要点,强调一下大家一定要有准备:*

1、LVS:模式、原理、区别

2、Haproxy:代理的特点(四层、七层)、而且往往会用在穿墙方面、最好会使用它代理SSL

3、NGINX:upstream转发最为基础、httperror_code常见的要记住(404/403/500/502/503/301/302)、nginxconnectfull如何发现与解决、会添加proxy_header、会添加LogFormat、会使用limit、能看懂logFile、会使用nginxSSL(如果会调整SSL参数为加分项,如SSL/TLS版本、超时、密钥长度等)(limit_rate/ip为加分项)

4、tomcat:维护、调优、基本排错(tomcat无法启动的处理)

5、JAVA:区分并安装JDK与JRE、JCE、MAVEN,会使用jstack、会配置并使用Jenkins、理解-Xmx-Xms、了解gc.log、能看懂java_applog为加分项;

6、php:安装php环境、php-mysql、php-redis及各种模块(源码)、会调整php.ini文件中的基本参数、php的工作模式及基本排错(如动态情况下使用哪种模式?初始线程设置多少?部分用户连接错误如何处理?)

7、python环境:virtualenv+supervisord部署python应用

8、mysql:备份、恢复(多大的数据大致需要备份多久、备份时添加哪些参数及会有哪些影响?replication:复制遇到错误如何解决,如何保证复制安全性?如何保证复制可靠性?最好会使用SSL复制;mysqllog的格式及区别;GTID的优点;最新版本的新特性;加分项mycat、mysql-proxy、mysql-cluster、MHA

9、mongodb:备份恢复、RS(复制集创建)、配置参数调整、cluster(sharding)

10、redis:dump、RS、维护、持久化策略及区别、分配最大内存、过期策略及其区别、redis-cluster

11、Elasticsearch:创建库及索引、插入、查询数据、ES-cluster的创建及常见故障

12、Zabbix:TemplateosLinux模板中的每一项都要了解、熟练并灵活编写action中的各种condation、知道mysql需要监控哪些项、Java_app需要监控哪些项、nginx需要监控哪些项、log需要监控哪些项;有二次开发经验优先

13、shell属于最基础技能(不管熟悉不熟悉,面试一定要说非常熟悉或精通)

14、网络技术(tcp网络协议)及公有云使用经验为加分项

1.微信—工作群聊天记录不要清理,任务派发和问题解决都在里边

2.自我介绍

简历的浓缩版,轻松的,3分钟左右,400~500左右。

自己的个人信息,最近的一份工作的工作经历。

兴趣爱好正向积极向上。

通过这几年的工作对那些特别熟悉,

3.LVS模式原理区别----->公司并不一定用,但是是最基础的,只有懂这个,才会其他的

NLB---->nginxHaproxy同样可以 模式NAT DRTUNFULL-NAT

原理: 其他的ALB(A是application)、ELB(AWS的EC2)、

4.Haproxy

haproxy代理

(mysql主从不复制了stopslavestartslave如果还不行,就是两者之间网不行,用haproxy做代理,)

squid#做正向代理需要知道怎么做。3128默认端口要修改#yum-yinstallsquid 反向代理正向代理

5.Nginx upstream转发 httperror_code常见的要记住(404/403/500/502/503/301/302)

404页面找不到页面丢失 403访问被拒绝 500服务器错误

502超时—有可能是proxy_timeout时间过短,客户端提供了一个大查询query,时间太长

503请求过多,nginx不向后端转发了,或者是upstream的地址、端口有问题。

出现问题检查cpu、内存负载特别高,如果没有检查配置。

301永久重定向 302临时重定向

nginxconnectfull如何发现和解决

如何发现: 查看错误日志,openfile出现

如何解决: 如果cpu和内存负载超高那就是服务器不够加服务器

不是上边的问题那就修改ulimit-n的参数,即文件打开数的问题 进程的openfile和系统openfile不同

进程的openfile是先psaux参看进程pid然后查看/proc/pid/fd数目是不是和预期一致

nginx的log太大,删除以后结果发现空间还没有释放,需要重启服务

logrotate定义的日志的用户和组不是nginx,结果nginx不能释放空间,

cron计划任务anacron的时间戳的问题。 两者结合来解决这个问题。

haproxyhead问题

后端的real-searve怎么记录x-forward-real-iplogformat里要记录这个字段。

会使用limit能看懂logfile和写allow和denylimit-rate模块限制频率

errorlog里出现这样的字段Noupstreamlivenginx转发给后端是发现后端的服务器都特别忙,就会报这样的字段的,就不会转发给后端服务器,客户端回报timeout

需要用shell脚本来最近5分钟有多少条记录出现这个字段,超过某个数目就报警。

会使用nginxssl(如果会调整参数会成为加分项,如SSl/TLS的版本,)ssl_

6.tomcat:维护、调优、基本排错()

调优:如下

http://blog.chopmoon.com/favorites/231.html

首先,打开${TOMCAT_HOME}/conf/server.xml,搜索【<Executorname=“tomcatThreadPool”】,开启并调整为

7.JAVA

JAVA:区分并安装JDK与JRE、JCE、MAVEN,会使用jstack、会配置并使用Jenkins、理解-Xmx-Xms、了解gc.log、能看懂java_applog为加分项;

-xms-xmxMEVEN(各种的lib库)gclog(gc即加密库)了解gclog能看懂java_applog.

会配置并使用jenkins

如果gclog里面有fullgc字段那么5分钟可定会爆oom(内存溢出),但是gclog没有时间戳,里边的时间戳是自系统启动以来的时间(可能是秒或者分钟),一分钟如果超过一条就要写脚本自动重启服务。

jstack的作用是把Java的堆内存和栈内存dump到某文件,然后交给OP处理。

8.php:安装php环境、php-mysql、php-redis及各种模块(源码)、会调整php.ini文件中的基本参php数、php的工作模式及基本排错(如动态情况下使用哪种模式?初始线程设置多少?部分用户连接错误如何处理?)

会安装php-mysql.so PHP的工作模式。也可以说是fastcgi的工作模式:static(静态)、dynamic(动态)、ondemard()。

9.python环境:virtualenv+supervisord部署python应用

用虚拟环境virtalenv进程管理器supervisord<----指定python的版本和py文件位置。

10.mysql:备份、恢复(多大的数据大致需要备份多久、备份时添加哪些参数及会有哪些影响?replication:复制遇到错误如何解决,如何保证复制安全性?如何保证复制可靠性?最好会使用SSL复制;mysqllog的格式及区别;GTID的优点;最新版本的新特性;加分项mycat、mysql-proxy、mysql-cluster、MHA

了解那些操作会锁表,那些默认锁表,操作完记得退出。

一台一台上线,上线完,用saltstack检测文件的MD5值,上线要有灰度,如果一块批量操作,那么在上线的过程中,所有的流量都进不来,如果代码出问题就GG,只能回滚了

备份的过程加了什么参数,多久(gzip)

例如8个G的文件不gzip备份出来78个G,用是2030分钟,加gzip,备份出来700~800M,用时没有半个小时不行。

复制的可靠性:做代理,穿越墙的。

mysql_log的格式。默认的格式:记录原始的sql语句row格式(有些不支持)记录的改变。混合模式两种多记录。

GTID:全局唯一表示,每一个事务都会有一个标识,多线程复制。

复制延迟怎么办:升版本,升到5.7,5.7的gtid支持多线程,同步复制,不像之前版本的异步单线程的复制模式.

复制的时候报error,sql线程报的,skip(先stopslave—skip指向nextgtid-----startslave)

传统模式:

mysql>stopslave; mysql>setglobalsqlslave_skip_counter=1; mysql>startslave;

GTID模式

stopslave; setGTID_NEXT=“uuid_next_id”; uuid会在error里记录,这里是error的+1 slaveslave;

mysql-cluster 专门的一个产品,app—>sql层---->data层<-----m层(管理data节点)

MHA<------研究下,这两年更完善了。 resetmaster–>删除所有的binlog的

resetslaveall—>删除master信息的 UTF8mb4可以支持插入表情符。

11.mongodb:备份恢复、RS(复制集创建)、配置参数调整、cluster(sharding)

redismaster——

slave|---------r/s结构,master宕了需要手动提一个slave上来,哨兵sentinel监控三台机器,负责题一台slave,

slave——sentinel权力比较大,

多个r/s结构,集合起来叫副本集,每个叫一个分片,

12、Elasticsearch:创建库及索引、插入、查询数据、ES-cluster的创建及常见故障

数据库,非关系型数据库,快速搜索

13.Zabbix:TemplateosLinux模板中的每一项都要了解、熟练并灵活编写action中的各种condation、知道mysql需要监控哪些项、Java_app需要监控哪些项、nginx需要监控哪些项、log需要监控哪些项;有二次开发经验优先

mysql需要监控那些项:进程端口复制的状态I/O进程SQL进程myadmin–status回车所有的都要监控。

mysqlstatus:主要监控alive0表示down了则报警 mysqlqps:最近5分钟qps的值大于200000,则报警

mysqlslavequery:最近3分钟的慢查询大于3000,报警 mysqlconnections当前连接数大于500,则报警

对tomcat监控,监控那些东西 进程端口内存

mycat做了读写分离,但是服务器slave突然down了。怎么让读操作自动切换

写配置文件的时候会写好几台机器,程序会自动读取主从关系,有一个连接池,如果一台down了,会自动切换。

不同机房的zabbix监控 在一些机房装zabbix-proxy收集信息给 zabbixmysql灰度升级

装新的版本mysql,做成slave,从老的读取数据,然后新切换成master,老的切换成slave,然后把老的踢掉

监控进程在不在,端口在不在,error某一字段特别多的,单位时间内errorlog的增长时间,内存泄漏(提前重启服务)。

面试中维护几台机器?日志访问量,并发,

架构–公司不断开发新的产品,旧的产品迭代升级,每个产品线都不同的架构,每个小项目几十台机器,架构特别多,

公司RD是研发工程师。OP是操作员管理员。 运维平台用python写

246. *1703张武松面试总结*

老闫公司工作情况-别人问你需求你要问场景-给各种银行做软件的–系统工程师-开始什么都不让干看业务级的文档

接电话处理内部工单(事件单)查数据库写质检单告诉他们原因

其他部门系统会负责去数据库取数据awk格式化输出复制粘贴或弄成excel发给人家

问题:victrl+z了搞不清楚是哪个了把导入的数据弄丢了

日常工作:检查日志–用ftp交互文件

早班4点半到公司跟同事沟通看监控监控自己的还要监控别人的交易的成功率等

公司工作情况:公司名称:新晨科技股份有限公司-地址:北京市海淀区蓝靛厂东路2号金源商务中心B座8层

给各大银行开发交易系统平台,并且维护–主要语言是C也有Java–系统运维工程师

单位:邮政储蓄银行全国数据中心—地址:北京市丰台区丰台路口72号院—原来是邮政的一个职业培训学校

运维人员在一个含有5层的楼内办公,里面最少有几十家公司的外派人员

这公司都属于外包公司,人员归属还是属于本公司,工资发放为本公司,但是这些钱的来源

是甲方(这里就是邮政储蓄银行)提供的,甲方现提供给自己的公司,自己的公司会扣除一部分,把剩余给你,一般你本人会在甲方公司有一个岗位级别评级。

同城异地灾备:亦庄–异地灾备:合肥市

机器大部分都是IBM的小型机,系统大部分是Unix。也有一些红旗的linux系统,但都是跑的不重要的应用,比如作为日志数据的备份

小白的小事故:

场景:我们的部门负责的系统经常会和其他公司负责的系统去交互,当然避免不了要和其他公司的运维人员打交道。

故事就这样开始了,小白收到小组组长的指示,需要根据其他公司运维人员提供的一个文件的内容条件,去我们系统的数据库中取数据。

小白用vi打开这个文件,看完一部分后,执行了ctrl+z。他以为把这个文件关闭了。

之后他再次用vi打开这个文件查看剩余的内容。结果就出现的满屏的英文,他一下就蒙了。

胡乱操作一通,导致源文件被删除

日常工作:用浏览器登陆堡垒机系统–在堡垒系统中选择相应的服务器进行登陆

根据事件单中描述的问题就,检查日志,找出出现问题的原因;

​ 假如入是本身程序的问题,记录情况,并以邮件或者QQ群的沟通途径向相关的开发–人员沟通。

假如是由于其他公司负责运维的系统的原因,向小组组长报告,由小组组长和其他公司的相关运维人员沟通,如果沟通中出现了无法处理的问题,由小组组长找负责本系统的甲方人员反映。

假如是由于银行的柜员操作或者权限问题,就告知提交事件的人员。一般是回复事件单即可。或者打事件单中的电话

​ 用ftp交互文件:

运维人员使用的终端机器都是安装了windows系统的一般PC机。假如要登陆堡垒机,必须有一个设备,这个设备和一般的U盘一样,大小和一般的U盘一样大,里面有负责安全系统的人员给你授权的信息,这个人员是邮储银行的人员负责。有帐号和密码的认证和服务器交换数据可以使用ftp,这个是嵌入到堡垒机中的一个ftp客户的程序

上班时间:分两班倒,白班和晚班–白班时间:上午8:30—11:30,下午14:00—17:30

247. *白班和晚班人员的日常工作:*

\1. 早会,先和值晚班人员沟通一下,看看昨晚系统运行是否正常,有什么报警。 2.之后看看当天有没有需要处理的事情,比如说开发人员取生产环境的数据,其他系统要的数据,下面银行网点要的数据。

3.之后就是各自回到自己的岗位,做自己的事情。有的看监控,有的处理报警事件,有的处理事件单(每个人都为有自己的事件单帐号),等等,电话是谁有空谁接,电话一般都是网点的柜员打过来的,一般的问题是在做交易的时候失败,原因大部分都是权限问题和柜员业务不熟悉导致的做错交易。

晚班时间:下午17:00之前到,一直到第二天的早上的8:30

晚班人员的日常工作:这些工作都是开发人员写好的脚本,制定了计划任务的。

1.看监控,及时处理报警信息

处理报警信息是要查出具体原因,并解决导致报警的问题,之后把原因和处理结果发的一个专门的QQ工作群里,这个群里有负责本系统的全部运维人员和甲方的领导。

2.检查日终事件的处理结果,看是否都成功了。

日终事件:其他系统提供给我们的数据文件的处理结果一般是柜员和网点权限的更新文件,假如不能正确处理存库,会导致第二天全国网点的柜员不能正常最交易,属于重大事故。对公司在甲方的声誉受到严重影响。处理办法是手动执行相关脚本,或者手动执行存储过程。

用的都是oracle数据库

3.有的时候会接到其他系统运维人员打过来的电话,因为我们自己的系统也需要给其他系统发送文件,假如发送失败,也需要手动执行脚本重新发送。

公司面试题

248. *一、选择题(单选或多选)*

1.以下哪些方式/命令不可以查看IP是否可达?(D)

A.telnet B.ping C.tracert D.top

2.将文件file1复制为file2可以用下面哪些命令(ABCDE)

A.cpfile1file2 B.catfile1>file2 C.catfile2 D.ddif=file1of=file2 E.catfile1|cat>file2

3.Linux下查看磁盘使用情况的命令是?(B)

A.dd B.df C.top D.netstat

4.Linux下查看服务程序占用的端口命令是什么?(BCD)

A.ps-aux B.netstat-apn C.watch D.lsof

5.linux查看系统活跃进程的命令是?(AB)

A.ps B.netstat C.df D.ifconfig

7.在Linux系统中,用来存放系统所需要的配置文件和子目录是(A)

A./etc B./var C./root D./hoom

249. *二、简答题*

1、mysql主从复制原理说一下?

从库有两个线程IO线程和SQL线程

a.从库的IO线程向主库的主进程发送请求,主库验证从库,交给主库IO线程负责数据传输;

b.主库IO线程对比从库发送过来的master.info里的信息,将binlog文件信息偏移量和binlog文件名等发送给从库

c.从库接收到信息后,将binlog信息保存到relay-bin中,同时更新master.info的偏移量和binlog文件名

d.从库的SQL线程不断的读取relay-bin的信息,同时将读到的偏移量和文件名写道relay-log.info文件,binlog信息写进自己的数据库,一次同步操作完成。

e.完成上次同步后,从库IO线程不断的向主库IO线程要binlog信息

f.从库如果也要做主库,也要打开log_bin和log-slave-update参数

最佳答案:

2.从库的I/O线程去请求主库的binlog,并将得到的binlog,主库会生成一个logdump线程,用来给从库i/O线程传binlog;

3.I/O读取主库发来的binlog日志,把他写道relaylog(中继日志),SQL线程,会读取relaylog文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致

250. *2、怎么查看两台服务器之间的网络是不是正常的,服务器是禁ping的?*

可以使用ssh远程登陆两台服务器。

251. *3、比如我访问百度网站,有什么方法可以跟踪经过了哪些网络节点?*

traceroute-s本机ipbaidu.com

252. *4、在linux系统中,一般都会有swap内存,你觉得使用swap内存有什么好处,swap内存才会被使用?你觉得在生产环境中要不要用swap内存?*

swap的好处是防止内存溢出 当内存不够时会使用 生产环境中是需要使用swap内存的

253. *5、服务器需要监控哪些项目?凭借这些项目如何判断服务器的瓶颈?*

•CPU(Load)CPU使用率/负载 •Memory内存 •Disk磁盘空间 •DiskI/O磁盘I/O

•NetworkI/O网络I/O •ConnectNum连接数 •FileHandleNum文件句柄数 当服务器的监控项目报警时就达到瓶颈

254. *6、简述一下lvs和Nginx的优缺点*

*一、Nginx优点:*

1、工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。

2、Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。

3、Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。

4、可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。

5、Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。

6、不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性也很好。

7、可作为中层反向代理使用。 8、可作为静态网页和图片服务器。

9、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。

*Nginx缺点:*

1、适应范围较小,仅能支持http、https、Email协议。

2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。

*二、LVS优点:*

1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。

2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。

3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。

4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。

5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。

*LVS的缺点:*

1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。

2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。

255. *7、nginx有哪几种调度算法,解释一下ip_hash和轮询有啥不一样*

1.rr:轮询算法(依次将用户的访问请求,平均的分配到后端的web集群中每个节点,此种算法不会考虑每个节点的性能,所以比较适用于所有节点的性能一致的情况)

wrr:权重算法(根据设定的权重值,权重值越大,被配到的请求次数也就越多,有效的解决了rr算法的缺点)

2.ip_hash算法(根据用户访问的真实ip生成一个hash表,此后,同一个ip地址的访问请求都将会分配到这个节点上,可以解决session会话共享的问题)

3.url_hash(根据用户访问的url的hash结果,使每个url定向到同一个后端服务器上)

4.fair(更加智能的负载均衡算法,可以根据页面大小的和加载时间长短智能的进行负载均衡)

解释一下ip_hash和轮询有啥不一样

ip_hash: 根据每个请求IP进行调度,可以解决session的问题,不能使用weight

轮询(默认): 可以通过weight指定轮询的权重,权重越大,被调度的次数越多

256. *8、centos6.X版本系统和centos7.X版本有啥区别?*

(1)桌面系统

[CentOS6]GNOME2.x [CentOS7]GNOME3.x(GNOMEShell)

(3)内核版本

[CentOS6]2.6.x-x [CentOS7]3.10.x-x

(4)启动加载器

[CentOS6]GRUBLegacy(+efibootmgr) [CentOS7]GRUB2

(5)防火墙

[CentOS6]iptables [CentOS7]firewalld

(6)默认数据库

[CentOS6]MySQL [CentOS7]MariaDB

(7)文件结构

[CentOS6]/bin,/sbin,/lib,and/lib64在/下 [CentOS7]/bin,/sbin,/lib,and/lib64移到/usr下

(8)主机名

[CentOS6]/etc/sysconfig/network [CentOS7]/etc/hostname

(9)时间同步

CentOS6桌面系统

[CentOS6]GNOME2.x [CentOS7]GNOME3.x(GNOMEShell)

(2)文件系统

[CentOS6]ext4 [CentOS7]xfs

(3)内核版本

[CentOS6]2.6.x-x [CentOS7]3.10.x-x

(4)启动加载器

[CentOS6]GRUBLegacy(+efibootmgr) [CentOS7]GRUB2

(5)防火墙

[CentOS6]iptables [CentOS7]firewalld

(6)默认数据库

[CentOS6]MySQL [CentOS7]MariaDB

(7)文件结构

[CentOS6]/bin,/sbin,/lib,and/lib64在/下 [CentOS7]/bin,/sbin,/lib,and/lib64移到/usr下

(8)主机名

[CentOS6]/etc/sysconfig/network [CentOS7]/etc/hostna $ntp $ntpq-p

[CentOS7] $chrony $chronycsources

(10)修改时间

[CentOS6] $vim/etc/sysconfig/clock ZONE=“Asia/Tokyo” UTC=fales

$sudoln-s/usr/share/zoneinfo/Asia/Tokyo/etc/localtime

[CentOS7] $timedatectlset-timezoneAsia/Tokyo $timedatectlstatus

(11)修改地区

[CentOS6] $vim/etc/sysconfig/i18n LANG=“ja_JP.utf8” $/etc/sysconfig/i18n $locale

[CentOS7] $localectlset-localeLANG=ja_JP.utf8 $localectlstatus

(12)服务相关

1)启动停止

[CentOS6] $serviceservice_namestart $serviceservice_namestop $servicesshdrestart/status/reload

[CentOS7] $systemctlstartservice_name $systemctlstopservice_name $systemctlrestart/status/reloadsshd

自启动

[CentOS6] $chkconfigservice_nameon/off

[CentOS7] $systemctlenableservice_name $systemctldisableservice_name

服务一览

[CentOS6] $chkconfig–list

[CentOS7] $systemctllist-unit-files $systemctl–typeservice

强制停止

[CentOS6] $kill-9

[CentOS7] $systemctlkill–signal=9sshd

(13)网络

1)网络信息

[CentOS6]

$netstat $netstat-I $netstat-n

[CentOS7]

$ipn $ip-sl $ss

2)IP地址MAC地址

[CentOS6] [CentOS7]

$ifconfig-a $ipaddressshow

3)路由

[CentOS6] $route-n $route-Ainet6-n [CentOS7] $iprouteshow $ip-6routeshow

(14)重启关闭

1)关闭

[CentOS6] $shutdown-hnow [CentOS7] $poweroff $systemctlpoweroff

2)重启

[CentOS6] $reboot $shutdown-rnow [CentOS7] $reboot $systemctlreboot

3)单用户模式

[CentOS6] $initS [CentOS7] $systemctlrescue

4)启动模式

[CentOS6] [GUICUI] $vim/etc/inittab id:3:initdefault: [CUIGUI] $startx

[CentOS7] [GUICUI] $systemctlisolatemulti-user.target [CUIGUI] $systemctlisolategraphical.target

默认 $systemctlset-defaultgraphical.target $systemctlset-defaultmulti-user.target

当前 $systemctlget-default

三、代码题

257. *写一个脚本将某目录下大于100K的文件移动至/tmp下*

foriinfind/test-typef-size+100k;docd/test&&mv$i/tmp;done

258. *写一个脚本查找最后创建时间是3天前,后缀是*.log的文件并删除*

find/-name"*.log"-ctime+3-execrm-f{};

259. *写一个防火墙配置脚本,只允许远程主机访问本机的80端口*

#vimiptables.sh

iptables-tfilter-IINPUT-ptcp!–dport80-jDROP

中盾面试题1802

260. *常见协议(http、https、ftp、mysql、redis)默认端口号。*

80 443 21 3306 63 79

261. *根据服务器硬件配置,安装Linux操作系统时如何分区?*

(硬件配置1:硬盘2T,内存32G)、(硬件配置2:硬盘6T,内存128G)

fdisk: swap分区根分区boot分区 8到16G剩下的给根 10G或20G

gdisk: 超过2T必须使用gdisk swap分区根分区boot分区 32G到64G

262. *3.Linux6.X如何修改ftp用户目录路径,以及修改时应当注意的事项?*

单独修改某一个账户的配置?

user_config_dir=/etc/vsftpd/userconf #vim/etc/vsftpd/userconf/zhanghu local_root=/zhanghu

/etc/passwd权限问题属主属组

263. *4.Linux系统统计服务器服务连接数命令?*

netstat-n|awk’/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'或是netstat-nat|grepESTABLISHED|wc-l

264. *5.虚拟化平台中使用模板克隆方式,复制一台Linux6.X操作系统的虚拟主机,克隆后虚拟主机网络无法联通,如何修改配置解决?*

a、编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,将HWADDR和MAC地址这两行删除。

b、修改文件/etc/udev/rules.d/70-persistent-net.rules,删除之前eth0所在的行,将下一行eth1修改为eth0

c、reboot

6.简述raid0raid1raid5三种工作模式的特点。

265. *7.Http的错误代码含义(404410504502)?*

404没有访问页面

410请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址

504网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器收到响应

502网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应

266. *9.请使用awk sed grep三个命令,列举写出命令语句。*

grep‘root’/etc/passwd

sed-ri‘/SELINUX=/cSELINUX=disabled’/etc/selinux/conf

cat/etc/passwd|awk‘NR==1{print$1}’

267. *10.Mysql创建数据库的命令,创建表的命令,插入语句的命令?*

createdatabase库名createtable表名(类型)insertinto

268. *11.描述Lvs、nginx负载均衡的五种调度读算法。*

7层:rrwrrip_hashfairurl_hash

lvs:rrwrr最少链接加权最少链接最少队列调度

269. *12.Linux中的服务自启动添加方法有哪些?*

7systemctlenable服务名把启动命令写到fstab或/etc/rc.local

6chkconfig服务名on/etc/rc.d/rc.local

270. *14.简述二层交换机和三层交换机的区别。*

二层交换机工作在数据链路层;三层交换机工作在网络层,同时具备二层交换机的功能;二层交换机基于端口转发数据;三层交换机可以基于IP地址转发数据包;二层交换机只有一个管理IP;三层交换机每个端口都可以配IP地址;二层交换机不同Vlan之间通信需要借助第三层的设备;三层交换机不同Vlan之间通信不需要借助设备

271. *15.centos7默认防火墙允许80端口外网访问,写出相应安全策略。*

firewall-cmd–zone=public–add-port=80/tcp–permanent

命令含义:–zone#作用域 --add-port=80/tcp#添加端口,格式为:端口/通讯协议 --permanent#永久生效,没有此参数,重启后失效

272. *16.使用tcpdump监听TCP80端口来自192.168.0.1的所有流量,请写出命令。*

tcpdump-nntcpport80andsrc192.168.0.1

273. *17.Tomcat调整JVM内存的大小需要修改哪些配置文件。*

在tomcat\bin\catalina.sh文件中,

JAVA_OPTS=-Xms1024m-Xmx1024m-XX:PermSize=256M-XX:MaxNewSize=512mXX:MaxPermSize=256m

274. *18.apache如何修改配置参数,将默认端口改为非默认端口。*

/etc/httpd/conf/httpd.conf主配置文件中的Listen后的就是端口号rpm-qchttpd查看配置文件

275. *19.网络地址:172.16.22.28/27,请写出此地址的子网中有多少台主机及可用主机数数量?*

2^5=32可用-2=30

276. *20.Linux运维工程师都需要具备哪些技能和职业品质?*

答:技能:(1)足够专业的知识面储备

(2)凭熟悉程度+相关文档结合配置服务,以便提高工作效率又防止漏配

品质:(1)学会去积累,网络、系统、数据库领域知识多如牛毛,以便于跟不同人士进行交流

(2)对排错过程,问题以及解决方法做好笔记,等下个问题来了的时候,能记着最好,记不着就来查看笔记,以最快速度去解决问题,而把时间精力拿来研究下一个问题

(3)谨慎,有可能误操作让公司损失惨重,个人信心受到影响

(4)责任心,主人翁意识,这片区域归我管!

这家公司应该是隶属于公安部的事业单位,据他介绍全国各地有几个自己的数据中心,

进出都要经过武警的排查,还要访客卡,给人的感觉并不好,公司环境一半,像是80年代的风格。先是到一个很小的办公室进行了笔试,答题纸都找不到了,可能先接待我的是实习生。笔试完之后,终于看到了重量级的人物,先是问了上家公司的架构,仔细询问了工作的具体内容,然后问了离职的原因,技术方面问的不多,他们这里主要是数据库,mysql和oracle他觉得我的sql语句是比较基础的,接下来就是围绕着笔试题问,难度不打,跟我说大概下周的周四周五进行下一次的面试,说明了公司的工作性质,可能是7x24小时的工作制度,但是个人信息方面差的比较严,今天要走了身份证号,说要查一下有没有什么不良的记录,发了office之后也需要3周到1个月之后才可以入职,要仔细的审查学历,个人信息之类的东西,这个主管主要强调了他们属于公安部门,查的比较严。在我离开之后还打电话问了我的年龄的事情(简历上和身份证不符)。

*亚信面试题MZD*

277. *第一题:数据库*

278. *账单表:acc_bill(字段类型:varchar2)*

279. *————————————————————————————————————————*

280. *账户编号(acct_id)|账单编号(bill_id)|账单状态(bill_sts)|账单月(bill_mon)|*

281. *_____________________________________________________________________________*

282. *账单明细表:acc_bill_dtl(字段类型:varchar2)*

283. *_________________________________________________________________________________*

284. *账单编号(bill_id)|账单科目编(fee_item_id)|账单金额(amount)|税率%(tax_rate)|*

285. *__________________________________________________________________________________*

286. *1、写出sql,账单月是2018.4月的整月账单数据。*

select*fromacc_billwherebill_mon=201804

287. *2、写出sql,账单编号是20010120的账单总金额。*

selectamountfromacc_bill_dtlwherebill_id=20010120

288. *3、写出sql,账单月是2018.4月的税率有几种类型,并按照税率大小倒序排列。*

selectcount(acc_bill_dtl.tax_rate),acc_bill_dtl.tax_ratefromacc_billrightjoinacc_bill_dtlonacc_bill.acct_id=acc_bill_dt.bill_idwhereacc_bill.bill_mon=201804orderbyacc_bill_dtdesc;

289. *第二题:Unix命令*

290. *文件名AccQryFree2016.log,存在目录/root/boss/log下*

<80:21308>12:00:00servicestartquery_value,exitedwithvalue0;

<80:21308>12:00:01select*fromcrm_userwherests=1;exitedwithvalue0;

<80:21308>12:10:01usedb:db_ngboss[srv_zw1]

<80:21309>12:20:00servicestartquery_value,exitedwithvalue0;

<80:21309>12:22:01select*fromcrm_userwherests=1;exitedwithvalue0;

<80:21309>12:23:01usedb:db_ngboss[srv_zw1]

291. *1、统计出文件AccQryFree2016.log中的字符串exitedwithvalue0出现的次数?*

awk’/exitedwithvalue0/{a[i]++}END{printa[i]}'AccQryFree2016.log

292. *2、使用vi编辑器,将该文件中的exitedwithvalue0替换成ECITEDWITHVALUE0;*

:%s/exitedwithvalue0/ECITEDWITHVALUE0/g

293. *3、写出带有exitedwithvalue0的时间列全部输出;*

awk’/exitedwithvalue0/{print$2}’

294. *4、将AccQryFree2016.log这个文件进行压缩;*

tarczfAccQryFree2016.tar.gzAccQryFree2016.log

295. *5、将AccQryFree2016.log这个文件移动到/root/pkgcx/log/下;*

mvAccQryFree2016.log/root/pkgcx/log/

296. *6、配置一个定时任务cron,将该文件在每周五下午6点进行删除;*

018**5/usr/bin/rm-rf/root/pkgcx/log/AccQryFree2016.log

297. *第三题:脚本语言*

298. *1、请使用shell脚本把第一题中账单月是2018.4月的整月账单数据写入文件中。*

mysq-uroot-p’mima’-e"select*fromacc_billwherebill_mon=201804">a.txt

299. *2、请写出一个守护进程脚本,脚本名称是send_sms.sh,请对此脚本编写守护进程脚本。*

#vi/etc/init.d/nginx

#!/bin/bash

#chkconfig:-9920

#description:Oooothisismynginxstartupscript

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

case"$1"in

start)

$PROG

;;

stop)

kill-sQUIT ( c a t (cat (catPIDF)

;;

restart)

$0stop

$0start

;;

reload)

kill-sHUP ( c a t (cat (catPIDF)

;;

*)

echo"Usage:$0{start|stop|restart|reload}"

exit1

esac

exit0

#chmod+x/etc/init.d/nginx

#chkconfig–addnginx

300. *第五题:自我阐述*

301. *请自我阐述一到两项自己的技能或者比较精通的技术;*

302. *北京得意音通技术公司面试题MZD*

一、Linux操作系统知识

303. *1.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?*

centos6:

1.post加电自检 2.MBR引导 3.GRUB引导 4.读取grub.conf文件 5.启动内核 6.加载伪文件系统(ramdisk) 7.启动init进程 8.执行/bin/login

centos7:

1.uefi或BIOS初始化,开始post开机自检 2.加载mbr到内存 3.GRUB阶段 4.加载内核和inintamfs模块

5.内核开始初始化,使用systemd来代替centos6以前的init程序 6.Systemd执行multi-user.target下的getty.target及登录服务 7.systemd执行graphical需要的服务

centos6:忘记密码

a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式 b、选项Kernel…按e键进行编辑

c、在编辑界面rhgbquiet后加空格,然后输入"single"或"1"回车 d、按b启动进入单用户模式

f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭setenforce0)

304. *2.企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)*

/boot200M /swap16G /70G /data剩下的全部空间

方案1:针对网站集群架构中的某个节点服务器分区

该服务器上的数据有多份(其他节点也有)且数据不太重要,建议分区方案如下:

•/boot:200MB •swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可

•/:剩余硬盘空间大小(/usr、/home、/var等分区和"/"公用一个分区,这相当于在windows系统中只有一个C盘,所有数据和文件都放在一起)

方案2:针对数据库及存储角色的服务器分区

该服务器的业务有大量重要的数据,建议分区方案如下:

•/boot:200MB •/:大小设置为50-200GB,只存放系统相关文件,网站等业务数据不放在这里。

•swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可 •/data:剩余硬盘空间大小,放数据库及存储服务等重要数据。当然,data的名称可以换成别的名字

注:本方案就是把重要数据单独分区,便于备份和管理

方案3:针对大网站或门户级别企业的服务器进行分区

此分区方案更灵活,比较适合业务线比较多、需求不确定的大企业使用,建议分区如下:

•/boot:200MB •/:大小设置为50-200GB,只存放系统相关文件,网站等业务数据不放在这里。

•swap:物理内存的1.5倍,当内存大于或等于8GB时,配置为8-16GB即可 •剩余的磁盘空间保留,不再进行分区,将来分配给不同的使用部门,由他们自己根据需求在进行分配

305. *3.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。*

答:首先把系统关机,然后以光盘启动进入救援模式(linuxrescue),执行"fsck.ext3-y/dev/sda2"(假如只读的分区类型为ext3,分区为/dev/sda2)

306. *4.一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?*

远程连接linux的软件:xshell、SecureCRT、putty、vnc(图形化) 上传和下载文件:lrzsz、sftpscp

307. *5./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?*

答:/mnt主要用来挂载外部设备,/root根目录是root用户的家目录,/boot目录是/根目录的子目录

308. *6.某一天误操作,执行了rm-rf*,会有哪些情况发生?请举例。*

答:文件被彻底删除,很难恢复。严重点系统瘫痪,数据全部丢失

二、Linux命令及文件操作

309. *1.在/tmp/目录下创建test.txt文件,内容为:Hello,World!,用一个命令写出来。*

答:echo"Hello,World">/tmp/test.txt

310. *2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。*

答:chmod655test.txt##普通文件默认权限为655

311. *3.用vi命令编辑test.txt,如何跳转到末行,首行、行首、行末,如何在光标行下行插入,如何复制5行,删除10行,查找dear的字符、把dear替换为dear.com*

答:末行:G 首行:gg 行首:^ 行尾:$ 光标下插入一行:o 复制5行:5yy(包括当前行) 删除10行:10dd(包括当前行) 替换::%s/dear/dear.com/g

312. *4.查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。*

答:find/-name"*txt"-mtime+30-typef-size+20k-perm655-execcp{}/data/backup/;

313. *5.当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。*

答:chownabc.roottest.txt##或者chownabctest.txt,chgrproottest.txt

314. *6.每次开机在/tmp目录下创建一个当天的的日期文件夹(提示:当前日期表示的方法为:date+%Y%m%d)*

答:vi/etc/rc.local

mkdir-p/tmp/date+%Y%m%d

chmod777/etc/rc.d/rc.local

315. *7.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。*

答:cat、more、less,

sed’1,3p’test.txt或者head-3test.txt,

最后一行:tail-1test.txt

316. *8.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。*

答:ifconfig, ifconfig|grep"inetaddr:"

317. *9.将普通用户test加入root组的命令是?*

答:usermod-G root test

318. *10.poc-data目录有10个子目录,子目录名为1000~1010,其中各包含不同数量的文件。请编写一段shell脚本计算出各个子目录下的文件数量并打印出来。*

foriin{1000…1010}

do

echo" i 的 文 件 数 量 : i的文件数量: i:(ls-1$i|wc-l)"

done

319. *11.psaux会列出进程的以下属性,请解释每个属性的含义。*

USER PID% CPU% MEM VSZ RSS TTY STAT START TIME COMMAND

ecuac226311.00.03635721900?Ss1Oct10578:27./asrdstart

USER: 运行进程的用户 PID: 进程ID %CPU:CPU占用率 %MEM:内存占用率 VSZ: 占用虚拟内存

RSS: 占用实际内存驻留内存 TTY: 进程运行的终端?是不依赖任何终端 STAT: 进程状态

START: 进程的启动时间 TIME: 进程占用CPU的总时间 COMMAND:进程文件,进程名

320. *12.解释一下符号链接(Symboliclink)和硬链接(Hardlink)的区别。*

硬链接不会创建新的inode,只是给源文件多加了一个文件名 硬链接不能跨分区 硬链接删除源文件后,另一个文件还能用

软链接创建新的inode,相当于重新创建了一个文件 软链接可以跨分区 软链接删除源文件后,链接文件不能再使用

321. *2.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?*

答案: 网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)

要上外网需要:能够链接internet的网线(或无线)、有网卡

​ 需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)

322. *4,请写出568A与568B的线序*

答案(1)568A线序排列:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕。

(2)568B线序排列:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕。

323. *5,网络拓扑设计:*

(1)有一家集团公司,其资金需要在内部建立起一套完成集团内部资金调度的MIS系统。

(2)该系统在结构上有C/S架构的应用模式,又有B/S架构的应用模式。

(3)该系统的管理人员在资金部内部,都在总部大楼一层内,主要使用C/S架构的软件部

分。该系统面对的集团很多下属单位,分布在全国各地,使用浏览器访问总部。

(4)该系统在总部同银行进行连接、实时进行数据交换

如题:请您根据以上事实,对其网络、设备方案进行设计,并绘制出网络拓扑的草图,然后对其进行描述。MIS:主要指的是进行日常事务操作的系统。这种系统主要用于管理需要的记录,并对记录数据进行相关处理,将处理的信息及时反映给管理者的一套网络管理系统。

C/S:指Client/Server(客户端/服务器)架构。

B/C: 指Browser/Server(浏览器/服务器)架构。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YXyDiK3C-1598083266425)(assets/wpszfvcWE.jpg)]

324. *6,PAT和NAT分别代表什么?*

NAT:网络地址翻译在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址,在Internet上使用。其具体的做法是把IP包内的地址域用合法的IP地址来替换

PAT:属于Nat的一种,是把内部地址映射到外部网络的一个IP地址的不同端口上。

325. *7,在路由器中,使用什么命令查看路由器的路由表?*

[root@localhost~]# oute print

326. *8,简述tcp链接三次握手的过程。*

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

327. *9,简述二层交换机和三层交换机的区别。*

二层交换机和三层交换机的区别有以下5点:

1、工作层级不同二层交换机工作在数据链路层,三层交换机工作在网络层,三层交换机不仅实现了数据包的高速转发,还可以根据不同网络状况达到最优网络性能。

2、原理不同二层交换机的原理是当交换机从某个端口收到一个数据包,它会先读取包中的源MAC地址,再去读取包中的目的MAC地址,并在地址表中查找对应的端口,如表中有和目的MAC地址对应的端口,就把数据包直接复制到这个端口上。三层交换机的原理比较简单,就是一次路由多次交换,通俗来说就是第一次进行源到目的的路由,三层交换机会将此数据转到二层,那么下次无论是目的到源还是源到目的都可以进行快速交换。

3、功能不同二层交换机基于MAC地址访问,只做数据的转发,并且不能配置IP地址,而三层交换机将二层交换技术和三层转发功能结合在一起,也就是说三层交换机在二层交换机的基础上增加了路由功能,可配置不同vlan的IP地址,vlan之间可通过三层路由实现不同vlan之间通讯。

4、应用不同二层交换机主要用于网络接入层和汇聚层,而三层交换机主要用于网络核心层,但是也存在少部分三层交换机用于汇聚层的现象。二层交换机用于小型局域网,三层交换机用于大型局域网。

5、支持的协议不同二层交换机支持物理层和数据链路层协议,如以太网交换机,二层交换机和集线器HUB的功能差不多,而三层交换机支持物理层、数据链路层及网络层协议。

328. *11,什么可以实现动态IP地址分配?*

DHCP可以实现动态IP地址分配。

329. *12,问:什么协议,是最为普遍的一种内部协议,一般称为动态路由信息协议?*

​ RIP协议

330. *13,请写出ISO/OSI七层模型各层的名字及功能,并举例在不同层所对应的协议数据在OSI传输的过程OSI参考模型的7层分层结构参考模型中,从下至上,每一层完成不同的目标,请依次列举并写出各层包含的协议。详细说明一下,osi模型从第7层到第1层依次是:*

第7层 应用层:OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理,来完成一些为进行信息交换所必需的功能。它包括:文件传送访问和管理FTAM、虚拟终端VT、事务处理TP、远程数据库访问RDA、制造业报文规范MMS、目录服务DS等协议;

第6层 表示层:主要用于处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。它包括数据格式交换、数据加密与解密、数据压缩与恢复等功能;

第5层 会话层:—在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。此服务包括建立连接是以全双工还是以半双工的方式进行设置,尽管可以在层4中处理双工方式 ;

第4层 传输层:—常规数据递送-面向连接或无连接。为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。包括全双工或半双工、流控制和错误恢复服务;

第3层 网络层:—本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。它包括通过互连网络来路由和中继数据 ;

第2层 数据链路层:—在此层将数据分帧,并处理流控制。屏蔽物理层,为网络层提供一个数据链路的连接,在一条有可能出差错的物理连接上,进行几乎无差错的数据传输。本层指定拓扑结构并提供硬件寻址;

第1层 物理层:处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。

数据发送时,从第七层传到第一层,接收数据则相反。

上三层总称应用层,用来控制软件方面。下四层总称数据流层,用来管理硬件。

数据在发至数据流层的时候将被拆分

在传输层的数据叫段 网络层叫包 数据链路层叫帧 物理层叫比特流

14,已知某一主机的IP地址为201.103.136.184,其子网掩码为255.255.255.192,则该主机是在 C 类网络中,主机所在子网最多允许有 62 台主机。

331. *16,简述TCP三次握手的过程?*

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.

完成三次握手,客户端与服务器开始传送数据

332. *17,通过tcpdump查看网卡的Ping包?*

#yum -y install tcpdump

#tcpdump -i ens33 icmp

执行命令后,查看是否有request和reply

出现request说明系统收到ping包,出现reply说明系统响应ping包

如果只出现request,那么

1、检查sysctl -a | grep icmp_echo,确认net.ipv4.icmp_echo_ignore_all=0

2、检查iptables -vL,确认-p icmp为ACCPET

如果没有request和reply都没有,那么说明ping包未能到达此主机,需要检查链路或者前端防火墙的策略。

333. *18,Linux如何挂载windows下的共享目录*

# mkdir /windows #创建挂载目录windows

# mount -t cifs -o username=‘Bob’,password=‘123456’ //10.18.41.203/workspace /windows

# df -h #查看是否成功挂载

参数说明 : username , Window 系统登录用户名

password : Window 系统登录密码

//192.168.0.102/Share : 设置Window共享目录的路径 地址格式是 \你的IP\你的共享文件夹

/usr/local/bin/code : 挂载到 Linux 下的那个目录

通过修改fstab文件,支持开机自动挂载

# vim /etc/fstab

//10.18.41.203/workspace /windows cifs auto,username=‘echo’,password=‘123456’ 0 0

334. *19,linux下如何添加路由*

使用route -n 查看网关信息,或者 netstat -rn查看路由

永久生效

# vim /etc/sysconfig/network-scripts/ifcfg-ens33

GATEWAY=10.18.41.1

临时生效

# route add default gw 10.18.41.2

删除路由表:

# route del default gw 10.18.41.1

20,linux下如何改IP,主机名,DNS

修改ip地址-- 即时生效: # ifconfig ens33 10.18.41.5 netmask 255.255.255.0

重启生效:修改 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=10.18.41.2

—修改host name-- 即时生效: # hostname 主机名

重新进入:# hostnamectl set-hostname 主机名

—修改dns—

335. *修改# vim /etc/resolv.conf #修改后即时生效,重启同样有效*

336. *21,********在命令行下发一邮件********,********发件人********:********123@abc.com********,********收信人********:********abc@xyz.com*

echo “hello”|mail -s “test” abc@xyz.com – -f 123@abc.com

337. *22,********请写出********ip10.0.14.70mask255.255.255.192********的网络地址和广播地址。并写下命令,在********linux********系统上配置********10.0.14.65********作为默认网关*

网络地址:10.0.14.64 广播地址:10.0.14.127

sudo route add default gw 10.0.14.65

338. *23********,问:使用********tcpdump********监听********TCP80********端口来自********192.168.0.1********的所有流量,请写出命令。*

$ tcpdump -i ens33 -nnA ‘port 80 and src host 192.168.0.1’

339. *24********问********😗*******说出你知道的几种********LINUX/UNIX********发行版本*

Linux主要的几种发行版本:

1、RedHat系列:RHEL、CentOS、Oracle linux。
2、SUSE 3、Ubutun 4、debian

Unix主要的几个发行版本:

1、Solaris 2、HP-UX 3、AIX

340. *25问:请简单描述vi编辑器的使用:*

vi是一种模式文本编辑器,具备三种使用模式。

一、一般模式:默认模式,用于移动光标、删除、复制、粘贴;

1、移动光标

上下左右:左用h或←,上用k或↑,下用j或↓,右用l或→;

上下滚动:上滚用【Ctrl】+【b】(backward),下滚用【Ctrl】+【f】(foreword);

行首行尾:行首用“0”或【home】,行尾用“$”或【end】;

文首文尾:文首用“gg”或“1G”,文尾用“G”;

2、复制、粘贴、删除

复制:yy,复制光标所在一行;nyy,复制光标所在向下n行;

粘贴:p,粘贴在光标下一行;P,粘贴在光标上一行;

删除:x或【Del】,向后删除一个字符;X,向前删除一个字符;dd,删除光标所在一行;ndd,删除光标所在向下n行。

3、复原和重复

(1) 复原:u; (2) 重复上一操作:”.”。

二、编辑模式:用于插入或替换编辑文本;

1、插入模式

i,从当前光标处插入; I,从当前行的第一个非空格符处开始插入;

a,从当前光标的下一个字符处开始插入; A,从当前行的最后一个字符处插入;

o,当前行的下一行处插入新行; O,当前行的上一行处插入新行。

2、替换模式

r,替换光标所在的字符一次; R,一直替换光标所在的文字。

三、命令模式:用于查找、保存、替换大量文本、显示行号等。

1、查找与替换

/ 向下查找要搜索的字符串; ? 向上查找要搜索的字符串;

n 重复前一个查找(从前往后); N 反向重复前一个查找(从后往前);

:% s/替换前/替换后/g 或 1,$ s/替换前/替换后/g 全文替换

:n1,n2 s/替换前/替换后/g 在n1和n2行之间替换

2、行号的设置

:set nu, 显示行号 :set nonu, 取消行号

:wq或:x, 保存和离开 :w [文件路径], 另存为

:q 离开不保存

341. *26问:yum命令和rpm命令的区别,如何使用rpm安装一个有依赖的包?*

区别:rpm 命令安装时,不检查软件包依赖性的问题,yum 命令安装时,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。

rpm安装一个有依赖的包: 先用rpm安装这个有依赖的包,按照错误提示,如果是缺少某个依赖包也是去网上下载该包,然后用rpm命令安装所下载的依赖包。另外也可以去网上查找该包的依赖包,并将它们下载并安装。等所需依赖包安装完成后,在安装此包。

342. *27如何使用rpm安装一个有依赖的包?*

先用rpm安装这个有依赖的包,按照错误提示,如果是缺少某个依赖包也是去网上下载该包,然后用rpm命令安装所下载的依赖包。另外也可以去网上查找该包的依赖包,并将它们下载并安装。等所需依赖包安装完成后,在安装此包。

343. *28问:如何查看当前LINUX系统的状态:CPU使用内存使用负载情况以及网络状态*

可以用TOP工具实时动态查看CPU使用率、内存使用负载情况,用ps命令查看当前时刻的CPU使用率、内存使用负载情况。

可以用netstat命令查看网络状态,netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息;可以用ifconfig这个命令可以用于网络接口的启动/停止,更改设置和表示网络状态,在不添加任何参数的情况下,ifconfig可以表示网络接口的状态;可以用ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

344. *29:/proc/sys子目录的作用?*

\345. /proc/sys包括所有的内核参数信息,可以暂时修改参数(重启后就无效),优化性能。

346. *30:一个EXT3的文件分区,当使用touchtest.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采********用df-h命令查看磁盘大小时,只使用了60%的磁盘空间,为什么会出现这种情况,说说你的理由?*

答:1:是inode(索引节点)耗尽,因为linux的文件inode是有数量限制的。

2:磁盘配额问题。

347. *31:linux系统中如何获取pid为100的进程所监听的tcp端口,请给出详细命令?*

netstat -nlp | grep 100

348. *32: linux系统启动过程?*

1:按下电源 2:BIOS自检 3:系统引导

4:启动内核 5:初始化系统

349. *33问:请简述Linux系统的开机顺序*

第一步:当然是加电了

第二步:加载BIOS设置,选择启动盘。

第三步:加载磁盘中MBR中的grub

第四步:加载Linux内核系统到内存当中,运行超级进程/sbin/init进程。

第五步:加载配置文件。

第六步:加载内核模块,

第七步:完成相应的初始化工作和启动相应的服务。

第八步:启动init.d下的系统进程

第九步:出现登录系统的画面。

至此,Linux开启启动完成。

350. *34问:Linux开机启动流程详细步骤是什么?*

第一步:当然是加电了

第二步:加载BIOS设置,选择启动盘。这是因为因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给启动硬盘第一个扇区之后,就开始由Linux来控制系统了。

第三步:加载磁盘中MBR中的grubMBR(Master Boot Record):即主引导分区,是启动盘的前512字节,里面存放了预启动信息和分区信息。前446个字节,即是grub引导程序后66个字节是分区表的信息

第四步:加载Linux内核系统到内存当中,运行超级进程/sbin/init进程。在Linux系统中,init进程的进程号永远是1,也就是说,系统中的所有进程的父进程都是init进程。可以使用命令pstree进行查看。

第五步:加载配置文件。init程序启动之后,会读取/etc/inittab文件,来决定系统的运行级别,Linux系统的运行级别有7中,从0-6

# 0 - 关机模式(千万不要把initdefault设置为0 ,要不然你永远开不了机)

# 1 - 单用户模式 (此模式相当于救援模式,内核损坏,root忘记密码等可以使用此模式进行恢复。相当于windows下的安全模式)

# 2 - 多用户,但是没有NFS

# 3 - 完全多用户模式 (文本命令行界面,一般服务器都是此模式)

# 4 - 保留未使用

# 5 - 图形桌面(系统启动之后会进入到图形化桌面系统中)

# 6 - 重新启动(千万不要把initdefault设置为6 )

平时我们常用的也就是1,3,5。可以使用init 3 ,init 5进行切换。运行级别决定之后,加载相应的配置文件。第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等

第六步:加载内核模块,具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

第七步:根据运行级别,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

第八步:启动init.d下的系统进程

第九步:出现登录系统的画面。

至此,Linux开启启动完成。

351. *35问:删除/app/logs目录下7天前的日志*

find /app/logs -mtime +7 -exec rm -rf {} ;

352. *36问:磁盘空间满了,删除一部分nginx日志后,但是磁盘空间还是满的,为什么?*

未释放磁盘空间原因:在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是nginx的log文件删除的时候文件应该正在被使用
解决方法:重启nginx服务,或者用>/opt/nginx/logs/nginx.log清空日志文件,而不是直接删除。

353. *37问:如何配置linux机器免密码登录?请写具体命令*

两台先关闭防火墙

A主机

ps -ef | grep sshd

ssh-keygen -t rsa -P

cd /root/.sshcp id_rsa.pub authorized_keys

拷贝到B主机 scp authorized_keys hadoop@192.168.1.111:/home/hadoop/.ssh

ps -ef | grep sshd

ssh 192.168.3.159 date

配置好了A机登录B机不需要密码的方式。

354. *38问:在linux系统中,如何在文本里进行复制、粘贴、删除行、删除全部,按行查找和按字母查找*

y #复制 yy 3yy yG (以行为单位) d #删除 dd 3dd (行为单位)

p #粘贴 D #从光标处删除到行尾

dG #删除全部 /string #查找字符

:行号 #查找行

355. *39问:请写出一条命令,将当前目录中创建时间超过七天的文件压缩成gz格式*

find / -ctime +7 -exec gzip {} ;

356. *40问:如何在命令行查看一台linux机器的cpu、内存、SWAP分区信息?*

cpu:cat /proc/cpuinfo 内存:free -m swap分区信息:cat /proc/swaps

357. *41问:查看服务器当前正在连接IP列表的命令是?*

netstat -an 查看所有信息用:top

358. *42问:根据服务器硬件配置,安装linux操作系统时如何分区?(硬件配置1:硬盘2T,内存32G)、(硬件配置2:硬********盘6T,内存128G)*

硬件配置1:/boot 200M /swap 64G /1984G

硬件配置2:/boot 200M /swap 256G /5888G

其他分区根据生产环境配置

359. *43问:简述raid0、raid1、raid5三种工作模式的特点分区的方式:*

RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0不能应用于数据安全性要求高的场合。

RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。

RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。

360. *44问:如何添加禁止登录的用户*

# useradd user -s /sbinlogin

361. *45问:Linux查看文件的命令是:*

cat 由第一行开始显示内容,并将所有内容输出

tac 从最后一行倒序显示内容,并将所有内容输出

more 根据窗口大小,一页一页的现实文件内容

less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head 只显示头几行 tail 只显示最后几行

nl 类似于cat -n,显示时输出行号 tailf 类似于tail -f

grep 针对文件内容进行过滤

362. *46修改完文件后,保存修改并退出的命令是:*

wq

363. *47问:打印当前工作目录的Linux命令是:*

pwd

364. *48问:用于当前扩展或减少逻辑卷大小的命令分别是:*

lvreduce -L

365. *49问:请用Liunx命令行实现:查看/var/log目录下文件数:*

ls /var/log/ |wc -l

366. *50问:在Linux系统中,要列出当前运行的是哪些进程,用什么命令?如果要对进程进行监控,需要使用什么命令?杀死进程的命令是?VSZ、RSS分别代表什么意思?如果要对进程进行监控,需要使用什么命令?*

ps aux kill VSZ: 占⽤用虚拟内存 RSS: 占⽤用实际内存 驻留内存 top

367. *51问:如何修改Linux内核参数?*

Vim /etc/sysctl.conf

368. *52问:Linux文件系统XFS格式,应该选择哪种分区?*

fdisk

369. *53问:14日下午2点date+%Y%M%D%H%M输出的时间是什么?*

18年10月14日2点10月

370. *54问:能够查看储存空间的命令是?*

Free -m

371. *55问:请写出下面对应的bash指令。*

372. *56查看文件修改时间指令:*

date

373. *57查看文件最后10行内容:*

tali

374. *58实时查看日志文件:*

tali -f

375. *59列出/etc/init.d/file文件中包含save字段的行:*

cat /etc/init.d/file |grep save

376. *67使用crontab每两个小时执行/data/scripts/back.sh脚本的语句:*

crontab -e

0 */2 * * * /data/scripts/back.sh

377. *68分别在CnetOS6和CentOS7下,查看nginx服务的工作状态,并设置为开启自动启动:*

(Centos6)service nginx status

(Centos7) systemctl status nginx,6的方法也适用

378. *69在ADMIN管理机上,并发查看APP1和APP2两台主机内存使用情况:*

ADMIN管理机上查看APP1,APP2客户机的内存信息。

379. *70问:CPU利用率和CPU负载的区别*

CPU利用率:显示的是程序在运行期间实时占用的CPU百分比

CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。举例来说:如果我有一个程序它需要一直使用CPU的运算功能,那么此时CPU的使用率可能达到100%,但是CPU的工作负载则是趋近于“1”,因为CPU仅负责一个工作嘛!如果同时执行这样的程序两个呢?CPU的使用率还是100%,但是工作负载则变成2了。所以也就是说,当CPU的工作负载越大,代表CPU必须要在不同的工作之间进行频繁的工作切换。

举例说明

网上有篇文章举了一个有趣比喻,拿打电话来说明两者的区别,我按自己的理解阐述一下。

某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,只能挂掉电话去排队,等待下一轮。电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。

在电话亭使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5分钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。

有的人拿起电话就打,一直打完1分钟,而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,我们就说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。

当然, CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及到大量的计算,所以CPU利用率就高,而有的程序牵涉到计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高是低,跟后面有多少任务在排队没有必然关系。

380. *MBR是什么?有什么用?*

1.MBR,全称为 Master Boot Record,即硬盘的 主引导记录。

为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区( 引导程序、分区表及分隔标识),也就是上面所说的 主引导记录;而狭义的MBR仅指 引导程序而言。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区里 主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。

2.MBR的作用

计算机在进行主板BIOS检测之后,就会将MBR扇区整个读取到内存中,然后执行权交给内存中MBR扇区的引导程序。系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为“55 AA”,不是则报错。

如果是“55 AA”接下来引导程序会到分区表中查找是有活动分区,若有活动分区,则判断活动分区的引导扇区在磁盘中的地址,如信息正确,引导权就交给这个扇区去引导操作系统了,MBR引导程序的使命就光荣完成。

381. *在linux系统中如何备份?*

1)使用fdisk -l 确定MBR位置 2)备份MBR dd if=/dev/sda1 of=/root/mbr bs=512 count=1 3)恢复MBR dd if=/root/mbr of=/dev/sda1 bs=512 count=1

4)恢复分区表 dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66 注:mbr大小512 所以bs=512 count=1 bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置

382. *73问:如何让nfs服务在运行状态5下开启而在其他运行级下关闭?*

chkconfig -level 5 nfs on

383. *74问:如何查看当前登陆用户?同时知道自己使用的账户名?*

w

384. *75问:如何删除当前目录(包含子目录)下所有30天以前创建的文件名后缀为.log的文件?*

find ./ -mtime -30 -name ‘*.log’ -exec rm -rf {} ;

385. *76问:有两分区sda2和sda3(都已使用过,未挂载),sda2做成交换分区并激活,sda3做成xfs文件系统,挂在/tmp/sda3上,请写出详细步骤*

mkswap /dev/sda2 mkfs.xfs -f /dev/sda3 Vim /etc/fstab

/dev/sda2 swap swap default 0 0

/dev/sda3 /tmp/sda3 xfs defaults 0 0

Mount -a Swapon -a df -Th和swapon -s 查看

386. *77问:找出系统中父进程号为105的所有进程,并将其结束*

查看:ps -ef |awk '$3==105{print $0}

结束方法一:kill 105

只适用于守护进程,守护进程的会话,因为没有控制终端,所以就没有前后台进程组之分,会话首进程同时也是进程组组长.它被KILL掉会向该组每个进程发送SIGHUP,导致组中进程被中止.

结束方法二For pid in ‘ps -ef |awk ‘$3==105{print $2}’ do Kill -9 $pid

Done

387. ****78问:在使用手工的方法配置网络时,可通过修改_/etc/hostname_文件来改变主机名;要配置该计算机的域名解析客****户端,需配置/etc/resolv.conf_文件。

388. ****79.问:将/home/data/wwwroot目录做归档压缩,压缩后生成webs.tar.gz文件,并将此文件保存到/home目录下,实****现此任务的tar命令___。

cd /home

tar -czf webs.tar.gz /data/wwwroot

389. *80.问:如何在/data/www_logs目录下找出大于10M且在90天之前被修改过的log文件,并将文件移动到/usr/local/src********目录下?*

find /data/www_logs -size +10M -mtime +90 -exec mv {} /usr/local/src ;

390. *81.查看文件常用命令?解压和压缩文件命令?*

cat head tail less tar xf 压缩包名字 tar -cf/-czf/-cjf/-cJf 压缩包名字 压缩的目标目录

391. *82.对raid0和raid5有何认识*

raid0:磁盘利用率100% 不安全 读写性能超高 不安全的原因是: 两块盘分别存储文件的上半部分和下半部分

raid5:磁盘利用率75% 安全且具备读写性能 能够支持热插拔

392. *84怎么给文件/etc/passwd加上不可更改属性,从而防止非授权用户获得*

chattr +i /etc/passwd 同时,创建一个普通登录用户,并取消直接root登录

# useradd ‘username’ # passwd ‘username’ # vi /etc/ssh/sshd_config

PermitRootLogin no #取消root直接远程登录

其实,执行上面的chattr +i命令时,已经把这个文件都变成不可写的了,就算看了文件属性上写的是root用户可读写,此文件还是无法被root用户写。所以如果想添加新用户,必须先把这个文件上的限制减掉

393. ****85.Linux6.X如何修改ftp用户目录路径,以及修改时应当注意的事项?********
****登录Linux主机后,运行命令:”useradd ftpadmin -s /sbin/nologin “。该账户路径默认指向/home/ftpadmin目录;如果需要将用户指向其他目录,请运行命令:useradd ftpadmin -s /sbin/nologin –d /www(其他目录)

注意事项:权限等

394. *86简述一下,以下语句的意思?*

foriinrange(1,5): forjinrange(1,5): forkinrange(1,5): if(i!=k)and(i!=j)and(j!=k): printi,j,k

函数原型:range(start,end,scan):参数含义:start:计数从start开始。默认是从0开始。

例如:range(1, 5) 是[1, 2, 3, 4]没有5

①②③ :表示有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

395. *87从数据结构角度看,堆栈和队列都是线性表,堆栈的特性 队列是先进先出, 堆栈是先进后出 。*

396. *88队列的特性先进先出。*

397. *89面向对象的主要特征:封装 、继承、多态。*

398. *90Python写过什么脚本*

答:python脚本实现excel和mysql数据库表的导入导出

excel到mysql数据库表(仅支持.xlsx格式导入):

#!/usr/bin/env python

#coding=utf-8

import xlrd

import MySQLdb

#读取EXCEL中内容到数据库中

wb = xlrd.open_workbook(’/×.xlsx’)

sh = wb.sheet_by_index(0)

dfun=[]

nrows = sh.nrows #行数

ncols = sh.ncols #列数

fo=[]

fo.append(sh.row_values(0))

for i in range(1,nrows):

dfun.append(sh.row_values(i))

conn=MySQLdb.connect(host=‘localhost’,user=‘root’,passwd=‘××××××’,db=‘db’)

cursor=conn.cursor()

#创建table

cursor.execute(“create table test4(”+fo[0][0]+" varchar(100));")

#创建table属性

for i in range(1,ncols):

cursor.execute(“alter table test4 add “+fo[0][i]+” varchar(100);”)

val=’’

for i in range(0,ncols):

val = val+’%s,’

print dfun

cursor.executemany(“insert into resources_networkdevice values(”+val[:-1]+");" ,dfun)

conn.commit()

mysql数据库表到excel(仅支持.xlsx格式导出):

#!/usr/bin/env python

#coding=utf-8

import xlwt

import MySQLdb

conn=MySQLdb.connect(host=‘localhost’,user=‘root’,passwd=‘××××’,db=‘test’)

cursor=conn.cursor()

count = cursor.execute(‘select * from test1’)

print ‘has %s record’ % count

#重置游标位置

cursor.scroll(0,mode=‘absolute’)

#搜取所有结果

results = cursor.fetchall()

#测试代码,print results

#获取MYSQL里的数据字段

fields = cursor.description

#将字段写入到EXCEL新表的第一行

wbk = xlwt.Workbook()

sheet = wbk.add_sheet(‘test1’,cell_overwrite_ok=True)

for ifs in range(0,len(fields)):

sheet.write(0,ifs,fields[ifs][0])

ics=1

jcs=0

for ics in range(1,len(results)+1):

for jcs in range(0,len(fields)):

​ sheet.write(ics,jcs,results[ics-1][jcs])

wbk.save(‘×××××/Desktop/test4.xlsx’)

399. *91如何让校验主从数据不一致?出现不一致时如何处理?*

答:1.人为原因导致从库与主库数据不一致(从库写入)

2.主从复制过程中,主库异常宕机

3.设置了ignore/do/rewrite等replication等规则

4.binlog非row格式

5.异步复制本身不保证,半同步存在提交读的问题,增强半同步起来比较完美。 但对于异常重启(Replication Crash Safe),从库写数据(GTID)的防范,还需要策略来保证。

6.从库中断很久,binlog应用不连续,监控并及时修复主从

7.从库启用了诸如存储过程,从库禁用存储过程等

8.数据库大小版本/分支版本导致数据不一致?,主从版本统一

9.备份的时候没有指定参数 例如mysqldump --master-data=2 等

10.主从sql_mode 不一致

11.一主二从环境,二从的server id一致。

12.MySQL自增列 主从不一致

13.主从信息保存在文件里面,文件本身的刷新是非事务的,导致从库重启后开始执行点大于实际执行点

为了实现主从复制数据一致性校验和修复,我们首先推荐两个热门工具,分别是percona公司的pt-table-checksum和pt-table-sync,前者用来实现主从复制数据一致性的校验,后者实现数据修复,将数据修复到一致。

主从数据校验

​ 主从数据校验使用pt-table-checksum实现,要在主库上执行,执行校验通过参数控制校验全库全表还是只校验核心表。

校验指令举例:

./pt-table-checksum–nocheck-binlog-format --nocheck-plan --nocheck-replication-filters–replicate=test.checksums --databases=db1–tables=tb1 -h 192.168.XXX.XX -P 3306-u’hangxing’ -p’PASSOWRD’ --recursion-method=“processlist”

解析:

–no-check-binlog-format 不检查复制的binlog模式。

–nocheck-replication-filters 不检查复制过滤器,建议启用。

–replicate=test.checksums 检查结果写入test库的checksums表里。

–databases=db1 --tables=tb1 校验db1库里的tb1表,若无参数则校验全库全表。

-h 192.168.XXX.XX -P 3306 主库IP地址和3306端口。

-u’hangxing’ -p’PASSOWRD’ 校验账号密码。

–recursion-method=“processlist” 用processlist的方法来发现从库。

执行后的输出结果:

TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE

03-23T15:29:17 0 1 30000 1 0 1.270 testhx1.testhx1

解析:

TS :完成检查的时间。

ERRORS :检查时候发生错误和警告的数量。

DIFFS :0表示一致,大于0表示不一致。主要看这一列有无不一致数据。

ROWS :表的行数。

CHUNKS :被划分到表中的块的数目。

SKIPPED :由于错误或警告或过大,则跳过块的数目。

TIME :执行的时间。

TABLE :被检查的表名。

上述输出关键看DIFFS列,结果为0说明数据一致,无需进行数据修复,如果不为0则需要继续开展数据一致性修复工作。上述语句执行后也会将详细的内容会写入test库的checksums表中,可以查看这个库表得到详细的数据校验信息。

主从数据修复

400. *95 AWS每月的账单开出后,给使用方多长时间来进行支付?*

AWS的付费机制是:只需要为已使用的资源付费,并且AWS会在次月3号左右给出本月的账单,付款时间为30天;

你这边的问题应该是没有创建资源的权限,应该是信用卡或个人认证信息没有补充完成,可以后台提工单申请提高资源限额。

401. *96阿里云,AWS相关的功能特性*

AWS的优点:

AWS的云服务还是很成熟的,譬如大数据计算,开放存储这些服务的性能都要比阿里云好很多,在全世界各地使用访问都很快,成本上相对于阿里云来说确实花费多一点,AWS是国际化的,有七八种语言的客户服务,并且服务团队在工作日反应还算是很迅速的。

我先说说我感受最深的吧,为什么说AWS云服务很成熟,我觉得就可以从VM部署这一点看出来,速度比阿里云快很多(同样的条件下),微软的云服务和AWS和阿里云我都或多或少的使用过,如果不是因为AWS入门门槛太高我还会继续使用下去的,如果一个公司或者团队需要国际化,把服务全都放在AWS上是特别好的,在中国以内的话体验最好的其实就是阿里云了。

通用型:提供固定性能,对CPU性能不会产生突然并发的应用程序。如一般的web应用chengxu

计算优化:最高等级的性能,运行计算密集型应用程序。如游戏服务器

内存优化:可为高吞吐量的应用程序,如数据库,提供大容量内存。

存储优化:提供极高的磁盘I/O性能,适合对那些对磁盘访问频繁的应用程序。

CPU实例:高度并行化的应用程序(包括 3D 图形,HPC渲染和媒体处理应用程序)提供具备高CPU和网络性的图形处理能力。

阿里云的优点:

首先它易于国人使用,支付宝付款,可以开子账号团队协作,安全关把关也还算是可以的,其次就是BGP线路,确实名不虚传(但是国内区域在国外访问还是不咋的呀),阿里云确实贴合国人的角度突出了按需付费的这个特性,阿里云服务对于国外的亲们来说可能就是需要多地跑的事情集中在了一起而已,很多人也很喜欢,对于中国人来说,阿里云可能就是并不感冒了,技术上成熟度你别说还真的次于AWS(更多的可能是经验)

架构灵活

双机热备架构

系统工作时主节点(Master)和备节点(Slave)数据实时同步,主节点故障时系统自动进行秒级切换,备节点接管业务,全程自动且对业务无影响,主备架构保障系统服务具有高可用性。

集群架构

集群(Cluster)实例采用分布式架构,每个节点都采用一主一从的高可用架构,能够进行自动容灾切换和故障迁移。多种集群规格可适配不同的业务压力,可按需扩展数据库性能。

数据安全

数据持久化存储

采用内存加硬盘的混合存储方式,在提供高速数据读写能力的同时满足数据持久化需求。

备份及一键恢复

每天自动备份数据,数据容灾能力强,免费支持数据一键恢复,有效防范数据误操作,将可能发生的业务损失降到最低。

多层网络安全防护

VPC私有网络在TCP层直接进行网络隔离保护。

DDOS防护实时监测并清除大流量攻击。

持1000个以上IP白名单配置,直接从访问源进行风险控制。

支持密码访问鉴权方式,确保访问安全可靠。

深度内核优化

阿里云专家团队对源码Redis进行深度内核优化,有效防止内存溢出,修复安全漏洞,为您保驾护航。

高可用性

主从双节点

标准版与集群版的双副本实例均有主从双节点,避免单点故障引起的服务中断。

自动检测与恢复

自动侦测硬件故障,发生故障时能够进行故障转移,在数秒内恢复服务。

资源隔离

实例级别的资源隔离可以更好地保障单个用户服务的稳定性。

弹性扩展

数据容量扩展

云数据库Redis版支持多种内存规格的产品配置,可根据业务量大小在线升级内存规格,无需中断服务,不影响业务。

业务形态扩展

支持单节点缓存架构和双节点存储架构,适配不同业务场景。标准版和双节点版之间能够灵活变配。

性能扩展

支持集群架构下弹性扩展数据库系统的存储空间及吞吐性能,突破海量数据高QPS性能瓶颈,轻松应对每秒百万次的读写需求。

智能运维

监控平台

提供CPU利用率、连接数、磁盘空间利用率等实例信息实时监控及报警,随时随地了解实例动态。

可视化管理平台

管理控制平台对实例克隆、备份、数据恢复等高频高危操作可便捷地进行一键式操作。

数据库内核版本管理

主动升级,快速修复缺陷,免去日常版本管理苦恼;优化Redis参数配置,最大化利用系统资源。

97在线测速网站

360 腾讯 金山

402. *98 nginx的优化选项?*

1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2

如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l

[root@lx~]# vi/usr/local/nginx1.10/conf/nginx.conf

worker_processes 4;

[root@lx~]# /usr/local/nginx1.10/sbin/nginx-s reload

[root@lx~]# ps -aux | grep nginx |grep -v grep

root 9834 0.0 0.0 47556 1948 ? Ss 22:36 0:00 nginx: master processnginx

www 10135 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process

www 10136 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process

www 10137 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process

www 10138 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process

Nginx运行CPU亲和力

比如4核配置 worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000

比如8核配置 worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;

worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。

Nginx最多可以打开文件数 worker_rlimit_nofile 65535;

这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。

注:文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置。

* soft nofile 65535 * hard nofile 65535 用户重新登录生效(ulimit -n)

*(2)Nginx事件处理模型*

events { use epoll; worker_connections 65535; multi_accept on; }

nginx采用epoll事件模型,处理效率高

work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections 实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!

multi_accept 告诉nginx收到一个新连接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。

*(3)开启高效传输模式*

http { include mime.types; default_type application/octet-stream; …… sendfile on; tcp_nopush on; ……

Include mime.types; //媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令

default_type application/octet-stream; //默认媒体类型足够

sendfile on;//开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

注意:如果图片显示不正常把这个改成off。 tcp_nopush on;必须在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)

*(4)连接超时时间*

主要目的是保护服务器资源,CPU,内存,控制连接数,因为建立连接也是需要消耗资源的

keepalive_timeout 60;tcp_nodelay on;client_header_buffer_size 4k;open_file_cache max=102400 inactive=20s;open_file_cache_valid 30s;

open_file_cache_min_uses 1;client_header_timeout 15;client_body_timeout 15;reset_timedout_connection on;send_timeout 15;

server_tokens off;client_max_body_size 10m;keepalived_timeout客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接

tcp_nodelay;也是防止网络阻塞,不过要包涵在keepalived参数才有效

client_header_buffer_size 4k;客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过 1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

open_file_cache max=102400 inactive=20s;这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。

open_file_cache_valid 30s;这个是指多长时间检查一次缓存的有效信息。

open_file_cache_min_uses 1;open_file_cache指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。

client_header_timeout设置请求头的超时时间。我们也可以把这个设置低些,如果超过这个时间没有发送任何数据,nginx将返回request time out的错误

client_body_timeout设置请求体的超时时间。我们也可以把这个设置低些,超过这个时间没有发送任何数据,和上面一样的错误提示

reset_timeout_connection 告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。

send_timeout响应客户端超时时间,这个超时时间仅限于两个活动之间的时间,如果超过这个时间,客户端没有任何活动,nginx关闭连接

server_tokens 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。

client_max_body_size上传文件大小限制

*(5)fastcgi调优*

fastcgi_connect_timeout 600;

fastcgi_send_timeout 600;

fastcgi_read_timeout 600;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_temp_path/usr/local/nginx1.10/nginx_tmp; fastcgi_intercept_errors on;

fastcgi_cache_path/usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g;

fastcgi_connect_timeout 600; #指定连接到后端FastCGI的超时时间。fastcgi_send_timeout 600; #向FastCGI传送请求的超时时间。

fastcgi_read_timeout 600; #指定接收FastCGI应答的超时时间。

fastcgi_buffer_size 64k; #指定读取FastCGI应答第一部分需要用多大的缓冲区,默认的缓冲区大小为fastcgi_buffers指令中的每块大小,可以将这个值设置更小。

fastcgi_buffers 4 64k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求,如果一个php脚本所产生的页面大小为256KB,那么会分配4个64KB的缓冲区来缓存,如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp_path指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于磁盘。一般这个值应该为站点中php脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“8 32K”、“4 64k”等。

fastcgi_busy_buffers_size 128k; #建议设置为fastcgi_buffers的两倍,繁忙时候的buffer

fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,该数值设置小时若负载上来时可能报502BadGateway

fastcgi_temp_path #缓存临时目录

fastcgi_intercept_errors on;#这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。

注:静态文件不存在会返回404页面,但是php页面则返回空白页!!

fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cachelevels=1:2 keys_zone=cache_fastcgi:128minactive=1d max_size=10g;# fastcgi_cache缓存目录,可以设置目录层级,比如1:2会生成16*256个子目录,cache_fastcgi是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),inactive表示默认失效时间,如果缓存数据在失效时间内没有被访问,将被删除,max_size表示最多用多少硬盘空间。

fastcgi_cache cache_fastcgi; #表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502的错误放生。cache_fastcgi为proxy_cache_path指令创建的缓存区名称

fastcgi_cache_valid 200 302 1h; #用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一小时,要和fastcgi_cache配合使用

fastcgi_cache_valid 301 1d; #将301应答缓存一天

fastcgi_cache_valid any 1m; #将其他应答缓存为1分钟

fastcgi_cache_min_uses 1; #该指令用于设置经过多少次请求的相同URL将被缓存。

fastcgi_cache_key http:// h o s t host hostrequest_uri; #该指令用来设置web缓存的Key值,nginx根据Key值md5哈希存储.一般根据 h o s t ( 域 名 ) 、 host(域名)、 host()request_uri(请求的路径)等变量组合成proxy_cache_key 。

fastcgi_pass #指定FastCGI服务器监听端口与地址,可以是本机或者其它

总结:nginx的缓存功能有:proxy_cache / fastcgi_cache

proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。

fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。

proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。

fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力。

CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。Fastcgi是用来提高CGI程序性能的。php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的

*(6)gzip调优*

使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所以说这是一个重点。

Nginx启用压缩功能需要你来ngx_http_gzip_module模块,apache使用的是mod_deflate

一般我们需要压缩的内容有:文本,js,html,css,对于图片,视频,flash什么的不压缩,同时也要注意,我们使用gzip的功能是需要消耗CPU的!

gzip on;

gzip_min_length 2k;

gzip_buffers 4 32k;

gzip_http_version 1.1;

gzip_comp_level 6;

gzip_typestext/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml;

gzip_vary on;

gzip_proxied any;

gzip on; #开启压缩功能

gzip_min_length 1k; #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小与1K可能会越压越大。

gzip_buffers 4 32k; #压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。

gzip_http_version 1.1; #压缩版本,用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可

gzip_comp_level 6; #压缩比例,用来指定GZIP压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是处理慢,也比较消耗CPU资源。

gzip_types text/css text/xml application/javascript; #用来指定压缩的类型,‘text/html’类型总是会被压缩。

默认值: gzip_types text/html (默认不对js/css文件进行压缩)

# 压缩类型,匹配MIME��型进行压缩 # 不能用通配符 text/* # (无论是否指定)text/html默认已经压缩 # 设置哪压缩种文本文件可参考 conf/mime.types

gzip_vary on; #varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过nginx压缩的数据

*(7)expires缓存调优*

缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天,这样用户第一次打开加载慢一点,第二次,就非常快了!缓存的时候,我们需要将需要缓存的拓展名列出来, Expires缓存配置在server字段里面

location ~* .(ico|jpe?g|gif|png|bmp|swf|flv)$ {

expires 30d;

#log_not_found off;

access_log off;

}

location ~* .(js|css)$ {

expires 7d;

log_not_found off;

access_log off;

}

注:log_not_found off;是否在error_log中记录不存在的错误。默认是。

总结:expire功能优点 (1)expires可以降低网站购买的带宽,节约成本(2)同时提升用户访问体验(3)减轻服务的压力,节约服务器成本,是web服务非常重要的功能。 expire功能缺点:被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。解决办法:第一个缩短缓存时间,例如:1天,但不彻底,除非更新频率大于1天;第二个对缓存的对象改名。

网站不希望被缓存的内容 1)网站流量统计工具2)更新频繁的文件(google的logo)

*(8)防盗链*

防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量,那么我们的解决办法由几种: 1:水印,品牌宣传,你的带宽,服务器足够 2:防火墙,直接控制,前提是你知道IP来源 3:防盗链策略下面的方法是直接给予404的错误提示

location ~*^.+.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {

valid_referers noneblocked www.benet.com benet.com;

if($invalid_referer) {

#return 302 http://www.benet.com/img/nolink.jpg;

return 404;

​ break;

}

access_log off;

}

参数可以使如下形式:none 意思是不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)

blocked 意为根据防火墙伪装Referer头,如:“Referer:XXXXXXX”。

server_names 为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。

*(9)内核参数优化*

fs.file-max = 999999:这个参数表示进程(比如一个worker进程)可以同时打开的最大句柄数,这个参数直线限制最大并发连接数,需根据实际情况配置。

net.ipv4.tcp_max_tw_buckets = 6000 #这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。该参数默认为180000,过多的TIME_WAIT套接字会使Web服务器变慢。

注:主动关闭连接的服务端会产生TIME_WAIT状态的连接

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

net.ipv4.tcp_tw_recycle = 1#启用timewait快速回收。

net.ipv4.tcp_tw_reuse = 1#开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT状态的连接。

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

net.ipv4.tcp_syncookies = 1#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。

net.core.somaxconn = 40960 #web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到128,而nginx定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。

注:对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度与如somaxconn参数和使用该端口的程序中listen()函数有关

somaxconn参数:定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。

net.core.netdev_max_backlog = 262144 #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_max_syn_backlog = 262144 #这个参数标示TCP三次握手建立阶段接受SYN请求队列的最大长度,默认为1024,将其设置得大一些可以使出现Nginx繁忙来不及accept新连接的情况时,Linux不至于丢失客户端发起的连接请求。

net.ipv4.tcp_rmem = 10240 87380 12582912#这个参数定义了TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值。

net.ipv4.tcp_wmem = 10240 87380 12582912:这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。

net.core.rmem_default = 6291456:这个参数表示内核套接字接受缓存区默认的大小。

net.core.wmem_default = 6291456:这个参数表示内核套接字发送缓存区默认的大小。

net.core.rmem_max = 12582912:这个参数表示内核套接字接受缓存区的最大大小。

net.core.wmem_max = 12582912:这个参数表示内核套接字发送缓存区的最大大小。

net.ipv4.tcp_syncookies = 1:该参数与性能无关,用于解决TCP的SYN攻击。

下面贴一个完整的内核优化设置:

fs.file-max = 999999

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 10240 87380 12582912

net.ipv4.tcp_wmem = 10240 87380 12582912 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608

net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144

net.core.somaxconn = 40960 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.ip_local_port_range = 1024 65000

执行sysctl -p使内核修改生效

(10)关于系统连接数的优化:

linux 默认值 open files为1024

#ulimit -n

1024

说明server只允许同时打开1024个文件

使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。

新装的linux 默认只有1024 ,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大

在/etc/security/limits.conf最后增加:

* soft nofile 65535

* hard nofile 65535

* soft noproc 65535

* hard noproc 65535

403. *zabbix都监控什么,有自己添加的监控项吗?监控哪些应用程序和服务,怎么监控nginx的>日志,怎么监控Tomcat,具体是Tomcat调优的问题,还是后端Java报错socket的问题。监控中具体用到哪些模块,当监控服务出现一些问题怎么处理,比如MySQL的复制状态或者是gps过高,nginx报错的一些日志*

\404. 1).

vm.memory.size[available] 系统中已用内存量vm.memory.size[total] 系统总共内存量

swap空间{system.swap.size[,free] system.swap.size[,pfree] system.swap.size[,total] }

CPU { system.cpu.switches 系统文件切换 (bps)

(system.cpu.util[,user] system.cpu.util[,nice] system.cpu.util[,system] system.cpu.util[,iowait] system.cpu.util[,idle] system.cpu.util[,interrupt] system.cpu.util[,steal] system.cpu.util[,softirq]

)类似于对应系统中top命令查看CPU显示值

system.cpu.load[percpu,avg1] 系统CPU总负载/在线cpu个数平均1min的利用百分比

system.cpu.load[percpu,avg5] 系统CPU总负载/在线cpu个数平均5min的利用百分比

system.cpu.load[percpu,avg15] 系统CPU总负载/在线cpu个数平均15min的利用百分比

vfs.fs.size[{#FSNAME},free] 可用磁盘空间大小vfs.fs.size[{#FSNAME},pfree] 可用磁盘空间大小占分区总磁盘空间的百分比

vfs.fs.size[{#FSNAME},total] 分区总磁盘空间大小vfs.fs.size[{#FSNAME},used] 已使用磁盘空间大小

vfs.fs.inode[{#FSNAME},pfree] 可用磁盘节点数占总节点数的百分比net.if.in[{#IFNAME}] 网络进接口流量 (bps)

net.if.out[{#IFNAME}] 网络出接口流量 (bps)proc.num[] 系统中总进程数量,通过top查看

proc.num[,run] 系统中处于running的进程,通过top查看

system.localtime 系统时间 vfs.file.cksum[/etc/passwd] 系统文件passwd的文件总数

system.boottime 系统启动的时间戳 system.hostname 系统名称 system.cpu.intr 设备中断

kernel.maxfiles 系统支持打开文件的最大数量 kernel.maxproc 系统支持打开进程的最大数量

system.users.num 登陆系统的用户数 agent.ping 检查客户端可用性 agent.version 检查客户端使用版本

system.uname 系统详细信息 system.uptime 系统开启持续时间 agent.hostname 客户端主机名

net.tcp.listen[port] 监控程序端口启用 }

2).

1、Zabbix Server和Zabbix Agent会追踪日志文件的大小和最后修改时间,并且分别记录在字节计数器和最新的时间计数器中。

2、Agent会从上次读取日志的地方开始读取日志。

3、字节计数器和最新时间计数器的数据会被记录在Zabbix数据库,并且发送给Agent,这样能够保证Agent从上次停止的地方开始读取日志。

4、当日志文件大小小于字节计数器中的数字时,字节计数器会变为0,从头开始读取文件。

5、所有符合配置的文件,都会被监控。

6、一个目录下的多个文件如果修改时间相同,会按照字母顺序来读取。

7、到每个Update interval的时间时,Agent会检查一次目录下的文件。

8、Zabbix Agent每秒发送日志量,有一个日志行数上限,防止网络和CPU负载过高,这个数字在zabbix_agentd.conf中的MaxLinePerSecond。

9、在logtr中,正则表达式只对文件名有效,对文件目录无效。

Hostname设定为Server创建主机是填写的Host name,必须一致

ServerActive设定为Server的IP

type必须选择zabbix agent(active),因为数据是zabbix被监控的主动提交给server

key:log[/var/log/message,error],我们这里是监控的系统日志,打印出带有error的行,大家也可以去监控其他的日志,mysql、nginx等等都是可以的。

log time format:MMpddphh:mm:ss,对应日志的行头Sep 14 07:32:38,y表示年、M表示月、d表示日、p和:一个占位符,h表示小时,m表示分钟,s表示秒。

3).

405. *有自己添加的监控项吗*

vm.memory.size[available] 系统中已用内存量

vm.memory.size[total] 系统总共内存量

swap空间{system.swap.size[,free] system.swap.size[,pfree] system.swap.size[,total] }

CPU { system.cpu.switches 系统文件切换 (bps)

(system.cpu.util[,user] system.cpu.util[,nice] system.cpu.util[,system] system.cpu.util[,iowait] system.cpu.util[,idle] system.cpu.util[,interrupt] system.cpu.util[,steal] system.cpu.util[,softirq]

)类似于对应系统中top命令查看CPU显示值

system.cpu.load[percpu,avg1] 系统CPU总负载/在线cpu个数平均1min的利用百分比

system.cpu.load[percpu,avg5] 系统CPU总负载/在线cpu个数平均5min的利用百分比

system.cpu.load[percpu,avg15] 系统CPU总负载/在线cpu个数平均15min的利用百分比

vfs.fs.size[{#FSNAME},free] 可用磁盘空间大小vfs.fs.size[{#FSNAME},pfree] 可用磁盘空间大小占分区总磁盘空间的百分比

vfs.fs.size[{#FSNAME},total] 分区总磁盘空间大小vfs.fs.size[{#FSNAME},used] 已使用磁盘空间大小

vfs.fs.inode[{#FSNAME},pfree] 可用磁盘节点数占总节点数的百分比

net.if.in[{#IFNAME}] 网络进接口流量 (bps)net.if.out[{#IFNAME}] 网络出接口流量 (bps)proc.num[]

系统中总进程数量,通过top查看

proc.num[,run] 系统中处于running的进程,通过top查看system.localtime 系统时间

vfs.file.cksum[/etc/passwd] 系统文件passwd的文件总数

system.boottime 系统启动的时间戳system.hostname 系统名称system.cpu.intr 设备中断

kernel.maxfiles 系统支持打开文件的最大数量kernel.maxproc 系统支持打开进程的最大数量

system.users.num 登陆系统的用户数agent.ping 检查客户端可用性

agent.version 检查客户端使用版本system.uname 系统详细信息

system.uptime 系统开启持续时间agent.hostname 客户端主机名net.tcp.listen[port] 监控程序端口启用

406. *下的www.文件权限改为只有主用户有执行权限的有(A)*

A.chmod 400/www B.chmod001 /www C.chmod D.chmod a-x,g-x,u-x /www

407. *以下函数中,和其他函数不属于一类的是___EF__?(E)*

A. read B.pread C.write D.pwrite E.fseek F.lseek

408. *查看内存使用率,CPU负载,I/O,磁盘使用率及这台服务器上的应用监控以Nginx为列查看其端口是否开启。*

内存使用率:free -m| awk ‘/Mem/{print $3/$2*100"%"}’ CPU负载:vmstat |awk ‘{if(NR==3)print $15"%"}’

I/O使用率:iostat -xk|awk ‘/1/{print KaTeX parse error: Undefined control sequence: \t at position 4: 1,"\̲t̲"NF"%"}’ 磁盘使用率:df -h|awk ‘/^/dev/{print $1"\t"$5}’

Nginx端口是否开启:ss -antp |grep nginx

409. *简述tcp链接三次握手的过程。*

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

SYN:同步序列编号(Synchronize Sequence Numbers)

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.完成三次握手,客户端与服务器开始传送数据

410. *1=5,2=15,3=215,4=2145那么5=?*

1、“脑筋急转弯+逻辑推理”

因为已知5=1,所以1=5;因为每个等式左边数同时还代表了右边结果的位数,所以推断所求数字必为5位数)

2、“谐音”(个人感觉有点扯,但勉强可以解释)

1个字 5(我) 2个字 15(你我) 3个字 215(爱你我) 4个字 2145(爱你是我) 5个字 21945(爱你就是我)

3、“数字推理”:对于数学推理由A→B 并不能说B→A。反向推理的1,首先否定。

5是公有的,因此不必考虑.直接看5前面的数字

1=0 2=1 3=21 4=214 5=?

将等号后每个数位上的数字相加,分别为:0、1、3、7,按照20、21、22的形式递增,不完全归纳法推断应为2的3次方即8,故下一数字为7+8=15。15-4-1-2=8,因从第二个数开始,依次在左边加以2的次方为值的数。并且如果为偶次方,则数值越大越靠近5;如果为奇次方,则数值越大越远离5。所以5=82145。

使用数学推理的算法不同,答案不同,方法较多。合理解答即可。

411. *A、B、C三个人是好朋友,他们中间一个人开了一家商店,一个人考上了重点大学,一个人参军了。此外他们号知道以下条件:C的年龄比士兵的大;大学生的年龄比B的小;A的年龄和大学生的年龄不一样。请推断出三个人中谁是商人?谁是大学生?谁是士兵?*

解析:以上三个条件分别设为xyz;由yz可知AB都不是大学生,所以C为大学生。所以y的条件可变更为:C的年龄比B的小;结合x,可知B不是士兵,所以B为商人。综上:商人是B,大学生是C,士兵是A。

412. *问:_rm-rf_命令可删除文件或目录*

413. *问:在vi编辑环境下,使用___ESC____键,进行模式切换*

414. *问:增加一个用户的命令是:useradd_或____adduser_____*

415. *问:添加和删除一个用户的命令是____useradd____,userdel_____。*

416. *问:_____/usr/sbin_______目录用来存放系统管理员使用的管理程序。*

417. *解压acces.gz文件至access.log,保持源文件不删除解压:*

cpaccess.gz/access.log/access1.gz cd/access.log gzip-daccess1.gz

418. *若一台计算机的内存为128M,则交换分区的大小通常是_1.5到2倍;256M_。*

419. *针对Linux6、7系统简述常用运维或自动运维巡检的shell、python脚本。*

420. *查看内存使用率,CPU负载,I/O,磁盘使用率及这台服务器上的应用监控以Nginx为列查看其端口是否开启*

421. *批量修改文件或目录权限最好的办法是什么?*

422. *编写一个并发执行查询的shell执行文件exec_sql.sh,有以下要求:第一、实现脚本输入两个参数,第一个参数为存储sql语句的文件(可能存储1000条查询,语句之间用分号隔开),第二个参数为最大并发度,*

*例如:./exec_sql.sh./sql1000.sql8* *第二、要求所有语句执行完脚本才可以退出* *第三、记录开始时间、结束时间、每条语句的执行结果重定向到一个文件* *第四、使用sqlplus命令行工具执行所需查询语句*


  1. vs ↩︎

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值