2023年12月1日发(作者:)

linux运维经典⾯试题总结

1、Linux常见的⽇志⽂件都有哪些,各⾃的⽤途?

答:/var/log/messages 内核及公共消息⽇志

/var/log/cron 计划任务⽇志

/var/log/dmesg 系统引导⽇志

/var/log/maillog 邮件系统⽇志

/var/log/secure 记录与访问限制相关⽇志

2、简述 /etc/fstab ⾥⾯各字段的含义?

答:因为 mount 挂载在重启服务后会失效,所以需要将分区信息写到 /etc/fstab ⽂件中,使其永久挂载

磁盘分区 挂载⽬录 ⽂件格式

/dev/sdb1 /mnt/david ext4 defaults 0 0

3、讲⼀下 Keepalived 的⼯作原理?

答:在⼀个虚拟路由器中,只有作为 MASTER VRRP 路由器会⼀直发送 VRRP 通告信息,BACKUP 不会抢占 MASTER,除⾮它的优先级会更⾼。当

MASTER 不可⽤时(BACKUP收不到通告信息) 多台 BACKUP 中优先级最⾼的这台会被抢占为 MASTER ,这种抢占是⾮常快速的(<1s),以保证服务的连续性

为了安全性考虑,VRRP包使⽤了加密协议进⾏加密。BACKUP 不会发送通告信息,只会接收通告信息。

4、如何查看Linux系统每个ip的连接数?

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

5、ps aux 中 VSZ RSS 各代表什么意思?

答:VSZ:虚拟内存集,进程占⽤的虚拟内存空间

RSS:物理内存集,进程占⽤的实际内存空间

6、如何让 history 命令显⽰具体时间?

答:HISTTIMEFORMAT="%F %T"

export HISTTIMEFORMAT

重新开机后会还原,可以写到/etc/profile

7、请写出下列端⼝所运⾏的服务 21、22、23、3306、6379?在UDP/TCP协议中端⼝的范围?

答:21:ftp 22:ssh 23:telnet 3306:mysql 6379:redis

端⼝范围:0~65535

8、将 /test/a ⽬录建⽴软链接到 /test/b ⽬录,请写出完整的操作命令。

ln -s /test/a /test/b

9、shell 脚本中 continue 命令的作⽤?

答:continue 命令不同于 break 命令,它只是跳出当前循环的迭代,⽽不是整个循环。

10、简述Linux系统开机启动顺序

答:1.加载BIOS的硬件信息,获取第⼀个启动设备

2.读取第⼀个启动设备MBR的引导加载程序(grub)的启动信息

3.加载核⼼操作系统的核⼼信息,核⼼开始解压缩,并尝试驱动所有的硬件设备

4.核⼼执⾏init程序,并获取默认的运⾏信息

程序执⾏/etc/rc.d/t⽂件

6.启动核⼼的外挂模块

执⾏运⾏的各个批处理⽂件(scripts)

执⾏/etc/rc.d/

9.执⾏/bin/login程序,等待⽤户登录

10.登录之后开始以Shell控制主机

11、什么叫⽹站灰度发布?

答:灰度发布是指在⿊与⽩之间,能够平滑过渡的⼀种发布⽅式,AB test 就是⼀种灰度发布⽅式,让⼀部分⽤户继续使⽤A,⼀部分⽤户开始使⽤B,如果⽤

户对B没有什么反对意见,那么逐渐扩⼤范围,把所有⽤户都迁移到B上,灰度发布可以保证整体系统的稳定性,在初始灰度的时候就可以发现、调整问题,以

保证其影响性。

12、当⽂件系统受到破坏时,如何检查和修复系统?

答:成功修复⽂件系统的前提是要有两个以上的主⽂件系统,并保证在修复之前⾸先卸载将被修复的⽂件系统。

使⽤命令 fsck 对受到破坏的⽂件系统进⾏修复。fsck 检查⽂件系统分为5步,每⼀步检查系统不同部分的连接特性并对上⼀步进⾏验证和修改。在执⾏ fsck

令时,检查⾸先从超级块开始,然后是分配的磁盘块、路径名、⽬录的连接性、链接数⽬以及空闲块链表、inode

13、如何调试shell脚本?

答:

检测脚本中的语法错误

bash -n /path/to/some_script

调试执⾏

bash -x /path/to/some_script

14、shell 下⽣成32位随机密码

cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass

15、如何⽤ tcpdump 嗅探 80 端⼝的访问看看谁最⾼?

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

16、简述⽹络⽂件系统NFS,并说明其作⽤。

答:⽹络⽂件系统是应⽤层的⼀种应⽤服务,它主要应⽤于LinuxLinux系统、LinuxUnix系统之间的⽂件或⽬录的共享。对于⽤户⽽⾔,可以通过NFS⽅便

的访问远地的⽂件系统,使之成为本地系统的⼀部分。采⽤NFS之后省去了登录的过程,⽅便了⽤户访问系统资源。

17、进程的查看和调度分别使⽤什么命令?

答:进程查看命令:ps top

进程调度命令:atcrontabbatchkill

18、Linux 如何挂载 windows 下的共享⽬录?

//ip地址/server /mnt/server -o user=admin,password=123456

linux下的server需要⾃⼰⼿动建⼀个 后⾯的 user 和 pass 是 windows 主机的账号和密码,注意空格和逗号。

19、快速⽣成⼀个10G的⽂件

dd if=/dev/zero of=test bs=10M count=1024

20、ping 命令通过什么协议(internet 控制信息协议)来实现?

答:icmp

21、如何发布和回滚,⽤ jenkins ⼜是怎么实现?

答:发布:jenkins 配置好代码路径(SVNGIT),然后拉代码,打tag。需要编译就编译,编译之后推送到发布服务器(jenkins ⾥⾯可以调脚本),然后从

分发服务器往下分发到业务服务器上。

回滚:按照版本号到发布服务器找到对应的版本推送。

22、系统管理员的职责包括哪些?管理的对象是什么?

答:职责是进⾏系统资源管理、设备管理、系统性能管理、安全管理和系统性能监测。管理的对象是服务器、⽤户、服务器的进程及系统的各种资源等。

23、什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?

答:静态路由是由系统管理员设计与构建的路由表规定的路由。适⽤于⽹关数量有限的场合,且⽹络拓扑结构不经常变化的⽹络。其缺点是不能动态的适⽤⽹

络状况的变化,当⽹络状况变化后必须由⽹络管理员修改路由表。

动态路由是由路由选择协议⽽动态构建的,路由协议之间通过交换各⾃所拥有的路由信息实时更新路由表的内容。动态路由可以⾃动学习⽹络的拓扑结构,并

更新路由表。其缺点是路由⼴播更新信息将占据⼤量的⽹络宽带。

24、"#!/bin/bash" 的作⽤

答:#!/bin/bash 是 shell 脚本的第⼀⾏,称为释伴(shebang)⾏。这⾥ # 符号叫做 hash ,⽽ ! 叫做 bang 。 它的意思是命令通过

/bin/bash 来执⾏。

25、suid,sgid,stick bit 的作⽤?

答:suid:以属主的⾝份运⾏程序 ⽐如查看/etc/shadow 这个是只允许root管理员查看的,但是⽤root⽤户执⾏chmod u+s /usr/bin/cat 切换普通⽤户也可以查

看了

sgid:在⽬录中创建的⽂件继承所在⽬录的属主,root⽤户chmod g+s /dir 执⾏这条命令后,之后在/dir下创建的⽂件,⽆论是哪个⽤户,它的所属主都是root

stricky bit:⽤户只能修改、删除⾃⼰的⽂件。执⾏chmod o+t /dir 就算这个⽂件夹是777的权限,但是只有这个⽂件夹的所属者才能删除/dir

26、显⽰CPU利⽤率的命令,查看系统版本的命令

答:查看CPU利⽤率的命令:top或sar(centos不⾃带此命令需要安装sysstat包)

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

27、关闭swap分区

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

swapoff /dev/sde 关闭sde交换分区

28、解释 i 节点在⽂件系统中的作⽤

答:在linux⽂件系统中,是以块为单位存储信息的,为了找到某⼀个⽂件在存储空间中存放的位置,⽤ i 节点对⼀个⽂件进⾏索引。i 节点包含了描述⼀个⽂件

所必须的全部信息,所以 i 节点是⽂件系统管理的⼀个数据结构

29、什么叫数据的事务?

答:事务是应⽤程序中⼀系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原⼦性,⼀个事务中的⼀

系列操作要么全部成功,要么⼀个都不做。

事务的结束有两种,当事务中的所有步骤全部成功执⾏时,事务提交。如果其中⼀个步骤失败,将发⽣回滚操作,撤消之前到开始事务的所有操作。

30、⼀个 ext3 的⽂件分区,当⽤ touch 新建⽂件时报错,错误信息是磁盘已满,但是⽤ df -h 查看分区信息时只⽤了50%,请分析具体

原因?

答:两种情况,⼀种是磁盘配额问题,另外⼀种是 ext3 ⽂件系统的设计不适合很多⼩⽂件和⼤⽂件的⼀种⽂件格式,出现很多⼩⽂件时,

容易导致 inode 耗尽

31、Inode耗尽导致故障解决?

cd /tmp

sudo find /tmp -type f -exec rm {} ; #inode

删除⽆⽤的临时⽂件,释放

sudo find /home -type f -size 0 -exec rm {} ; #0

遍历寻找字节的⽂件,并删除。

32、仅开放本机两个IP地址中的⼀个地址172.16.0.X上绑定的sshd和vsftpd服务给172.16.0.0/16⽹络中除了

172.16.0.0/24⽹络中的主机之外的所有主机,但允许172.16.0.200访问,每次的⽤户访问都要记录于⽇志⽂件

中,注:其中X为学号

vim /etc/

sshd,vsftpd@172.16.0.x:172.16.0.0/16 EXPECT 172.16.0.0/24 EXPECT 172.16.0.200:spawn echo

"`date` login from %c to server %s,%d" >> /var/log/

33、编写脚本/root/bin/,每5分钟检查⼀次,如果发现通过ssh登录失败次数超过10次,⾃动将此远程IP放⼊Tcp Wrapper

的⿊名单中予以禁⽌防问

#!/bin/bash

while true;do

cat /var/log/secure|awk '/Failed password/{ip[$(NF-3)]++}END{for(i in ip){if(ip[i]>=10)

{system("echo sshd:"i" >> /etc/" )}}}'

sleep 5m

done

34、为防⽌⼀个ip的恶意攻击,导致并发过⼤,请写出iptables命令防⽌⼀个ip的连接⼤于10,服务器ip为172.18.0.108

iptables -I FORWARD -d 172.18.0.108 -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT

35、如何查看⼆进制⽂件的内容?

hexdump -C XXX(⽂件名) #ASCII

⼗六进制和码显⽰

36、公司机房的服务器接近254台了,请你设计⼀个解决⽅案,如何划分⽹段,并实现业务平滑迁移。

答:第⼀种⽅案:变长⼦⽹掩码,加⼤ip地址的可⽤范围,全⽹分发 /etc/hosts ⽂件

第⼆种⽅案:增加核⼼交换机,在核⼼交换机划分VLAN,将新增的服务器加⼊新的VLAN中,全⽹分发 /etc/hosts ⽂件。

37、Linux 记录 log 的服务叫什么名字?

答:rsyslog

38、符号链接(软链接)与硬链接的区别是什么?

答:符号(或软)链接

1、⼀个符号链接指向另⼀个⽂件

2、⼀个符号链接的内容是它引⽤⽂件的名称

3、可以对⽬录进⾏

4、可以跨分区

5、指向的是另⼀个⽂件的路径

6、其⼤⼩为指向的路径字符串的长度

7、不增加或减少⽬标⽂件inode的引⽤计数

硬链接

1、创建硬链接会增加额外的记录项以引⽤⽂件

2、对应于同⼀⽂件系统上⼀个物理⽂件

3、每个⽬录引⽤相同的inode

4、创建时链接数递增

5、删除⽂件时:rm命令递减计数的链接;⽂件要存在,⾄少有⼀个链接数;当链接数为零时,该⽂件被删除

6、不能跨越驱动器或分区

39、⽹络装机⼯具 cobbler 了解吗,有哪些组件?

答:批量装机:pxe

40、请解释下 Telnet 和 SSH 的区别

答:Telnet:不安全,没有对传输的数据进⾏加密,容易被监听还有遭受中间⼈攻击,不能压缩传输,传输速度较慢

SSH:对数据进⾏了RSA加密,安全性⾼,ssh传输数据是经过压缩的,所以数据传输速度⽐较快。

41、在1-39 内取随机数

expr "$[RANDOM%39+1]" #RANDOM %39 0~38

随机数取值数范围

42、常见的Linux开机设置⽂件

答:/etc/fstab:实现开机⾃动挂载设备的配置⽂件

/etc/inittab:定义开机进⼊默认级别的配置⽂件

/etc/:定义开机⾃定义任务的配置⽂件

43、如何查看 http 的并发请求数与其TCP连接状态?

netstat -tan | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'

还有ulimit -n 查看linux系统打开最⼤的⽂件描述符,这⾥默认是1024,不修改这⾥ web 服务器修改再⼤也没⽤。修改

/etc/security/

soft nofile 10240

hard nofile 10240 重启后⽣效

44、提取出字符串Yd$C@M05MB%9Bdh7dq+YVixp3vpw中的所有数字?

利⽤awk函数gsub取出所有数字

echo "yd$C@M05MB%9&Bdh7dq+yVixp3vpw" | awk 'gsub(/[^[:digit:]]/," ",$0)'

利⽤for脚本循环取出所有数字

echo "yd$C@M05MB%9&Bdh7dq+yVixp3vpw" | awk '

{

string=$0

cat access_log | awk '{print $1}' | sort | uniq -c | sort -nr | head -5

46、⼯作⽇时间,每10分钟执⾏⼀次磁盘空间检查,⼀旦发现任何分区利⽤率⾼于80%,就执⾏wall警报。

利⽤ sed 提取分区利⽤率

vim

#!/bin/sh

[ `df | sed -nr '/devsd/s/.* ([0-9]+)%.*/1/p' |sort -nr | head -n1` -gt 80 ] && wall disk will be full

crontab -e

*/10 * * * 1-5 /bin/bash

利⽤ grep 加 cut 加 tr 提取分区利⽤率

vim

#!/bin/sh

disknum=`df | grep "^/dev/sd" | tr -s " " % | cut -d% -f5 | sort -nr | head -1`

[ "$disknum" -gt 80 ] && wall disk will be full

crontab -e

*/10 * * * 1-5 /bin/bash

47、查看/etc/配置⽂件没有注释的⽂件,空⾏和注释的⾏全都过滤掉。

grep -v '#' /etc/ | grep -v '^$'

48、使⽤sed命令对⽂件指定⾏加注释并备份原⽂件,⽐如对⽂件/etc/第13⾏到20⾏前⾯加#号,并备份/etc/

为/etc/。

sed - '13,20s/.*/#&/g' /etc/

49、如何在linux系统上查看BIOS版本、机器型号、序列号?查看⽹卡驱动版本?系统上查看载体为实体机(物理机)还是虚拟机?

biosdecode命令 BIOS版本

查看服务器型号: dmidecode | grep 'Product Name'

查看主板的序列号: dmidecode |grep 'Serial Number'

ethtool -i ens33 ⽹卡驱动版本

dmidecode |grep Product 查看载体为物理机还是虚拟机

50、简述linux下常⽤的⽂件系统有哪些,他们有什么区别?

1. EXT3

1)最多只能⽀持32TB的⽂件系统和2TB的⽂件,实际只能容纳2TB的⽂件系统和16GB的⽂件

2Ext3⽬前只⽀持32000个⼦⽬录

3Ext3⽂件系统使⽤32位空间记录块数量和i-节点数量

4)当数据写⼊到Ext3⽂件系统中时,Ext3的数据块分配器每次只能分配⼀个4KB的块

2. EXT4

EXT4Linux系统下的⽇志⽂件系统,是EXT3⽂件系统的后继版本。

1Ext4的⽂件系统容量达到1EB,⽽⽂件容量则达到16TB

2)理论上⽀持⽆限数量的⼦⽬录

3Ext4⽂件系统使⽤64位空间记录块数量和i-节点数量

4Ext4的多块分配器⽀持⼀次调⽤分配多个数据块

3. XFS

1)根据所记录的⽇志在很短的时间内迅速恢复磁盘⽂件内容

2)采⽤优化算法,⽇志记录对整体⽂件操作影响⾮常⼩

3 是⼀个全64-bit的⽂件系统,它可以⽀持上百万T字节的存储空间

4)能以接近裸设备I/O的性能存储数据

51、Read-only File system错误与解决⽅法?

问题原因:系统没有正常关机,导致虚拟磁盘出现⽂件系统错误。

解决⽅法:先使⽤blkid命令查看⽂件系统,重启系统后使⽤root进⼊单⽤户模式,运⾏ 4 -y /dev/sda

52、挂载本地yum源,起名为base。

mount -r /dev/cdrom /mnt

vim /etc/.d/

[base]

name=base

baseurl=file:///mnt/

gpgcheck=0

enabled=1

53、使⽤vim或者vi编辑⽂件,在前⾯显⽰⾏号,在家⽬录下设置变量,默认只对当前⽤户⽣效,如果想全局⽣效,可以写到/etc/profile

下。

vim /root/.vimrc

set nu

保存退出,执⾏source /root/.vimrc ⽣效

54、centos7修改hostname为mail,并把主机名mail终端提⽰符改为紫⾊,使⽤history命令查看历史使⽤命令显⽰⽇期。

hostnamectl set-hostname mail

vim /etc/profile.d/

PS1="[u@[e[1;35m]h[e[0m] W]$"

HISTTIMEFORMAT="%F %T"

保存退出,执⾏source /etc/profile.d/ ⽣效

55、写⼀个脚本/root/,备份mysql数据库,打成tar包放到/data/下,以备份时间命名,并只保留最近的2个tar包,做⼀个

定时任务,每个⽉第⼀个周六的00:01执⾏/root/。

备份mysql数据库到/data/下,并只保留/data/下最近的2个备份包,

chmod a+x /root/ 加上可执⾏权限

cat /root/

#!/bin/bash

tar -zcvf /data/backupMysql-`date '+%Y%m%d-%H%M%S'`. /var/lib/mysql/*

ls -t /data/* | awk 'NR>2' | xargs rm -rf

每个⽉第⼀个周六的00:01执⾏/root/,

systemctl restart crond 重启服务⽣效

cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

1 0 * * 6 root [ $(date +"%d") -lt 7 ] && /root/

56、如何将本地80端⼝的请求转发到8080端⼝,当前主机ip为192.168.16.1 ?

iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.16.1:8080

57、添加默认路由192.168.1.254

route add default gw 192.168.1.254

58、linux下清理系统缓存(cache)并释放内存。

sync

echo 3 > /proc/sys/vm/drop_caches

drop_caches的值可以是0-3之间的数字,代表不同的含义:

0:不释放(系统默认值)

1:释放页缓存

2:释放dentriesinodes

3:释放所有缓存

59、Linux命令详解⽤法_hash

hash 缓存表 系统初始hash表为空,当外部命令执⾏时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使⽤该命令

时,shell解释器⾸先会查看hash表,存在将执⾏之,如果不存在,将会去PATH路径下寻找,利⽤hash缓存表可⼤⼤提⾼命令的调⽤速率

hash #hash

显⽰缓存

hash –l #hash

显⽰缓存,可作为输⼊使⽤

hash –p path name #pathname

将命令全路径起别名为

hash –t name #name

打印缓存中的路径

hash –d name # name

清除缓存

hash –r #

清除缓存

60、chattr命令详解

A:即Atime,告诉系统不要修改对这个⽂件的最后访问时间。

S:即Sync,⼀旦应⽤程序对这个⽂件执⾏了写操作,使系统⽴刻把修改的结果写到磁盘。

a:即Append Only,系统只允许在这个⽂件之后追加数据,不允许任何进程覆盖或截断这个⽂件。如果⽬录具有这个属性,系统将只允许在这个⽬录下建⽴和

修改⽂件,⽽不允许删除任何⽂件。

b:不更新⽂件或⽬录的最后存取时间。

c:将⽂件或⽬录压缩后存放。

d:当dump程序执⾏时,该⽂件或⽬录不会被dump备份。

D:检查压缩⽂件中的错误。

i:即Immutable,系统不允许对这个⽂件进⾏任何的修改。如果⽬录具有这个属性,那么任何的进程只能修改⽬录之下的⽂件,不允许建⽴和删除⽂件。

s:彻底删除⽂件,不可恢复,因为是从磁盘上删除,然后⽤0填充⽂件所在区域。

u:当⼀个应⽤程序请求删除这个⽂件,系统会保留其数据块以便以后能够恢复删除这个⽂件,⽤来防⽌意外删除⽂件或⽬录。

t:⽂件系统⽀持尾部合并(tail-merging)。

X:可以直接访问压缩⽂件的内容。

常⽤命令展⽰

chattr +i /etc/ #:/etc/

加锁不能删除、修改、改名⽂件

lsattr /etc/ #

显⽰特定属性

chattr -i /etc/ #

解锁