Linux命令面试题
一、Linux基础知识
1、查看/var/log/下的文件数
ls -lR /var/log/ |grep "^-" |wc -l
2、shell下随机密码生成(32位)
cat /dev/urandom | head -1 |md5sum | head -c 32
3、随机生成8位密码(大小写和数字混合)
head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 8
head:
-c <数字> 指定显示头部内容的字符数
tr:
-c 反选字符串1的补集(取反)
-d 删除字符串1中出现的所有字符
4、随机生成两位随机数字
echo $[$RANDOM%100]
5、查找/etc/httpd/conf/httpd.conf属于哪个安装包
rpm -qf /etc/httpd/conf/httpd.conf
6、查找ngnix命令的路径
which nginx
7、查看snmp配置文件的生效项
grep -Ev '^#|^$' /etc/snmp/snmpd.conf
-v 显示不包含匹配文本的所有行
-E 支持扩展的正则表达式
8、查看系统的版本
cat /proc/version //通过进程信息查看内核版本 uname -r //查看系统的内核版本,-a 显示详细信息 cat /etc/redhat-release //查看操作系统版本 lsb_release -a // 查看操作系统详细信息,yum install redhat-lsb cat /etc/issue //查看系统版本,ubuntu系统
9、通过Makefile来安装已编译过的代码的命令
make install
10、查看swap状态
free -h used=total-free-buff/cache
实际可使用内存看available参数
11、备份文件的方式
1 本地备份:cp -av /data/ /tmp/
2 远程备份:rsync -avz /data/tmp/ user1@node1:/data/backup/control/
-r 递归目录文件(传输目录内的子文件)-z 压缩文件 -e :指定所要使用的远程shell程序,默认为ssh
-a --archive :归档模式,表示递归传输并保持文件属性
12、scp使用
scp是一个基于SSH协议在网络之间进行安全传输的命令 scp -pr ./dir/ root@192.168.8.162:/tmp/ -r 以递归方式复制 -p 保留文件的修改时间,访问时间和权限模式
13、使用dd命令生成一个10G文件
dd if=/dev/zore of=text10G bs=10M count=1024
14、查看IP的链接数
netstat -n | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn
15、swap分区的管理
free -m 查看交换分区 swapon /dev/sdc1 临时挂载swap分区 swapoff -a 关闭所有swa分区 blkid -o list 查看设备信息
16、系统进程的管理
1 查看系统进程:ps -ef 或者ps -aux 2 终止进程:kill -9 pid 强制终止进程 kill -15 pid 安全的终止进程 3 查看pid:pidof 进程名 4 查看进程的pid详细信息:ps -p $(pidof 程序名)
17、嗅探80端口访问
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4"."}' | sort | uniq -c | sort -nr | head -5
已知80端口被一个进程占用,查找哪个进程占用了80端口:
netstat -ntlpu | grep 80
18、查看http的TCP链接状态以及并发请求数
> netstat -tan | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' LISTEN 11 ESTABLISHED 3
awk:
FS 字段分隔符,默认是空格
NF(Number of fields) 字段分隔后,当前一共多少个字段
NR(Number of records) 当前记录数,行数
19、过滤拥有人为root的进程
pgrep -U root -l | head pgrep命令 – 用于检索当前正在运行的进程 -I 列出进程名及进程ID -U 选择仅匹配指定真实用户ID的进程
-f 模式参数仅用于匹配进程名:pgrep -f nginx -l
20、查找/etc/下所有以.conf结尾文件并进行操作
find /etc -name "*.conf" -exec cp {} /data/ \;
find /etc -name "*.conf" | xargs rm -rf
21、软硬连接区别
ln [参数] 源文件 目标文件 -s 对源文件建立符号链接,而非硬链接
软链接:可以跨文件系统,可以对目录进行链接,可以对一个不存在的文件名进行链接
硬链接:必须要有源文件,,不能跨文件系统,以文件副本形式存在,但不占用实际空间,不能给目录创建硬链接,只能在同一个文件系统使用,删除硬链接文件不影响其余相同inode号的文件
注意:硬链接只能防止误删除,但是不能防止误修改,必须要备份。
22、如何实现自动挂载,fstab各字段的意义:
将挂在信息写入/etc/fstab文件中,即可实现开机自动挂载;
主要字段包括:
要挂载的设备、挂载点、文件系统类型、挂载选项(r0,rw,defaults)。
23、文件和目录的默认权限分别是什么
文件:644 目录:755
24、cookie与session:
1)Cookie:是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤 Cookies是服务器在客户端浏览器上存储的小段文本,并随每一个请求发送至同一个服务器,是一种实现客户端保持状态的方案。
2)session称为会话信息,位于web服务器上,主要负责访问者与网站之间的交互 作用:当浏览器请求http地址时,可以基于之前的session实现会话保持、session共享等。
session与cookie的区别:
记忆:存储地方不同、存储格式限制、报文捕获获、过期时间
1、Cookie以文本文件格式存储在浏览器中,而session存储在服务端
2、cookie的存储限制了数据量,只允许4KB,而session是无限制的
3、cookie包含在每一个客户端请求报文中,因此容易被人捕获
4、cookie和session都可以设置过期时间
二、存储相关技术
1、RAID分析
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0 性能从好到坏:RAID0 RAID10 RAID5 RAID1 成本从低到高:RAID0 RAID5 RAID1 RAID10 单台服务器:很重要盘不多,系统盘,RAID1 数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10) WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘) 有多台,监控、应用服务器,RAID0 RAID5
RAID
2、NFS协议
NFS允许一个系统在网络上与他人共享目录和文件。
通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件
配置文件:/etc/exports
3、FTP协议
文件传输协议
主动模式和被动模式
FTP基础
4、SNMP协议
应用层协议、一种网络管理协议
snmpwalk [选项] agent [oid]
三个关键组件组成
网络管理系统: 网络管理系统运行应用程序,以该应用程序监视并控制被管理的设备
被管理的设备:网络节点,例如服务器,交换机,网桥
代理者:驻留在设备中的软件模式,此代理将信息转换成与SNMP兼容的格式
三、网络相关
1、OSI七层协议模式
| 层级 | OSI | 介绍 | 协议 |
| 七 | 应用层 | 网络服务与最终用户的一个接口 | HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP |
| 六 | 表示层 | 数据的表示、安全、压缩 | JPEG、ASCll、GIF、MPEG |
| 五 | 会话层 | 建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话 | RPC、NFS、SQL |
| 四 | 传输层 | 定义传输数据的协议端口号,以及流控和差错校验 | TCP 、UDP |
| 三 | 网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 | ICMP 、IGMP 、IP(IPV4 IPV6)、ARP |
| 二 | 数据链路层 | 建立逻辑连接、进行硬件地址寻址、差错校验 | PPP、IEEE 802.3/.2 |
| 一 | 物理层 | 建立、维护、断开物理连接 | RS232、RJ-45、FDDI |
2、TCP三次握手
建立TCP连接的过程被称为三次握手 客户端A、服务端B(已经监听在某个端口上了) ACK:占用一个比特位的ACK设置位,为1表示前面的ack确认号字段有效,通过ACK确认请求还是响应 ack:确认号,等待发送放发送下个数据包的起始字节 seq:序号 SYN:同步编号, SYN=1,ACK=0,连接尚未建立,TCP请求;接收连接请求:SYN=1,ACK=1 SYN=0,ACK=1,在连接建立后,SYN设置为0 1、客户端A首先发送一个请求报文给B,报文的TCP首部中,SYN为1,ACK设置0,seq=x,这个包也叫SYN包,进入SYN_SENT状态 2、B收到报文后,发现SYN=1,ACK=0,则知道这是一个TCP连接请求。
如果确认与A建立TCP连接,回复A一个回复报文,ACK包(SYN=1,ACK=1,ack=x+1,seq=y),发送完成后,进入SYN_RECV状态 3、A收到B的回复报文后,发现SYN=1,ACK=1,也向B回复一个ACK包(SYN=0,ACK=1,seq=x+1,ack=y+1),
发送完成后,进入ESTABLISHED状态,表示连接在A这端已经建立完成 4、B收到A的ACK包后,也进入ESTABLISHED状态,至此TCP连接建立完成
3、四次挥手
在TCP连接断开的时候需要四次挥手的过程 FIN=1,请求关闭TCP连接的数据包 1、A端请求释放连接,发送一个TCP报文,报文首部FIN=1,序号seq=u,发送FIN包之后,A从ESTABLISHED状态转变为FIN-WAIT-1状态 2、B收到FIN包后,FIN=1,知道A端请求关闭,发送一个ACK回复包(ACK=1,ac=u+1,seq=v),发送完服务端进入CLOSE-WAIT状态 3、A收到B的ACK包后,进入CLOSE-WAIT-2状态 4、B开始主动关闭从B到ATCP连接,发送一个FIN包(ACK=1,ack=u+1,seq=w),B发送完这个FIN+ACK包,进入LAST-ACK(最后确认)状态 5、当A收到B的FIN+ACK包,对B发送的关闭请求进行回复,ACK=1,seq=u+1,ack=w+1,发送ACK包后,A不会立即就关闭,进入到TIME-WAIT阶段等待一段时间 6、B收到A的ACK包后,B端关闭连接 7、A等待了2MSL时长之后,将真正关闭连接
4、NAT介绍
原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址 并发至此RS来处理,RS处理完后把数据交给负载均衡器,负载均衡器再把数据包原IP地址改为自己的IP 将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址 缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈 因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
四、Linux系统相关
1、telnet和ssh区别
Telnet:不安全,没有对传输的数据进行加密,容易被监听还有遭受中间人攻击,telnet不能压缩传输数据,所以传输慢;
ssh:对数据进行了RSA加密,安全性高,ssh传输数据是经过压缩的,所以数据传输速度比较快
2、检查服务器是否正常工作
1.ping 服务器ip //测试主机间网络连通性 2.ss -antul|grep 服务端口 //显示更多更详细的有关TCP和连接状态的信息 3.ps aux|grep 服务名 //查看到进程的所有信息 4.systemctl status 服务名 //查看服务状态
3、centos7/8开机流程
1.把MBR加载到内存, MBR=512字节=引导程序(446字节)+64字节(分区表)+2字节 2.BIOS加载grub引导程序,系统控制交给引导程序。 3.引导程序加载配置文件/boot/grub2/grub.cfg,告诉/boot目录所在分区和内核文件在哪,并加载内核和initramfs,并放入内存中。initramfs包含启动时硬件必要的内核模块和初始化脚本。 4.Kernel自身初始化,且内核在initramfs中找到所有硬件的驱动程序,初始化这些硬件。 5.initramfs中的/sbin/init以pid为1的进程启动,并链接到systemd。 6.内核将根从initramfs切换到真正的根。 7.启动第一个程序systemd
1 加电自检
2 读取磁盘MBR主引导记录,引导系统启动
3 进入Grub菜单选择启动内核,也可以进入单用户模式重置密码
4 加载OS内核
5 运行系统中的第一个进程(祖先进程),Cent OS6——init,Cent OS7——systemd
6 读取启动级别文件
7 初始化各种脚本文件,并运行开机自启的服务
8 进入登录界面
4、firewalld常用命令
firewall-cmd --zone=public --add-port=3000-3500/tcp --permanent
5、iptables常用命令
使用iptables实现端口转发 1 做DNAT转换: iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.3.20:80 iptables -t nat -A PREROUTING -p tcp -d 172.18.2.77 --dport 8080 -j DNAT --to-destination 192.168.2.66:80 2 做SNAT转换: iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 172.18.2.77 3 清空iptables过滤规则:iptables -F
6、iptables和firewall区别
1,firewalld可以动态修改单条规则,动态管理规则集,允许更新规则而不破坏现有会话和连接。而iptables,在修改了规则后必须得全部刷新才可以生效; 2,firewalld使用区域和服务而不是链式规则; 3,firewalld默认是拒绝的,需要设置以后才能放行。而iptables默认是允许的,需要拒绝的才去限制; 4,firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。
firewalld和iptables一样,它们的作用都用于维护规则,而真正使用规则干活的是内核的netfilter。只不过firewalld和iptables的结果以及使用方法不一样 5.firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,
虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令。
7、系统调优部分
修改内核参数 sysctl -a 查看内核所有参数 sysctl -a |grep net.ipv4.ip_forward 过滤某个内核参数 sysctl -w net.ipv4.ip_forward=1 临时修改参数 sysctl -p 使内核配置生效
系统调优思路:
架构优化 --> 硬件升级 --> 代码优化 --> 系统配置调优
从右到左,成本最高,效果最显著;从左到右,成本越低,效果越小
1 ssh方面
优化连接数:MaxStartups
禁止以root身份登录系统:PermitRootLogin;普通用户执行一些特殊命令必须要sudo授权才行。
使用基于密钥的认证。
2 系统方面:
锁定关键的系统文件,比如/etc/passwd/ /etc/shadow文件加锁。chattr +i
配置国内的yum源;
关闭history命令的记录,或者限制其记录行数
3 服务方面:
配置ntp服务,实现自动更新服务器时间;
8、用户管理
1 监控登录: w 查看谁在登录 last 登录和重启的记录 lastb 尝试登录失败 lastlog 最近登录日志
2 sudo提权 visudo /etc/sudoers.d/user1 user1 ALL= (ALL) NOPASSWD: /usr/bin/passwd, /usr/bin/mkdir 3 新建用户和组 groupadd it useradd -u 2000 -g it user1
9、查询系统及资源的相关状态
1 系统 uname -a # 查看内核/操作系统/CPU信息 head -n 1 /etc/issue # 查看操作系统版本 cat /proc/cpuinfo # 查看CPU信息 hostname # 查看计算机名 2 资源 free -m # 查看内存使用量和交换区使用量 df -h # 查看各分区使用情况 du -sh # 查看指定目录的大小 grep MemTotal /proc/meminfo # 查看内存总量 grep MemFree /proc/meminfo # 查看空闲内存量 uptime # 查看系统运行时间、用户数、负载 cat /proc/loadavg # 查看系统负载
10、系统的运行级别
共七个级别,别为从init 0到init 6:
init 0:关机级别;
init 1:单用户模式,相当于windows中的安全模式,具有root权限,但不允许远程登陆,主要用于系统维护;
init 2:多用户模式,没有网络支持
init 3:完全多用户模式,有网络支持,默认字符界面
init 4:保留不用
init 5:图形化界面
init 6:重启级别
查看:runlevel命令即可
切换:init+数字即可实现临时切换,若要实现永久切换可以编辑/etc/inittab文件
11、linux中进程状态有哪些?分别什么?什么是僵尸进程?
运行、中断、不可中断、僵尸、停止 僵尸进程——如果子进程比父进程先退出,而父进程没有及时读取子进程的运行结果,那么子进程便会变成僵尸进程
删除僵尸进程:kill -s SIGCHLD pid
五、云计算基础
1、云计算三种服务模式
1.基础设施即服务(IaaS) IaaS(Infrastructure-as-a- Service):基础设施即服务,它从硬件(比如内存和处理器速度等)等层面提供了基础设施。
消费者通过Internet可以从完善的计算机基础设施获得服务。 ps:供应商及相关业务例子:亚马逊的EC2,阿里云的ECS,华为云等产品和服务。
2、平台即服务(PaaS) PaaS(Platform-as-a- Service):平台即服务,它为开发人员提供了云应用程序平台。
开发人员提供了一个用于通过全球Internet构建应用程序和服务的平台。 Paas提供了按需开发环境,用于开发,测试和管理软件应用程序。 ps:供应商及相关业务例子:AWS Elastic Beanstalk,Heroku,Force.com,谷歌的GAE( Google App Engine),新浪SAE,百度云的开发引擎等产品。
3、软件即服务(SaaS) SaaS(Software-as-a- Service):软件即服务,它让用户可以直接访问云应用程序,不必在系统上安装任何东西。
它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。 ps:供应商及相关业务例子:谷歌的Apps,微软的Office 365,Citrix的CloudStack,以及目前比较火的各种云存储(网盘),云相册,云备份,云打印,云监控等正对个人用的云服务产品
2、PV、UV、IP之间的区别与联系
1 都用来衡量网站的用户访问量 2 PV(Page View)值:一天时间内访问某个网站多少页面或多少次(就是所有访问者在24小时(0点到24点)内访问了某个网站多少个页面或某个网页多少次,页面刷新也会视为一次PV流量)
度量方法就是从浏览器发出一个对网络服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生了一个PV。
那么在这里只要是这个请求发送给了浏览器,无论这个页面是否完全打开(下载完成),那么都是应当计为1个PV。
3 UV(unique visitor)即独立访客数。一天内访问某个网站的人数,以cookie为依据;一天内同一访客的多次访问只能被记为一个UV。 IP可以理解为独立IP的访问用户,指1天内使用不同IP地址的用户访问网站的数量。
3、公司的持续集成CICD
1、docker镜像安装,避免环境因素导致的安装问题 2、gitlab做代码仓库 3、Jenkins做构建测试 4、sonarqube做静态代码扫描 5、基于ansible代码发布 Jenkins的权限管控,分领域进行
1.基础操作:
面试和笔试的时候肯定会问到,频率最高的命令有:mkdir find awk sed uniq sort tail head mkfs chmod crontab lsofnetstat route tcpdump tar等主要考察为后面参数的选择以及格式
2.基础服务:
dns dhcp nfs vpn apache ftp 工作原理、nfs的三个模块的作用,dns的各种记录名称以及作用、dhcp的四个过程、apache虚拟主机的创建(有的面试官会要求现场写配置文件)、ftp的主动模式和被动模式
3.软硬raid的区别 raid的各种级别,各种级别的优缺点、大小的计算、备份恢复情况、最多可以坏多少个
4. 源码包编译的时候、大致的过程、系统都做了些什么事情
5.Tcp的三次握手和四次分手的过程和详细的状态以及报文段的考察(要求非常熟悉,基本每个公司都会问,或者笔试都会考)、osi七层模型每层的功能、每层中都各有那些协议族,那些协议是面向连接的,那些是不面向连接的。
7.Linux系统的七个启动级别、操作系统启动过程。
8.Iptables的三表五链,怎么将本机的80端口转发到8080等类似的问题。
9.服务器性能指标的查看(内存、cpu、磁盘、网络流量、虚拟内存swap、etc下的proc)free各个字段的含义、top各个字段的含义、ps、iftop各个字段的含义等都要十分清楚
10.Shell中文本处理命令的用法(cut、tr、diff、uniq、awk、sed、wc、grep等命令以及参数的选择要非常熟悉),shell中$? 、0 、 0 、0、#、@ 、 @、@、!、$、 、、*等各种$的含义。循环for的书写、if的书写以及其中的各种判断要非常熟悉。
11.find命令的使用要非常熟悉。
12.crontab命令的使用。
13.基本权限以及权限中u+s g+s o+t 的设定以及含义、为什么有的是大写的s,有的是小写的s 特殊权限的i权限
14.Nginx与apache与lighttpd的区别和各自的优缺点。
nginx的虚拟主机创建、负载均衡、反向代理实现,需要能够时刻写出来(迅雷面试直接给你环境、让你现场写配置文件),nginx的日志文件记录的级别。
15. Lvs的拓扑图,四种模式的具体实现过程,四种模式的对比优缺点,十种算法。
16. 几种常见的服务的端口号(ftp ssh telnet snmp pop3 IMAP rsync等)
17.DNS的工作原理原理以及实现过程。
18.kill命令的-9与-15的区别
-9 # SIGKILLSIGKILL信号强制进程立即停止执行,程序不能忽略该信号,此过程也无法清除。
-15 # SIGTERM该信号请求进程停止运行,该信号可以被程序自身忽略,该过程有时间正常关闭,当程序正常关闭时,这意味着它有时间保存进度并释放资源,换句话说即它不被迫停止。
浙公网安备 33010602011771号