1. 简述raid0、raid1、raid53种工作模式的工作原理和特点
raid0:条带卷,利用率100%,读写速度最快,安全性差。数据随机存储在阵列中的磁盘上。同时从两个磁盘读取数据;读取速度和raid1相差不多; raid1:镜像卷,利用率50%,相对读写速度一般,相对安全。至少由两个磁盘组成,数据同时存储在两个磁盘上。同时从两块磁盘读取数据;写作速度会比较raid慢,读数据和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块5300=1500G
显示网络接口的常见命令是:ifconfig或者ip a;检查服务端口的命令是: netstat -ntlp Linux检查当前网络设备的操作系统命令如下:ip a, 目前的计算机IP地址设为192.168.1.10,子网掩码为255.255.255.0命令为:ifconfig eth0 192.168.1.10 netmask 255.255.255.0 Linux查看当前主机TCP协议连接的命令如下: ss -antpl Linux操作系统查看/etc/passwd文件前十行的命令如下: head -10 /etc/passwd ; 追加前10行 /etc/passwd_new文件结尾的命令是: head -10 /etc/passwd >> /etc/passwd_new 。 Linux操作系统启动服务名称为kstoredb_NODEDBd的命令为: systemctl start kstoredb_NODEDBd ; Windows名为系统启动服务kstoredb_NODEDBd的命令为: netstartk storedb_NODEDBd
7. 假设服务器6元900G本地磁盘,单块磁盘IO约为150M/S,现在磁盘RAID理论上,六块盘被简述制成RAID实际存储尺寸为5级后的实际存储尺寸IO为多少?
理论上6块硬盘做raid5.其中一个是冗余的;因为有验证位;所以 实际尺寸为900(6-2)=3600G 实际IO是:写作速度150m/s(小于。理论上,RAID校验需要时间45次。=600m/s 因为读取数据时需要读取验证位置的磁盘,所以实际读取速度是(6-1)150=750m/s
8. 问:请简要描述Linux安装软件的一般步骤
1.部署基本环境:关闭防火墙;关闭;selinux;安装编译器 2.下载解压软件包 3.配置安装路径 4、编译 5、安装
9. 问:列出当前系统中的所有网络连接(包括进程名),请写下完整的操作命令
netstat -anputl -t tcp -l监听 -a所有 -uudp -n显示端口号和IP ppid
10. 问:实时抓取并显示当前系统tcp请写下80端口的网络数据信息的完整操作命令
tcpdump -n tcp port 80
11. 问:linux你常用的五个系统命令?
ls、cat、mkdir、useradd、touch、pwd
12. 问:关闭swap分区
swapoff -a关闭所有交换分区 swapoff /dev/sde关闭sde交换分区
13. 问:系统安全加固
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简单测试 dd if=/dev/zero of=test bs=1M count=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综合命令 mpstat -P ALL 1 监测 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七天前,以.ok文件列的结尾
find /home -name " .ok" -mtime 7
21. 问:快速生成10G的文件/h4> dd if=/dev/zero of=test bs=10M count=1024
dd if=/dev/zero of=test bs=10M count=1024
22. 问:列出Linux常见打包工具并写相应解压缩参数(至少三种)
压缩打包命令:
tar -czf filename. tar dirname
zip filename.zipdirname
gzip filename
bzip2 -z filename
解压包命令:tar -xf filename.tar unzip filename.zip gzip -d filename.gz bzip2 -d filename.bz2
常用的就是tar,gz,和zip
tar结尾的,tar -cvf 打包,tar -xvf 解包
gz结尾的,tar -zcvf打包,tar -zxvf解包
zip结尾的,zip 打包,unzip 解包
23. 标准端口的范围是?
答:1-65535
24. 常见协议(http、https、ftp、mysql、redis)默认端口。
http:80 https:433 ftp:21 mysql:3306 redis:6379
25. 请写出下列端口所运行的服务21、22、23、3306、6379
21:ftp 22:ssh 23:telnet 3306:mysql 6379:redis
26. 写出下面服务的常用端口:ftp、http、dns、smtp、pop3、dhcp、tftp、mysql、ssh、https
ftp:21 ftp(文件传输协议)
http:80 (超文本传输协议)
dns:53 (域名系统)
smtp:25“简单邮件传输协议”
pop3:110“邮局协议版本3”
dhcp:客户端是以UDP 68 服务器是以 UDP 67
tftp:69文件传输协议
mysql:3306
ssh:22
https:443 (简单讲是http的安全版)
27.Linux中的服务自启动添加方法有哪些。
centos6:有2种1.chkconfig服务名on2.vim/etc/rc.d/rc.local/usr/sbin/服务名start
centos7:有三种
1.systemctl enable 服务名
2.vim /etc/rc.local 在其中加入systemctl start 服务名
3.vim /etc/fstab 在其中写入systemctl start 服务名
从本机复制文件、文件夹到服务器并替换同名文件的写法有哪几种?
有两种:
1.scp -r 源文件路径目标文件 ip: 目标文件路径
2.rsync -avr 源文件路径目标文件 ip:目标文件路径
28. 请解释下Telnet和SSH的区别
Telnet:不安全,没有对传输的数据进行加密,容易被监听还有遭受中间人攻击,telnet不能压缩传输数据,所以传输慢;
ssh:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快
29.如何检查Selinux是否开启?
getenforce
30. 检查服务器是否正常工作的最好办法是?
1.ping服务器ip
2.ss -antul | grep服务端口
3.ps aux | grep服务名
4.systemctl status 服务名
31. Linux记录log的服务叫什么名字?
rsyslog
32.ping命令通过什么协议(internet控制信息协议)来实现?
使用的是ICMP协议
33.网络装机工具cobbler了解吗,有哪些组件?
批量装机:pxe、kickstart(用的最多的)
34.5开头的笔记有查看某一端口的连接客户端IP,比如3306端口
ss -antpul | grep 3306
35. 设置系统当前运行级别中test服务状态为启动时自动加载,请写出完整操作命令
#run level//查看当前的运行级别
#chkconfig --level5 test on
36. 计划任务在11月份,每天早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?
0 06-12/2 * 11 * bash /usr/bin/httpd.sh
37. 请写下Linux系统中cron定时任务,每天07至23点,每隔半小时执行apache重启,并禁用系统邮件通知
crontab -e */3 07-23 * * * systemctl restart httpd > /dev/null 2>&1
38.以下字段可能和哪个服务有关?表示什么意思?
*/5 * * * * ping -c 100 www.wanmel.com > /root/network.log 2>&1
(计划任务)每五分钟ping www.wanmel.com 100次,将错误和正确的输出覆盖到/root/network.log
39. /var/www/html/是网站的发布目录,如何每天凌晨0点30分对其进行自动备份,每次备份成按时间生成不同的备份包,写出操作步骤?
30 0 * * * tar -zcf `date+%Y%m%d` .html .tar .gz /var/www/html
40. 计划每星期天早8点服务器定时重启,如何实现?
0 8 * * 7 reboot
41. 每天中午12点使用tcpdump命令抓取目的端口为tcp80的1000个包输出到当前目录,以当前时间命名。请写出定时任务及脚内容
0 12 * * * bash tcpdump.sh
vim tcpdump.sh
tcpdump -c 1000 tcp dst port 80 -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的数字就是端口号,默认状态下为“Listen 80”。在之前的PHP专题中提到过关于在安装配置Apache时会遇到端口与IISHTTP端口冲突的问题,因为IISHTTP端口默认也为80。那么我们就可以在这里改变Apache的端口,从而避免冲突,比如可以改成:Listen 8011。改好之后别忘重起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协议有两种工作模式,说说他们的大概的一个工作流程?(简略回答)
模式:主动模式(Active FTP)和被动模式(Passive FTP)
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服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防
-
NAT使用的几种情况:
53.连接到INTERNE,但却没有足够的合法地址分配给内部主机; 2.更改到一个需要重新分配地址的ISP; 3.有相同的IP地址的两个INTRANET合并;4.想支持负载均衡(主机);
-
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与防火墙或代理服务器不同,但它确实有利于安全。
- 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―多对多.
- 问: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
- 当用户在浏览器当中输入一个网站,说说计算机对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信息,获取页面;
- 在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修改为目标端口
#systemctl restart sshd
61.共享文件怎么做的,用的什么技术,碰到了什么问题
用nfs做nas存储 当访问的过多时;会比较卡:
提升交换机的配置原来是百兆的话要提升到千兆或者万兆
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为**“网络存储器**”。它是一种专用数据存储服务器
NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端zhi得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。
nfs: 该系统通过共享,来使同一网络中的用户可以获取资源 如:A系统开启了NFS功能,那么,对于在同一网络中的B系统来说,它可以通过网络连接到A系统,并且,可以将A系统所具有的数据看作是自己存在一块硬盘上的数据,它可以通过对A系统的数据的读写来获取自己想要的到的数据
62.Linuxshell中单引号,双引号及不加引号的简单区别
单引 强引,硬引 取消引号内特殊字符的意义
双引 弱引,软引 取消部分引号内特殊字符的意义让多个以空格为分隔符的字符串形成一个整体字符串
63.如何实现对MySQL数据库进行分库逻辑备份,请用脚本实现
Mysqldump
#vim mysqldump.sh
mysqldump -uroot -p'QianFeng@123' -A --single-transaction --routines --triggers --master-data=2 --flush-logs >/backup/`date+%F-%H`-mysql-all.sql
64.设计一个shell程序,每5分钟执行一次获取当前服务器的基本情况(内存使用率,CPU负载,I/O,磁盘使用率),保存到120.20.20.20数据库上数据库帐号aaa密码bbb库名test表名host,表结构自行设计
#cronta -e */5 * * * * bash /serverstatus.sh
mysql -h 120.20.20.20 -u aaa -p'bbb' -e 'createtest.host(cipanvarchar(20),memvarchar(20),loadaver1varchar(20),loadaver2varchar(20),loadaver3varchar(20),ioaveragevarchar(20))'
#vim /serverstatus.sh
mem_used=`free -m | awk 'NR==2{print$3}'`
mem_total=`free -m | awk 'NR==2{print$2}'`
a=`df - Th | awk 'NR==2{print$6}' | awk -F %'{print$1}'`
mem_average=$((mem_used100/mem_total))
load_average1=`uptime | awk -F ':|+|,' '{print$(NF-4)}'`
load_average1=`uptime | awk -F ':|+|,' '{print$(NF-2)}'`
load_average1=`uptime | awk -F ':|+|,' '{print$(NF)}'`
io_average=`iostat -x | awk 'NR==4{print$4}'`
mysql -h 120.20.20.20 -u aaa -p 'bbb' -e 'insetintotest.hostvalues($a,$mem_average,$mem_average1,$mem_average2,$load_average3,$io_average)'
0
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 -eq 8080 ];then
lsof -i:8080 #查看端口,从而可以查看服务是否起没起
return $?
elif[ $1 -eq 8005 ];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 -s QUIT $(cat$PIDF) ;;
restart)
$0 stop $0 start ;;
reload)
kill -s HUP $(cat$PIDF) ;;
*)
echo"Usage:$0{start|stop|restart|reload}"
exit1
esac
exit0
#chmod +x /etc/init.d/nginx
#chkconfig--add nginx
68.很重要:写一个防火墙配置脚本,只允许远程主机访问本机的80端口
#vim iptables.sh
Iptables -t filter -I INPUT -p tcp! --dport80 -j DROP
69.编写shell脚本,清理/var/logs/目录下的一个持续增长的conn.log文件,以日为单位形成一个新的压缩文件,并删除30天前的日志压缩文件
#vim clean log.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 -exec rm{};
70.1)备份并压缩/data目录的所有内容,存放在/backup目录里,且文件名为如下形式
1)备份并压缩/data目录的所有内容,存放在/backup目录里,且文件名为如下形式 mm dd_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'{print$1}'>>/usr/bin/backup/$abc rm-rf/app/app.log
71.请使用awk、sed、grep三个命令,请举写出命令语句。
grep ‘root’ /etc/passwd
sed -ri ‘/SELINUX=*/SELINUX=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 ;
useradd user$i ;
suijishu=`openssl rand -hex 2 | sed -r "s/(...)(.)/1:2/g"| awk -F: '{print$1}'`
echo user$i $suijishu | passwd --stdin user$i ;
done
73.请说出以下符号在bashshell中的意义:
$0、$n、$#、$?、$、$$、$(#aa)
$0当前读取内容
$n位置变量
$? 上一条运行代码的返回值,正确返回0,错误返回其他数字
$#参数个数上一语句的返回值
$$ 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.0
76.统计出yum安装的apache的访问日志access_log中访问量最多的5个IP
cat /var/log/httpd/access_log | awk‘{ips[$1]++} END{for(iinips){print$iips[i]}}’|sort -rn -k2|head-5ssss
77.编写SHELL脚本,查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行全线的文件并备份到/data/backup/目录下,某一天没有文件在/data/backup下生产一个当时日志的文件,内容为"缺失文件".
PYTHON
给出程序运行结果
defextend List(val,list=[]):
list.append(val)
returnlist
list1=extend List(10)
list2=extend List(123,[])
list3=extend List('a')
print "list1=%s"%list1
print "list2=%s"%list2
print "list3=%s"%list3
78.实现用用户输入入用用户名和密码,当用用户名为ye或sk且密码为123时,显示登陆成功,否则登陆失败,失败时允许重复输入入三次
for i in range(3):
u=input("user>:")
p=input("pwd>:")
if u=="yg" o ru=="sk" and p=="123":
print("登陆成功")
break
else:
print("登陆失败")
79.如何用mysql命令进行备份和恢复?以test库为例,创建一个备份,并再用此备份恢复备份:
mysqldump -u 用户名 -p'123' -B test >/mysql_backup/`date+%F-%H`-mysql-test.sql
备份之后可用mysqlbinlog查看:#mysqlbinlog /mysql_backup/2018-09-26-20-mysql-test.sql
恢复:mysql -uroot -p'123' -D test</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
②重启服务:#systemctl restart mysqld
③进入数据库,为从服务器授权
#mysql -uroot -p'123'
mysql>grant replication slave,replication client on.to'rep'@'IP或网段'identified by '123';
mysql>flush privileges;
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
③重启服务:#systemctl restart mysqld
④再次测试rep用户是否可用:#mysql -h 'mysql主IP' -urep -p '123' ⑤从设备上设置主服务
mysql>change master to master_host='mysql主IP',master_user='rep',master_password='123',master_auto_position=1;(自动获取)
3、主主、多从
高可用:
①mysql主主同步
②在两台mysql上安装keepalived:
#yum -y install keepalived
③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)持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失
-
分库:垂直拆分:按照业务垂直划分,将系统中不存在关联关系或者需要join的表可以放在不同的数据库不同的服务器中
-
水平拆分:按照规则划分,一般水平分库是在垂直分库之后的。比如每天处理的订单数量是海量的,可以按照一定的规则水平划分
-
读写分离:对于时效性不高的数据,可以通过读写分离缓解数据库压力
-
分表:指将一张表按一定的规则分解成N个具有独立存储空间的实体表。
-
常见的分表策略:1.Range(范围)2.Hash(哈希)3.按照时间拆分4.Hash之后按照分表个数取模5.在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系
-
锁机制:用于保护数据的完整性,当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性,锁是其中的一种。
-
请写MYSQL数据库中的SQL查询,查找customer表中uid列内大于100的记录并以uid排序,正序输出前10条记录
selectfromcustomerwhereuid>100orderbyuidasclimit10;
- 使用sql语句创建、删除数据库db_test?查询数据库列表的sql语句
创建:mysql > create databasedb_test;
查询:mysql>usedb_test;
mysql>show tables;
mysql>select from 表名;查内容
删除:mysql>dropdatabasedb_test;
- 如何实现对Mysql数据库进行分库加分表备份,请用脚本实现
#!/bin/bash
user=root
pass=test
database=mysql -u $user -p"$pass"-e"show databases;" |sed 1d|grep -v 'schema'
mkdir /mysql_backup
mysql -u u s e r − p " user -p" user−p"pass"-e"showdatabases;"&>/dev/null
if[ $? -ne 0];then
read -p"Mysqld onot running,startit?(yes/no):"choice
if[[“$choice”-eq"yes"]];then
systemctl start mysqld &>/dev/null
else
echo-e"033[31m请开启mysql服务,以过滤库、表033[0m"
exit2
else
echo -e"033[33mbackupstart===033[0m"
for i in $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" user−p"pass"-B–databases i − − t a b l e s i--tables i−−tablesj>/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.log∣∣echoi-$jfailed>>/mysql_backup/table.log
[KaTeX parse error: Expected 'EOF', got '&' at position 7: ?-eq0]&̲&echo-e"i- j 033 [ 32 m o k ! 033 [ 0 m " ∣ ∣ e c h o − e " j033[32mok!033[0m"||echo-e" j033[32mok!033[0m"∣∣echo−e"i-$j033[31mfailed!033[0m"
done
done
echo-e"033[32mbackupcomplete=033[0m"
#!/bin/bash
#Date:2018-9-27
#Author:zz(1608843551@qq.com)
#version1.0
whiletrue
do
array=($(mysql-uroot-p'123'-e"showslavestatusG"|egrep'_Running|Behind_Master|Last_SQL_Errno'|awk'{print$NF}'))
if["${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"$char"|mail-s"$char"1608843551@qq.com
fi
sleep60
done
- 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 > grant all on daxiang.todaxiang@'192.168.96.0/24’identifiedby’daxiang@123’withgrantoption;
-
数据库用于事务回滚和提交的SQL语句分别是___ROLLBACK________,_____________。
-
创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:data目录下,文件大小为200MB设为自动增长,增量5MB,文>件最大为500MB的SQL为_____________________。
createtablespaceneuspacedatafile‘d:dataneudata.dbf’size200mautoextendonnext5mmaxsize500m
-
SQL语言支持数据库三级模式结构,在SQL中外模式、模式对应于_基本表全体_,内模式对应于_存储文件或数据文件_____
-
简述数据库中索引的用法及原理
索引在mysql中也叫键,是存储引擎用于快速找到记录的一种数据结构
用法:与查阅图书是一个道理:先定位到章,然后定位到章下的一个小节,再定位到页。
原理:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件。
- 请写出数据库事务的ACID特性并简述唯一(UNIQUE)约束和主键(PRIMARYKEY)约束的异同点
每个表可以有多个UNIQUE约束,而只能有一个PRIMARYKEY
主键:PRIMARYKEY
约束唯一标识数据库表中的每条记录
主键必须包含唯一的值;主键不能包含NULL值
每个表都应该有一个主键,并且每个表只能有一个主键
唯一:UNIQUE
约束唯一标识数据库表中的每条记录
UNIQUE和PRIMARYKEY约束均为列或列集合提供了唯一性的保证。
PRIMARYKEY约束拥有自动定义的UNIQUE约束。
99.解释冷备份和热备份的不同点以及各自的优点
热备份针对归档模式的数据库,再数据库仍旧处于工作状态时进行备份。而冷备份指数据库关闭后进行备份,适用于所有数据库。
不同点:
热备份:备份时数据库仍旧处于运行状态
冷备份:备份时数据处于关闭状态
优点:
热备份:在备份时,数据库仍可以使用并且可以将数据库恢复到任意一个时间点
冷备份:它的备份和恢复操作相当简单,并且冷备份可以工作在非归档模式下,数据库性能会比归档模式稍好
100.列举三种表连接算法以及各自高性能的场景
三种连接算法:①嵌套循环连接 ②合并连接 ③Hash连接
嵌套循环连接:通常在小数据量并且语句比较简单的场景中使用
合并连接:在SQL数据库中,如果查询优化器,发现要连接的两张对象表,在连接上都已经排序并包含索引,那么优化器将会极大
可能选择“合并”连接策略。条件是:两个表都是排序的,并且两个表连接条件中至少有一个等号连接,查询分析器会去选择合并连接
Hash连接:当我们尝试将两张数据量较大,没有排序和索引的两张表进行连接时,SQLServer的查询优化器会尝试使用HashJoin
101.Mysql客户端工具中,请问如何让查询当前所有的连接进程信息
show process list;
102.mysql主从,主库宕机,主从切换步骤?
主机故障或者宕机:
在salve执行:
stop slave;
reset master;
103.查看是否只读模式:show variables like ‘read_only’;
1. 只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。
2. 或者不重启使用命令关闭只读,但下次重启后失效:setglobalread_only=off;
查看show slave status G;
查看show master status G;
104.将从库IP地址改为主库IP地址,测试应用连接是否正常。
正常切换
1、检查slave同步状态
在开始切换之前先对主库进行锁表:
flush tables with read lock;
flush data;
切换完成后可以释放锁
2、在master执行:show process list;
3、在slave执行:show process list;
检查IO及SQL线程是否正常,如果为NO表明同步不一致,需要重新将slave同步保持主从数据一致。
4、停止slave io线程
在slave执行:mysql > STOP SLAVE IO_THREAD;
mysql>SHOW PROCESS LIST;
确保状态为:has read all relaylog
以上都执行完成后可以把slave提升为master:
5、提升slave为master
Stop slave;
Reset master;
Reset slave all;在5.6.3版本之后
Reset slave;在5.6.3版本之前
查看slave是否只读模式:show variables like 'read_only';
只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务。
或者不重启使用命令关闭只读,但下次重启后失效:setglobal read_only=off;
6、将原来master变为slave
在新的master上创建同步用户:
grant replication slave on.repl@'IPof slave 'identifiedby' repl pwd';
在新的slave上重置binlog:
Reset master;
change master tomaster_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状态:showslavestatusG;
105.如何让校验主从数据不一致?出现不一致时如何处理?
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格式会产生大量日志,因此在考