基础面试题二

0.计算机操作系统中的buffer与cache有什么区别?(摘自知乎沈万马,木头龙)

①.缓冲区(buffer)
将数据写入到内存中,这个存放数据的内存空间在linux系统中一般被称为缓冲区(buffer),例如:写入到内存缓冲区,即写缓冲。
Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。

②.缓存区(cache)/ 快取
从内存里读取数据,这个存放数据的内存空间在linux系统中一般被称为缓存区(cache),例如:从内存读取,即读缓存。
Cache的核心作用是加快取用的速度,实现数据的重复使用。将经常访问的操作结果保存在缓存中可备随时使用,从而避免了总是执行读磁盘取数据等的一些操作,从而减轻了磁盘的压力。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

所以,如果你注意关心过存储系统的话,你会发现硬盘的读写缓冲/缓存名称是不一样的,叫write-buffer和read-cache。很明显地说出了两者的区别

# 补充1:大部分场景中,Buffer是特指内存中临时存放的IO设备数据——包括读取和写入;而Cache的用处很多,包括磁盘,RAID卡,CPU内部甚至浏览器中也有Cache。
# 补充2:Buffer(缓冲IO读写)并非用于提高性能,Cache的目的则是提高性能。
# 补充3:Buffer占用的内存空间不可以被强行回收,否则会出现IO错误,Cache占用的内存空间除了实现Buffer的部分以外都可以回收,代价是下一次读取需要从数据的原始位置(读写性能更低的设备,如硬盘)读取
# 补充4:在IO读写过程中,任何数据的读写都必然会产生Buffer缓冲。而Cache缓存,根据Cache算法,相当部分的数据不会被写入Cache,只有部分数据被写入以便于下次读取
# 补充5:不要误解Buffer就是用来写的,Cache就是用来读的,比如你想一批一批地处理读取,就可以用读buffer。写当然也可以用cache,比如你的写入有很高的随机性的时候。要根据场景的具体需要决定

1.创建用户user01,并给其用户设置一个24位的随机密码,要求密码包含数字,大小写字母及特殊符号,最后查看是否可以登录。

[root@wqh06 ~]# useradd user01 && mkpasswd -l 24 -c 5 -C 5 -d 5 -s 5| tee /root/passwd.txt | passwd --stdin user01 
[root@wqh06 ~]# cat passwd.txt 
095SyXV:J[5f^cysZg]6gjs.

2.Shell主要分为哪几类,并解释一下什么含义?

①.交互式Shell:等待用户输入执行的命令(终端操作,需要不断提示),如passwd命令以及交互脚本。
②.非交互式Shell:执行shell脚本或命令,执行结束后Shell自动退出,如ifconfig命令以及非交互脚本。
③.登陆式Shell:需要输入用户名和密码才能进入shell,如 su - root
④.非登录式Shell:不需要输入用户名和密码就能进入,如sh,bash命令

3.可以根据哪个文件对sudo提权?

/etc/sudoers

4.登录到普通用户,查看/etc/shadow文件的内容,发现查看不了,怎么办?(可以用几种方法)

①.执行su - root,切换到root用户下查看
②.提权,执行su - root,切换到root用户下,执行visudo插入以下语句:
user01 ALL=(ALL) /bin/cat
保存后,再Ctrl + d,执行sudo cat /etc/shadow,
需要交互式输入user01密码,即可查看

5.创建一个普通用户test02,只限制这个普通用户的删除权限,给予其他所有权限,使用sudo提权时无需输入自己的密码

[root@wqh06 ~]# useradd test02
[root@wqh06 ~]# id test02
uid=5015(test02) gid=5015(test02) groups=5015(test02)
[root@wqh06 ~]# visudo
插入以下内容:
test02  ALL=(ALL)   NOPASSWD: ALL,!/bin/rm

6.切换用户时,su 和su - 的区别

su:并没有加载一些环境变量配置文件,~/.bash_profile 和 /etc/profile
su -:加载了上述的环境变量配置文件,并切换到用户的家目录中。

7./etc/passwd文件以':' 为分割符, 分为7个字段,请说明一下每个字段的具体含义?

	 root	:	x	:	0	:	0	:	root	:	/root	:	/bin/bash
#	用户名	     密码占位符	       uid	       gid             注释信息	       家目录		登录shell	

8./etc/shadow文件以 ':' 为分割符, 分为9个字段,请说明一下每个字段的具体含义?

nginx:!!:18351:0:99999:7::6627567:
第一列:用户名
第二列:用户加密的密码(如果没有,则为!!或者*)
第三列:最后一次修改密码的时间,是1970年到现在的天数
第四列:密码最少使用天数,0即无限制
第五列:密码有效时间,99999天,273年
第六列:到期前7天提醒用户修改密码
第七列:过期后N天,强制提醒用户变更密码
第八列:从1970年起,账户在这个日期内可用,指定天数后失效,用户被锁定
第九列:标志保留,以后添加新的功能

9.存放用户账户信息的配置文件是?

/etc/login.def
/etc/default/useradd

10.用gzip命令打包/etc/目录

gzip不支持目录打包

11.查看gzip打包之后的/etc/hosts的文件内容,在不解压的情况下查看

[root@wqh06 ]# zcat hosts.gzip

12.使用zip打包/etc目录,包名为etc.zip

[root@wqh06 ]# zip -r etc.zip /etc

13.打包/etc/目录,命令以ip地址+当前时间方式的压缩包,比如: 10.0.0.100_2019-12-24_etc.tar.gz,并且不打包/etc/hosts和/etc/hostname文件

[root@wqh06 mnt]# tar zcf $(echo $(ifconfig eth0 | awk 'NR==2 {print $2}')_$(date +%F)_etc.tar.gz) /etc --exclude=/etc/{hosts,hostname}
-rw-r--r-- 1 root root 10159127 Mar 29 10:29 10.0.0.88_2020-03-29_etc.tar.gz

14.已知/etc/grub2.cfg文件是个软连接文件,在你不知道的情况下,请问怎么打包该文件的真实文件?忘了

[root@wqh06 mnt]# tar zcfh grub2.cfg.tgz  /etc/grub2.cfg 

15.在vim内操作如下指令,并写出指令对应的理解

(1)命令模式
   G             # 移动到文件尾部
   gg            # 移动到文件首部
   5gg           # 移动到第五行
   $             # 移动到本行末尾
   ^             # 移动到本行首部
   ctrl+f        # 向下翻页forth
   ctrl+b        # 向上翻页before
   yy            # 复制本行
   3yy           # 复制本行开始的三行
   p(小写)      # 粘贴在光标所在行之后的一行
   P(大写)      # 粘贴在光标所在行之前的一行
   ZZ            # 保存文档并退出
   dd            # 删除(剪切)当前行
   5dd           # 删除(剪切)本行开始的五行
   dgg		 # 删除(剪切)本行开始到第一行 
   dG            # 删除(剪切)本行开始到最后一行
   D             # 删除 光标所在位置 到 本行结束
   x(小写)      # 删除光标后的字符
   X(大写)      # 删除光标前的字符
   u             # 撤销
   Ctrl + r      # 恢复撤销
(2)命令模式进入编辑模式
   a              # 在光标处后一个插入字符
   A              # 在光标所在行的尾部插入字符
   r              # 替换一个字符
   R              # 无限替换字符
   cc		  # 删除光标所在行,进入编辑模式
   C	          # 删除 光标所在位置到本行结束,进入编辑模式
   i              # 在光标处插入字符
   I              # 在光标所在行首部插入字符
   o(小写)       # 在本行的下一行插入字符
   O(大写)       # 在本行的上一行插入字符
   s		  # 删除光标所在字符,进入编辑模式
   S  		  # 删除光标所在行,进入编辑模式
(3)末行模式
   :w                  # 保存           
   :q                  # 退出
   :q!                 # 强制退出
   :wq                 # 保存退出
   :wq!                # 保存强制退出
   :x                  # 保存
   :number(数字)      # 跳转到number行
   /                   # 搜索功能
   :set nu/nonu        # 设置行号
   :set ic/noic        # 设置忽略大小写
   :set list/nolist    # 设置结尾标识制表符
   :set ai/noai        # 设置ai自动对齐

16.linux内核引导时,从什么文件中读取要加载的文件系统信息?

/etc/fstab

17.若想每次开机都自动备份/etc/目录到/data目录下,该如何操作?

[root@wqh06 ~]# cat /etc/rc.d/rc.local 
\cp -r /etc /data/ && echo "备份成功,存入/data/中" >> /data/info.log || echo "备份失败" >> /data/info.log

18.说一下网卡配置文件每行的含义?

①HWADDR=00:0c:29:fe:f9:8a;	#主机MAC地址
②DEVICE=eth0;			#网卡设备名
③ONBOOT=yes;			#是否开机自启
④TYPE=Ethernet;			#网络类型,即以太网
⑤BOOTPROTO=none;		#网卡是如何获取到ip地址,网卡获取ip地址的方式
 					#a. dhcp 自动获取ip地址
					#b. none 不指定ip地址
					#c. static 固定的ip地址
⑥IPADDR=10.0.0.200;		#主机IP地址
⑦NETMASK=255.255.255.0;		#子网掩码
⑧GATEWAY=10.0.0.2;		#网关
⑨DNS1=223.5.5.5。		#DNS域名服务器

19.说出下面几个文件的作用?

/var/log/messages  		#系统日志信息文件
/var/log/secure  		#记录登录系统存取信息的文件,不论认证成功或失败都会记录
/dev/null 			#黑洞文件,无限接受数据的设备
/etc/passwd			#用户信息文件
/etc/issue      		#用户登录认证后的提示
/etc/rc.local  			#设置开机自启软件
/usr/local 			#自定义安装目录
/usr/bin 			#二进制文件,存放普通用户使用的命令
/usr/sbin 			#二进制文件,存放超级管理员使用的命令
posted @ 2020-04-29 21:25  拨云见日z  阅读(234)  评论(0编辑  收藏  举报