1. vmstat r, b, si, so, bi, bo 这几列表示什么含义呢?
答:[root@centos6 ~ 10:57 #39]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1783964 13172 106056 0 0 29 7 15 11 0 0 99 0 0
r即running,表示正在跑的任务数
b即blocked,表示被阻塞的任务数
si表示有多少数据从交换分区读入内存
so表示有多少数据从内存写入交换分区
bi表示有多少数据从磁盘读入内存
简记:
i --input,进入内存,o --output,从内存出去
s --swap,交换分区,b --block,块设备,磁盘,单位都是KB
2.使用top查看系统资源占用情况时,哪一列表示内存占用呢?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
301 root 20 0 0 0 0 S 0.3 0.0 0:00.08 jbd2/sda3-8
1 root 20 0 2900 1428 1216 S 0.0 0.1 0:01.28 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
VIRT虚拟内存用量, RES物理内存用量
SHR共享内存用量, %MEM内存用量
3.如何实时查看网卡流量为多少?如何查看历史网卡流量?
yum install -y sysstat#安装sysstat包,获得sar命令
sar -n DEV#查看网卡流量,默认10分钟更新一次
sar -n DEV 1 10#一秒显示一次,一共显示10次
sar -n DEV -f /var/log/sa/sa22#查看指定日期的流量日志
4.如何查看当前系统都有哪些进程?
答:
ps -aux 或者ps -elf
[root@centos6 ~ 13:20 #56]# ps -aux
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2900 1428 ? Ss 10:43 0:01 /sbin/init
[root@centos6 ~ 13:21 #57]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 725 - 10:43 ? 00:00:01 /sbin/init
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
显示所有进程信息,连同命令行 命令:ps -ef
列出目前所有的正在内存当中的程序,命令:ps aux
5.如何查看系统都开启了哪些端口
[root@centos6 ~ 13:20 #55]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1035/sshd
tcp 0 0 :::22 :::* LISTEN 1035/sshd
[root@centos6 ~ 13:22 #58]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.147.130:22 192.168.147.1:23893 ESTABLISHED
显示所有连接。
-a 选项会列出 tcp, udp 和 unix 协议下所有套接字的所有连接。
-p 选项可以查看进程信息
禁用反向域名解析,加快查询速度,默认情况下 netstat 会通过反向域名解析查找每个 IP 地址对应的主机名,会降低查找速度。n 选项可以禁用此行为,并且用户 ID 和端口号也优先使用数字显示。
6.设置DNS需要修改哪个配置文件?
(1)在文件 /etc/resolv.conf 中设置DNS
(2)在文件 /etc/sysconfig/network-scripts/ifcfg-eth0 中设置DNS
7.使用iptables 写一条规则:把来源IP为192.168.1.101访问本机80端口的包直接拒绝
答:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT
8.在Linux系统下如何按照下面要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
tcpdump -nn -s0 host 192.168.0.111 and port 80 -c 1000 -w 1.cap
9.某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
答:用户身份验证过程记录在/var/log/secure中,登录成功的信息记录在/var/log/wtmp。
10.rsync 同步命令中,下面两种方式有什么不同呢?
(1) rsync -av /dira/ ip:/dirb/
(2) rsync -av /dira/ ip::dirb
答:(1)前者是通过ssh方式同步的,(2)后者是通过rsync服务的方式同步的
11.在Linux下如何指定dns服务器,来解析某个域名?
答:使用dig命令:dig @DNSip http://domain.com
如:dig @8.8.8.8 www.baidu.com#使用谷歌DNS解析百度
12.有一天你突然发现公司网站访问速度变的很慢很慢,你该怎么办呢?
答:可以从两个方面入手分析:分析系统负载,使用w命令或者uptime命令查看系统负载,如果负载很高,则使用top命令查看CPU,MEM等占用情况,要么是CPU繁忙,要么是内存不够,如果这二者都正常,再去使用sar命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
13.在Linux中搜索文件用什么命令?格式是怎么样的?
答案:
find [参数] [路径] [查找和搜索范围]
find命令用于:在一个目录(及子目录)中搜索文件,你可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件
whereis [参数] [命令名], locate [参数] [文件]
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。# find . -name "*.c"
将目前目录及其子目录下所有最近 20 天内更新过的文件列出 # find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:# find /var/log -type f -mtime +7 -ok rm {} \;
请问当用户反馈网站访问慢,你会如何处理?
14.有哪些方面的因素会导致网站网站访问慢?
1、服务器出口带宽不够用
本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。
跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。
2、服务器负载过大,导致响应不过来
可以从两个方面入手分析:
分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用 top 命令查看 CPU ,MEM 等占用情况,要么是 CPU 繁忙,要么是内存不够。
如果这二者都正常,再去使用 sar 命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
3、数据库瓶颈
如果慢查询比较多。那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等。然后,也可以搭建 MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
4、网站开发代码没有优化好
例如 SQL 语句没有优化,导致数据库读写相当耗时。
15.针对网站访问慢,怎么去排查?
1、首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。
不要上来就看服务端的问题。一定要从源头开始,逐步逐步往下。
2、如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还是某些数据加载慢。
3、针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。
4、如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看 MySQL慢查询的日志,看看是不是某条 SQL 语句查询慢,导致网站访问慢。
16.一台 Linux 系统初始化环境后需要做一些什么安全工作?
1、添加普通用户登陆,禁止 root 用户登陆,更改 SSH 端口号。
修改 SSH 端口不一定绝对哈。当然,如果要暴露在外网,建议改下。l
2、服务器使用密钥登陆,禁止密码登陆。
3、开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则。
4、装 fail2ban 这种防止 SSH 暴力破击的软件。
5、设置只允许公司办公网出口 IP 能登陆服务器(看公司实际需要)
也可以安装 VPN 等软件,只允许连接 VPN 到服务器上。
6、修改历史命令记录的条数为 10 条。
7、只允许有需要的服务器可以访问外网,其它全部禁止。
8、做好软件层面的防护。
8.1 设置 nginx_waf 模块防止 SQL 注入。
8.2 把 Web 服务使用 www 用户启动,更改网站目录的所有者和所属组为 www 。
17.Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,
a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要 rwx 属性则 4+2+1=7;
若要 rw- 属性则 4+2=6;
若要 r-x 属性则 4+1=5。
18.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?
网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)
要上外网需要:能够链接internet的网线(或无线)、有网卡
需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)
IP :IP地址,局域网中的IP地址一般为:192.168.172.*/24
netmask: 子网掩码 例如: 255.255.255.0
geteway: 网关 例如:192.168.0.1
dns: 起到解析作用,例如:8.8.8.8
19..Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?
开机步骤由a--h
a、首先是bios加电自检、初始化,这个过程会检测相关硬件(cpu、内存、显卡、硬盘等),然后读取一个启动顺序,以硬盘为例,会读取硬盘中的MBR。
b、加载内核 读取/boot里边的配置文件。
c、启动初始化进程,开始运行/sbin/init
d、读取/etc/inittab确定运行级别
e、根据/etc/rc.d/rcN.d加载开机启动程序,rcN.d都是链接文件,都指向/etc/rc.d/init.d 再运行/etc/rc.d/rc.local
f、用户登录(3种方式 ssh、命令行、图形化)
g、进入login shell,以命令行为例,首先读取/etc/profile这个全局配置文件,然后再针对当前用户读取家目录中的 ~/.bash_profile和~/.bash_login和~/.profile
h、最后一步就是打开non-login shell,进入图形化后 手动新建一个终端,但这个shell不读取/etc/profile
忘记密码
a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式
b、选项Kernel.....按e键进行编辑
c、在编辑界面rhgb quiet后加空格,然后输入"single"或"1" 回车
d、按b启动 进入单用户模式
f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭 setenforce 0)
20.在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来。
echo "Hello,World!" > /tmp/test.txt
21.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。
655,默认是644,可以通过"chmod 655 /tmp/test.txt"
22..查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。
find / -name *txt -mtime +30 -type f -size +20k -perm a=x -exec cp {} /data/backup/ \;
23.如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。
更改字符模式:修改/etc/inittab一行为 id:3:initdefault:
临时关闭selinnux setenforce 0
临时关闭防火墙 iptables -F
永久关闭selinux 修改/etc/selinux/config一行为 SELINUX=permissive
永久关闭防火墙 iptables -F;/etc/init.d/iptables save
24.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。
查看文件内容:vim、cat、head、tail
查看第1到行:head -3 file
查看最后一行:tail -1 file
25.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。
以eth0为例
只打印所在的行:ifconfig eth0 | grep "inet addr:"
只打印ip:ifconfig eth0 | grep "inet addr:"|awk -F: '{print $2}'|awk -F' ' '{print $1}'
26.在这个月内,每天的早上 6 点到 12 点中,每隔 2 小时创建一个test.txt文件,内容为ok,如何实现?
a、crontab -e 进入编辑模式
b、添加以下内容 0 6-12/2 * 4 * /bin/touch test.txt (以4月为例)
c、启动服务 service crontab start;chkconfig crontab on
27.将/usr/local/test目录下大于100K 的文件转移到/tmp 目录下。
find /usr/local/test -type f -size +100k -exec mv {} /tmp \;
28.简述 raid0 raid1 raid5三种工作模式的工作原理及特点。
raid 0 数量 >=2 磁盘利用率 100% hot-spare 无 优点 读写性能高 缺点 没有容错能力
数据分散写入不同磁盘,不提供冗余,不能扩容,任何一个盘坏掉,数据全部丢失。适用于对性能要求高,但对数据的安全不太在乎的领域。
raid 1 数量 >=2 磁盘利用率 50% Hot-spare 有 优点 提供数据冗余,安全性高 缺点 浪费磁盘空间
适用于对数据安全性高的场所,一般为2块盘,空间为最小的盘的空间,如果有4块盘,其中3块空间都是浪费(做镜像冗余)只要有一块盘存在,数据就不会丢失.
raid 5 数量 >=3 磁盘利用率 (n-1)/n hot-spare 有 优点 有容错,可冗余,读取性能高 缺点 写性能低
raid5相当于raid0和raid1的折中方案
应用服务器(像apache) 做 raid 1 两块硬盘
数据服务器(像MySQL) 做 raid 10 四块硬盘
29.请写出 apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前所支持的模块,并且查看是工作在哪种模式下?
答:
apache有两种工作模式,一种为prefork模式,另一种为 work模式
prefork:一个进程仅有一个线程接待一个访问请求,稳定性高,一个进程崩溃后不影响其它进程,但是占用内存较多,对硬件要求高。
work:一个进程具有多个线程,并分别响应访问请求,占用内存小,但是一个进程崩溃会影响其它请求
查看支持模块:httpd -l
查看工作模式:httpd -V
30.Linux下nfs在客户端无法挂载,请写出排查步骤?
答:
a、检查是否是防火墙或selinux的影响
b、检查语法与服务器地址是否错误(只能挂载目录,不能挂载文件)
c、在服务端检查配置文件是否正确及客户端是否有权限访问
31.Linux下已经部署了dhcp服务器,客户端无法获取的IP,如何解决?
答:
a、重启客户端网络服务,IP改为自动获取
b、检查客户端是否与服务器在同一网络内
c、检查服务器相关配置,并查看日志
32.我们都知道 FTP 协议有两种工作模式,说说它们的大概的一个工作流程?
FTP有两种工作模式:
FTP主动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的port 21命令端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
FTP被动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的port 21命令端口。然后客户端开始监听端口N+1,同时客户端提交 PASV命令。服务器会开启一个任意的非特权端口(P >1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
33.写出下面服务的常用端口ftp http dns snmp pop3、dhcp、nfs、mysql、samba等服务。
服务(端口号) ftp(2021)、http(80)、dns(53)、snmp(161)、pop3(110)、dhcp(67 68)、nfs(111)、mysql(3306)、samba(137 138 139)
34.Mysql创建数据库的命令,创建表的命令,插入语句的命令?
创建数据库 create database jacken;
创建表 use jacken; create table jacken(name varchar(20),age int(10),love varchar(20));
插入语句 insert into jacken_1(name,age,love) values('tom',2,'reading');
35.Mysql备份命令?Mysql如何对jfedu用户授权访问,密码为jfedu.net,请写出命令?
mysql备份mysqldump -h localhost -u root -p jacken > /data/jacken.db
授权:mysql> grant all privileges on *.* to jfedu@localhost identified by "jfedu.net";