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=1seq=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的各种级别,各种级别的优缺点、大小的计算、备份恢复情况、最多可以坏多少个

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 # SIGKILL
SIGKILL信号强制进程立即停止执行,程序不能忽略该信号,此过程也无法清除。

-15 # SIGTERM
该信号请求进程停止运行,该信号可以被程序自身忽略,该过程有时间正常关闭,当程序正常关闭时,这意味着它有时间保存进度并释放资源,换句话说即它不被迫停止。

19.route的使用要非常熟悉。

20.puppet的实现以及配置文件的语法-资源的定义(类、函数、节点)资源中的file、package、exec、service。

21.hadoop中amenode、datanode、MapReduce 、jobtracker、tasktracker。以及hdfs的存储策略-块,mapreduce实现的大概过程。Mfs对比hdfs。

22.反向代理软件squid、varnish、nginx的原理以及各软件的优缺点。

23.怎样实现mysql数据库的健壮与稳定。Mysql全备份与还原,密码的忘记与修改,mysql内增删改查、授权等的具体实现命令,在深入一点可以看看命令的执行先后顺序。

 

posted @ 2022-10-31 12:05  我是大斌  阅读(526)  评论(0)    收藏  举报