linux练习题面试必备持续更新
目录
- 基础部分
- 请详细描述linux系统从打开主机电源到进入登录界面整个过程的流程。
- 递归创建/data/oldboyedu
- 我想在/data/oldboyedu目录下面创建 一个oldboy.txt文件
- 向oldboy.txt加入内容 "I love studying Linux." (不少于2种方法)
- 说说这些特殊符号含义: \ > >> 2> 2>> #(井号) .(点) ..(两个点) ~ * $ |
- 找出文件含ing的内容
- 找出文件不含ing的内容
- 找到文件含ing内容并且显示行号
- 在当前目录查找含ing的文件夹并显示行号
- 修改别名xx命令为提示信息
- 取出文件ett.txt 的第30到40行的内容。
- 设定开机时自动挂载文件
- linux hosts 管理
- 说出下面几个文件的作用
- 统计/var/log下文件个数
- 描述buffer和cache的区别
- 压缩目录
- 解压
- 如何查看是否开启22端口,及查看sshd进程是否存在?
- 查看所有进程与某一个进程
- 查看所有端口占用情况
- 将/data目录下的修改时间是7天以前,并且大于100k的文件复制到/tmp目录下。
- 现将文件b.txt中的所有123替换成def,请问如何实现?
- 写出redhat中,配置网卡及dns的配置文件是什么?
- 什么是linux的运行级别,请描述linux的运行级别不同数字的含义?
- 简述linux无法上网的排查流程
- 软连接与硬链接区别
- 删除/etc/inittab中的空行或以#开头的行;
- 显示/etc/passwd中第1,3,5列
- 创建文件提示no space left on device 但是df -h还有空间这是什么原因?如何排查和解决。
- 通过df -h发现磁盘空间不足但是du -sh发现没有满,说出原因和排查解决过程。
- 显示当前系统日期为年月日~周几~小时
- null
- 查找出系统中大于50k且小于100k的文件,把文件中的oldboy替换为oldgirl。
- 显示/etc/services 文件中包含3306或1521的行(三种方法)
- 查找/oldboy 目录下的所有文件结尾为*.txt的文件,并将文件内容输出。
- 描述通配符与正则表达式的区别
- 使用ifconfig eth0 命令查看IP地址,请写出取出IP地址的方法,至少使用两种方法
- 第2章 错误总结
- 2.1 No such file or directory
- 2.2 command not found
- 2.3 rm: cannot remove `/oldboy/data/': Is a directory
- 2.4 find: Arguments to -type should contain only one letter
- 2.5 Firewall is not running.
- 2.6 ping: unknown host baidu.com
- 2.7 Package tree-1.5.3-3.el6.x86_64 already installed and latest version
- 2.8 Couldn't resolve host www.oldboyedu.com
- 2.9 This account is currently not available
- 2.10 Sorry, passwords do not match
基础部分
请详细描述linux系统从打开主机电源到进入登录界面整个过程的流程。
BIOS开机自检
mbr引导
grub菜单
加载内核
init进程
/etc/inittab
/etc/rc.d/rc.sysinit
/etc/re.d/rc
启动mingetty进程
登录界面
递归创建/data/oldboyedu
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
[root@pengzhiqiang /]# mkdir -p /data/oldboyedu
ps 如果之前有了文件夹不会覆盖
我想在/data/oldboyedu目录下面创建 一个oldboy.txt文件
全路径创建
[root@pengzhiqiang /]# touch /data/oldboyedu/oldboy.txt
今日文件内在创建
[root@pengzhiqiang /]# cd /data/oldboyedu/
[root@pengzhiqiang oldboyedu]# touch oldboy.txt2
[root@pengzhiqiang oldboyedu]# tree /data/
/data/
├── 11
└── oldboyedu
├── 444
├── oldboy.txt
└── oldboy.txt2
向oldboy.txt加入内容 "I love studying Linux." (不少于2种方法)
方法1
vi或vim修改
方法2
echo ' I love studying Linux.' >/data/oldboyedu/oldboy.txt
说说这些特殊符号含义: \ > >> 2> 2>> #(井号) .(点) ..(两个点) ~ * $ |
\ 转义字符 撬棍 脱掉马甲打回原形(或类似含义)
> 重定向符号 先清空文件内容,然后追加内容(或类似含义)
>> 追加重定向 追加到文件结尾(或类似含义)
2> 错误输出重定向
2>> 错误输出追加重定向
# 井号 注释或root用户命令提示符或sed分隔符(sed 's###g')
. 当前目录 或 正则任何一个字符 或 用于生效
. /etc/profile === source /etc/profile #这个可以不讲解
.. 当前目录的上级目录
~ 当前用户家目录或awk中表示匹配(awk '$1~/oldboy/' xxx)#这个可以不讲解
* 所有字符或任意字符或正则表达式表示前一个字符连续出现0次或0次以上
$ 取变量内容 或 正则以...结尾
| 管道 或 正则表示或者
找出文件含ing的内容
test.txt内容为:
trainning
fanbingbing
lidao
方法1
grep 'ing' test.txt #不加引号也行
找出文件不含ing的内容
grep -v 'ing' test.txt #不加引号也行
方法3
sed '/trainning/d' test.txt
方法4
awk '!/trainning/' test.txt
方法5
grep '^[^t]' test.txt
找到文件含ing内容并且显示行号
法1优先
[root@pengzhiqiang oldboyedu]# grep -n 'ing' test.txt
1:inning
2:fanbingbing
法2
[root@pengzhiqiang oldboyedu]# cat -n test.txt |grep 'ing'
1 inning
2 fanbingbing
在当前目录查找含ing的文件夹并显示行号
[root@pengzhiqiang oldboyedu]# grep -nr 'ing' ./
./t:1:ing
./test.txt:1:inning
./test.txt:2:fanbingbing
./ : 表示路径为当前目录.
-r 是递归查找
-n 是显示行号
修改别名xx命令为提示信息
1)命令行测试
alias rm='echo command is not allowd to use'
2)永久生效
写入/etc/profile
3)生效
source /etc/profile
取出文件ett.txt 的第30到40行的内容。
方法1
sed -n '30,40p' ett.txt
方法2
awk 'NR==30,NR==40' ett.txt
方法3
head -40 ett.txt|tail -11
方法4
awk 'NR>=30&&NR<=40' ett.txt
设定开机时自动挂载文件
在给系统新增了磁盘以后,如果重启系统我们会发现找不到存储了;但是使用fdisk -l可以看到存储空间,说明存储还在。这是因为关机后,挂载已经自动卸载掉了。我们当然可以手动再次将其挂载,但如果每次重启都需要这样手动操作会很不方便;因此我们可以利用自动挂载,这样系统每次开机的时候就可以自动将磁盘挂载上去了。
通过修改文件( /etc/fstab或fstab ),可以设定开机时自动挂载文件系统。
https://blog.csdn.net/buxiaoxindasuile/article/details/49612867?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-49612867.nonecase&utm_term=linux%20%E5%BC%80%E6%9C%BA%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%E7%9A%84%E6%84%8F%E4%B9%89
linux hosts 管理
在linux系统中,当LAN(局域网)内没有条件记案例DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置( /etc/hosts)文件(请写全路径)
hosts文件的用bai途:将一些常用的网址域名与du其对应的IP地址建立一个关联“数据库”zhi,当用户在浏览器中输入dao一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址。
当建立dns服务器的时候,或者要搭建本地网的时候就用的着了,跟windows下面的host文件是一样的作用,而且可以用来屏蔽广告和木马。
一旦找到,系统会立即打开相应的网页,如果没有找到,则系统会将url提交到DNS服务器进行IP地址解析,etc/host代表当前计算机主机名。
说出下面几个文件的作用
/var/log/messages 系统默认日志(系统日志也行)
/var/log/secure 系统安全日志或用户的登录情况
/etc/hosts ip地址与主机名(域名)对应关系 或 用于解析主机名
/etc/fstab 开机自动挂载
/var/spool/cron/root 定时任务配置文件
/etc/rc.local 开机自启动配置
统计/var/log下文件个数
ls /var/log|wc -l
find /var/log|wc -l
描述buffer和cache的区别
写buffer
读cache
压缩目录
如何把/data目录下所有包含oldboy的目录(可能目录的目录的目录里还有oldboy目录) 目录都打包出来。要求:解压打包后的目录结构不能改变 。
方法1
find /data -type d -name "oldboy" |xargs tar zcf /tmp/oldboy.tar.gz
方法2
find /data -type d -name "oldboy" -exec tar zcf /tmp/oldboy.tar.gz {} \;
方法3
tar zcf /tmp/oldboy.tar.gz `find /data -type d -name "oldboy"`
tar zcf /tmp/oldboy.tar.gz $(find /data -type d -name "oldboy")
解压
tar zcf 创建压缩包 或zcvf
xf 解压 或 zxvf
tf 查看 或 ztf
-C 解压到指定目录
--exclude 排除
--exclude-from或-X 根据文件内容排除文件
zip -r 压缩目录
如何查看是否开启22端口,及查看sshd进程是否存在?
22端口是ssh服务的,你只要bai启动ssh服务就可以了,可以执行命du令“/etc/init.d/sshd start”。然后zhi用netstat -antulp | grep ssh看是否能看到相dao关信息就可以了。
查看所有进程与某一个进程
ps -ef |grep sshd
查看所有端口占用情况
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat -tunlp | grep 端口号
https://www.runoob.com/w3cnote/linux-check-port-usage.html
将/data目录下的修改时间是7天以前,并且大于100k的文件复制到/tmp目录下。
方法1
find /data -type f -mtime +7 -size +100k -exec cp {} /tmp \;
方法2
cp ` find /data -type f -mtime +7 -size +100k ` /tmp
cp $( find /data -type f -mtime +7 -size +100k ) /tmp
方法3
find /data -type f -mtime +7 -size +100k |xargs cp -t /tmp
方法4
find /data -type f -mtime +7 -size +100k |xargs -i cp {} /tmp
现将文件b.txt中的所有123替换成def,请问如何实现?
sed 's#123#def#g' b.txt
写出redhat中,配置网卡及dns的配置文件是什么?
网卡: /etc/sysconfig/network-scripts/ifcfg-eth0
DNS: /etc/resolv.conf
什么是linux的运行级别,请描述linux的运行级别不同数字的含义?
Linux的运行级别就是linux运行状态
0 关机
1 单用户模式
2 多用户模式没有NFS
3 命令行模式 文本模式 多用户模式
4 没有使用
5 图形化界面模式 桌面模式
6 重启
简述linux无法上网的排查流程
1.ping baidu.com 检查是否能上网
2.ping 223.5.5.5 检查是否DNS问题
3.ping 网关 检查是否配置或其他问题
故障原因:
1.检查配置文件
2.虚拟网络编辑器
3.vmware服务
4.vmware虚拟网卡问题
a:xshell连不上的问题
第一步:检查网络适配器,是否禁用vmware的虚拟机网卡
第二步:检查vmware net8的地址是否为10.0.0.1
第三步:检查系统的vmware服务是否启动
第四步:检查虚拟机的网络适配器是否连接
第五步:在vmware控制台登录linux,查看是否有ip地址
b:ping 不通百度的问题
第一步:是否能ping通外网ip,223.5.5.5,能ping通,说明是dns配置问题
第二步:是否能ping通网关,route -n去查网关,如果能ping通网关,你可能被上网行为管理器限制,还有一种可能,你配置了一个错误的网关!
c:ping 不通vmware网关的问题
第一步:重启vmware nat服务
第二步:把虚拟机的网络适配器,先断开,再连接
第三步:进入vmware linux系统,systemctl restart network(重复3次)
企业里面上不了网:
核心思路:根据网络拓扑网,一级一级的确认网络是否正常!
第一步:检查物理是否正常
第二步:ping网关
第三步: ping公网ip
第四步:ping www.baidu.com
tracert -d www.qq.com
第五步:ping 自己服务器
排查八部曲:
1.ip地址是否正确
2.网卡配置是否正确
3.关闭centos7 NetworkManager
4.vmware 编辑 虚拟网络编辑器
5.vmware 服务正常运行
6.vmware网卡问题(windows)
7.wifi 热点软件
8.修改过 NAT设置 网关IP: 10.0.0.254 重启服务器
A thousand journey is started by taking the first step.
软连接与硬链接区别
【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
删除/etc/inittab中的空行或以#开头的行;
方法1
egrep -v '^$|^#' /etc/inittab
方法2
sed -r '/^$|^#/d' /etc/inittab
方法3
awk '!/^$|^#/' /etc/inittab
显示/etc/passwd中第1,3,5列
awk -F ":" '{print $1,$3,$5}' /etc/passwd
创建文件提示no space left on device 但是df -h还有空间这是什么原因?如何排查和解决。
inode满了
找出系统中大于1M的目录,确认后再删除
通过df -h发现磁盘空间不足但是du -sh发现没有满,说出原因和排查解决过程。
原因:
文件没有彻底删除导致的(硬链接数为0,进程调用数不为零)
排查:
lsof |grep delete
解决:
重启对应的服务
显示当前系统日期为年月日~周几~小时
data +%F_%w_%H_%M_%S
查找出系统中大于50k且小于100k的文件,把文件中的oldboy替换为oldgirl。
find -type -size +50k -size -100k |xargs sed -i ‘s#oldboy#oldgirl#g‘
显示/etc/services 文件中包含3306或1521的行(三种方法)
1.32.1 方法一:grep -n
grep -n "3306\|1521" /etc/services
1.32.2 方法二:egrep -n
egrep -n "3306\|1521" /etc/services
grep -E "3306|1521" /etc/services
查找/oldboy 目录下的所有文件结尾为*.txt的文件,并将文件内容输出。
方法1:
cat /oldboy/*.txt
方法2:
find /oldboy -type f -name “*.txt” | xargs cat
方法3:
find /oldboy/ -type f -name "*.txt" -exec cat {} \;
描述通配符与正则表达式的区别
基本上解释就是通配符是系统命令使用,一般用来匹配文件名或者什么的用在系统命令中。而正则表达式是操作字符串,以行尾单位来匹配字符串使用的。
还有一点需要注意的是:在通配符和正则表达式中有其不一样的地方,在通配符中可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用*来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。
使用ifconfig eth0 命令查看IP地址,请写出取出IP地址的方法,至少使用两种方法
方法1:
ifconfig eth0 | grep “10.0.0” | awk -F “:” ‘{print $2}’ | awk -F “ ” ‘{print $1}’
方法2:
ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Bcast:" '{print $2}'
第2章 错误总结
2.1 No such file or directory
没有此文件或目录
2.2 command not found
找不到此命令
2.3 rm: cannot remove `/oldboy/data/': Is a directory
要删除的是个非空目录
2.4 find: Arguments to -type should contain only one letter
查找:-type的参数应该只包含一个字母
2.5 Firewall is not running.
防火墙没启动
2.6 ping: unknown host baidu.com
网不通
未知主机baidu.com
2.7 Package tree-1.5.3-3.el6.x86_64 already installed and latest version
安装了这个软件最新版本的包
2.8 Couldn't resolve host www.oldboyedu.com
DNS不可达
无法解析主机www.oldboyedu.com
2.9 This account is currently not available
该帐户目前不可用
2.10 Sorry, passwords do not match
对不起,密码不匹配
非学,无以致疑;非问,无以广识