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 #二进制文件,存放超级管理员使用的命令