• 基础面试题二


    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 			#二进制文件,存放超级管理员使用的命令
    
  • 相关阅读:
    Navicat连接mysql提示1251解决方案
    js获取select下拉框选中的值
    Windows下安装Mysql数据库
    ASP.NET MVC API以及.Core API进行安全拦截和API请求频率控制
    myeclipse 10.7中文破解版 下载安装看着一篇就够了
    Runtime exception at 0x004000bc: invalid integer input (syscall 5)
    MARS(MIPS汇编程序和运行时模拟器)
    如何将本地的代码上传到github
    JavaWeb基础
    大学什么时候开学?这款小程序告诉你!
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/12804907.html
Copyright © 2020-2023  润新知