CentOS 题库
一. IT 信息知识
- 跳板机的功能?
登陆功能、账号管理、身份认证、资源授权、访问控制
- 在企业中 PXE 的主要作用?
可同时部署大量服务器
- 假设你是一家互联网公司的云计算工程师,你接到领导通知,我们公司需要将新项目上线,但是目前公司服务器数量有限,但又需要大量的服务器,为了节约公司成本,你的解决方案是?
购买公有云服务器,可在阿里云、华为云等公司购买。
二. 命令以及快捷键
!$ 输出上一次键入的参数
Alt+. 输出上一次键入的参数
Ctrl+l 清屏
clear 清屏
Ctrl+c 终止命令
shift+ctrl+t 打开终端
Alt+F2 打开终端
cd - 回到上一次的路径
cd ~ 回到当前用户的家目录
cd .. 回到上级目录
./ 当前目录
./* 当前目前的所有
^a 以 a 开头
vim 中的作用
0 和 $ 0 是行首,$ 是行末
h j k l h 是向左移动光标 j 是向下移动光标
k 是向上移动光标 l 是向右移动光标
ygg 复制到首行
yG 复制到末行
1,10s/ll/oo/ 从 1 到 10 行的 “ll” 替换 “oo”
,11s/ll/oo/g 从当前行到 11 行的全部 “ll” 替换 “oo”
/nihao 查找文件中有关 “nihao” 的所有字符
dd 删除本行
dG 删除到行末
Ctrl + v 切入可视块
o 在下一行输入
O 在上一行输入
i 在光标前插入内容
I 在行首输入内容
a 在光标后插入内容
A 在行首输入内容
三. 高级命令
- 查看 /etc/passwd 这个文件过,滤出这个文件中含有 nologin 的所有行?
grep nologin /etc/passwd
- 在企业中使用什么命令可对日志文件进行实时监控?
tailf [file]
- 找出硬盘中所有大于 2G 且以 .img 结尾的文件
find / -size +2G -name "*.img" -type f
- 找出 /etc 目录中所有的以 conf 结尾的文件,并拷贝到 /tmp/conf 目录中(请提前做好快照)
find /etc/ -type f -name "*.conf" -exec cp -r {} /tmp/conf/ \;
- 打印出所有用户的用户名, UID, GID, 登录 shell
awk -F: '{print $1,$3,$4,$7}' /etc/passwd
- 打印出 / 分区的使用百分比,纯数字.如: 80%, 打印效果为: 80 ( //df -Th 查看磁盘使用情况 )
df -Th | grep root | awk -F" " '{print $6}' | tr -d %
- 打印出 ens33 网卡的 IP, 只显示 IP
ip a | grep ens33 | grep inet | awk -F" " '{print $2}' | tr -d /24
- 带行号打印出 /etc/passwd 文件的第 5 行到第 10 行, 并按照 UID 从大到小排序
cat -n /etc/passwd | head | tail -6 | sort -t":" -k3 -rn
- 打印出 /etc/passwd 文件中所有包含 bash 的行
grep bash /etc/passwd
- 打印出 /etc/passwd 文件中所有不含 nologin 的行
grep -v nologin /etc/passwd
- 统计出 /etc/passwd 文件第二行的字符数 ( 含换行符 )
head -n 2 /etc/passwd | tail -1 | wc -c
- 统计出除 root 之外的所有可登录用户的个数
grep ^root -v /etc/passwd | wc -l
- 使用两种方法不打印 /etc/rc.local 文件的空行
grep ^$ /etc/rc.local -v
cat /etc/rc.local | tr -s "\n"
- 统计 /etc 目录下所有的软链接的个数 ( 不包含子目录下的软链接 )
ll /etc/ | grep ^l | wc -l
- 统计 /etc 目录下所有的软链接的个数
find /etc/ -type l | wc -l
- 打印出 /etc 目录下所有的非软连接文件
find /etc/ ! -type l
- 统计出所有用户每种 shell 的个数,只打印出前三名
cat /etc/passwd | awk -F: '{print $7}' | sort | uniq -c | sort -t" " -k1 | head -3
- 将 /var/log 目录下所有文件压缩备份到 /tmp/backup 目录,要注意后面的备份不能覆盖前面的备份,每天都备份
mkdir /tmp/backup
tar czf /tmp/backup/$(date +%F_%H-%M).tar.gz /var/log/*
- 删除系统中所有的 a.txt 文件,不区分大小写
find / -iname a.txt -exec rm -rf {} \;
- 打印出系统中所有的空白文件,不要打印目录文件
find / -empty -type f
- 如果计划任务中的命令有输出,会输出到终端?
不会输出到终端
- 每周日的凌晨3点,将/var/log下的所有内容压缩保存到/backup/log目录中,不要覆盖之前的备份
crontab -e
00 3 * * 0 /usr/bin/tar -caf /backup/log/`date +\%F`.tar.gz /var/log/*
四. 磁盘管理
-
添加三块磁盘
(1) 将第一块磁盘使用 fdisk 分为一个主分区,一个扩展分区,一个逻辑分区,将逻辑分区挂载使用
先分区,再格式化分区,最后挂载
(2) 将第二块磁盘使用 parted 分区,同上面的分区
parted /dev/sdc mklabel msdos
parted /dev/sdc -s mkpart p 0 1G
parted /dev/sdc -s mkpart e 1.1G 3G
parted /dev/sdc -s mkpart l 1.1G 2G
(3) 将第三块磁盘使用 parted 分区,磁盘标签类型为 gpt, 再分 5 个分区,并挂载到系统上
parted /dev/sdd mklabel gpt
parted /dev/sdd mkpart 1 0 2G
parted /dev/sdd mkpart 2 2G 4G
parted /dev/sdd mkpart 3 4G 6G
parted /dev/sdd mkpart 4 6G 8G
parted /dev/sdd mkpart 5 8G 10G
parted -l
mkfs.xfs /dev/sdd1
mkfs.xfs /dev/sdd2
mkfs.xfs /dev/sdd3
mkfs.xfs /dev/sdd4
mkfs.xfs /dev/sdd5
mount /dev/sdd1 /mnt/sdd1
mount /dev/sdd2 /mnt/sdd2
mount /dev/sdd3 /mnt/sdd3
mount /dev/sdd4 /mnt/sdd4
mount /dev/sdd5 /mnt/sdd5
(4) 将 /dev/sdb1 以只读方式挂载到 /mnt/sdb1 目录
mkdir /mnt/sdb1
mkfs.xfs /dev/sdb1
mount -o ro /dev/sdb1 /mnt/sdb1
(5) 在不卸载的情况下,将上题挂载选项修改为读写
mount -o remount,rw /mnt/sdb1
- 在 /mnt 目录下创建 /etc/passwd 的硬链接文件 pass.hard
ln /etc/passwd /mnt/pass.hard
ll -i /mnt/pass.hard /etc/passwd
17558147 -rw-r--r-- 2 root root 920 Oct 28 09:40 /mnt/pass.hard
17558147 -rw-r--r-- 2 root root 920 Oct 28 09:40 /etc/passwd
- 在 /mnt 目录下创建 /etc/passwd 的软链接文件 pass.soft
ln -s /etc/passwd /mnt/pass.soft
ll -i /etc/passwd /mnt/pass.soft
17558147 -rw-r--r-- 2 root root 920 Oct 28 09:40 /etc/passwd
17461857 lrwxrwxrwx 1 root root 11 Oct 31 21:31 /mnt/pass.soft -> /etc/passwd
- 硬链接不能对目录创建,所以目录没有硬链接.这句话对吗
对,Linux 文件系统的目录中有两个特殊的目录,一个是父目录,一个的当前目录。如果对目录做了硬链接,那么操作系统需要把这个目录下所有的文件都要做一次硬连接(复制一份过去),这样操作系统在访问这个链接的时候要不断去遍历,大大增加复杂度,而且很容易进入死循环。
- 文件 /mnt/pass.soft 内容和 /etc/passwd 文件一样, 所以他们是同一文件, 这句话对吗, 为什么?
不对,两者的 inode 号不同。
- 文件 /mnt/pass.soft 只是 /etc/passwd 文件的快捷方式, 故其没有自己的数据, 对吗, 为什么?
不对,软链接就是一个普通文件,知识数据块内容有点特殊,软链接有这自己的inode号以及用户数据块
- 文件 /mnt/pass.sof t权限为 777, 所以普通用户 tom 可以使用 vim 修改其内容,对吗,为什么?
不对,其链接源文件的权限为 644,tom 是只读权限。
- 对一个文件创建软链接会增加其链接数,对吗,为什么?
因为创建的是软链接,软链接是不被inode计数的。
- 剪切操作一定比复制操作快,对吗,为什么?
不一定。
在同一分区的情况下,剪切比复制快。剪切的时候 inode 无改变,只是路径改了一下。复制的时候是产生新的数据,新的 inode 信息。
在不同分区的情况下,复制比剪切快。两者都是把数据真正复制过去,而剪切还需要一步删除的动作。
- 使用两种方式配置 /dev/sr0 开机自动挂载到 /cdrom 目录
mkdir /mnt/cdrom
(1) vim /etc/fstab
UUID="2017-09-05-14-14-50-00" /cdroom iso9660 defaults 0 0
(2) vim /etc/rc.d/rc.local
mount /dev/sr0 /cdroom/
- 如果 root 用户无法删除一个文件,可能有哪些原因?
隐藏属性可能被设置了,lsattr 查看,用 chattr 配置权限。
有可能负载过高。
- 某分区显示可用空间 200G,但无法创建新文件,提示空间不足,是什么原因?
inode 号不够用了
inode 号不够用了
-
新的机器现有 4 块磁盘,分别是 sdb sdc sdd sde,每个磁盘个 10G 大小按企业要求完成下列操作
(1) 创建一个至少有两个 PV 组成的大小为 20G 的名为 testvg 的卷组 VG;要求 PE 大小为 16MB, 而后在卷组中创建大小为 5G 的逻辑卷 testlv;挂载至 /test 目录。
pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate -s 16MB testvg /dev/sdb
vgextend testvg /dev/sdc
lvcreate -n testlv -L 5G testvg
mkfs.xfs /dev/testvg/testlv
mount /dev/testvg/testlv /test/
mount -a
(2) 新建用户 apache,要求其家目录为 /test/apache,而后 su 切换至 apache 用户,创建一个 200M 大小的 test.txt 的文件
useradd apache -d /test/apache
su - apache
truncate -s 200M test.txt
(3) 复制 /etc/pam.d 目录至 apache 的家目录,并且统计 apache 家目录内有多少普通文件
mkdir /etc/pam.d/* /test/apache
find /test/apache/ -type f | wc -l
(4) 扩展 /test 目录能使用的容量为 7G,要求 apache 用户的文件不能丢失(最后记得查验文件是否丢失)
lvextend -L 7G /dev/testvg/testlv
(5) 执行 df -Th 命令发现根分区容量不足,现要将根分区使用容量扩容到 40G,该如何操作
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 20G 16G 4G 80% /
1.如果有新磁盘
(1)fdisk /dev/sdb创建一个20G的分区
(2)pvcreate /dev/sdb1
(3)vgextend /dev/mapper/ /dev/sdb1
(4)lvextend -l +100FREE /dev/mapper
(5)xfs_growfs /dev/mapper/centos-root
(6)df -Th
2.如果没有新磁盘
(1)拿另外空闲的逻辑卷来使用
(2)目录文件做备份
(3)取消挂载
(4)删除逻辑卷
(5)给root扩容
(6)重新把那个空闲的逻辑卷创建起来
五. 软件包管理
- 在网上查找 net-tools 的 rpm 包,并且将其上传到虚拟机,并进行安装(可能会有依赖)
在 rpmfind.net 下载,再使用第三方软件上传
rpm -ivh net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
- 使用两种方法查询验证是否安装了 net-tools 软件包
(1) rpm -q net-tools
(2) rpm -qa | grep "^net-tools"
- 查询安装 net-tools 软件包,在系统安装了哪些命令
rpm -ql net-tools | grep -E "/bin|/sbin"
- 执行命令 yum install vsftpd -y ,两种方法查询安装 vsftpd 安装了哪些配置文件
(1) yum list | grep vsftp
(2) rpm -qc vsftpd
- 查询 /var/ftp 目录是由哪个软件包安装出来的
(1) yum provides /var/ftp
(2) rpm -qf /var/ftp
- 卸载 vsftpd 软件包,但不卸载其他依赖软件包
rpm -e --nodeps vsftpd
- 如果不小心执行了rm -rf /usr/bin/sl , 应该怎么去进行恢复?
(1) 先卸载,在安装
rpm -e sl-5.02-1.el7.x86_64.rpm
rpm -ivh sl-5.02-1.el7.x86_64.rpm
(2) --froce 强制安装(相当于重装)
rpm -ivh --force sl-5.02-1.el7.x86_64.rpm
- 查看 cat 命令是由哪个软件安装的
rpm -qf $(which cat)
- 查看安装 cat 命令的软件还安装了哪些命令
rpm - qf $(which cat) | xargs rpm -ql | grep -E '/bin|/sbin'
- 列出所有已安装软件包中包含有关键词 “bash” 的软件名
rpm -qa | grep bash
- 统计所有已安装软件的数量
rpm -qa | wc -l
- 查看安装了 vsftpd 命令的软件还安装了哪些配置文件
rpm -qf $(which vsftpd) | xargs -I {} rpm -qc {}
- 卸载命令 netstat 的所属软件包
rpm -qf /usr/bin/netstat | xargs -I {} rpm -e {}
- 安装 mariadb-server 到服务器上
yum -y install mariadb-server
- 卸载 mariadb 软件,不要卸载依赖这个软件的其他软件
rpm -e --nodeps mariadb
- 下载 nginx 的 rpm 安装包到 /download 目录,不安装
yum install nginx --downloadonly --downloaddir=/download
- 查询 nginx 软件包的详细信息
rpm -qpi nginx-1.20.1-2.el7.x86_64.rpm
- 打印出 zabbix3.4yum 源仓库有多少可用的 rpm 包? 使用两种方法,最后打印数字
(1) yum repolist | grep repolist | cut -d':' -f2
(2)yum repolist | grep repolist | awk -F':' '{print $2}'
- 在本机只下载不安装 zabbix-agent,并且将包放到 /data 目录
mkdir /data
yum install --downloadonly --downloaddir=/data zabbix-agent
- 如果不小心删除了 /etc/my.cnf 配置文件,怎么恢复?写出步骤?
(1)找出其安装包
yum provides /etc/my.cnf 或者 rpm -qf /etc/my.cnf
(2)再从网上找rpm包来安装
mariadb-libs-5.5.56-2.el7.x86_64