zoukankan      html  css  js  c++  java
  • 面试题-3

    基础相关

    1.使用创建文件的命令一次性批量创建(oldboy1,oldboy2,oldboy3,oldboy4,oldboy5)这几个文件
    [root@yinwucheng ~]# touch oldboy{1..5}
    
    2.使用一条命令创建/lao/nan/hai
    [root@yinwucheng ~]# mkdir -p /lao/nan/hai
    
    3.只显示/etc/passwd文件的第五行(3种方法)
    [root@yinwucheng ~]# awk 'NR==5' /etc/passwd
    [root@yinwucheng ~]# grep '^lp' /etc/passwd
    [root@yinwucheng ~]# sed -n 5p /etc/passwd
    
    4.阐述软硬链接的区别

    软链接:相当于windows的快捷方式,删除软链接对源文件无影响,删除源文件则软链接失效
    硬链接:和我们通常的备份相似,删除硬链接源文件照常可以用,他们都是同一个inode

    5.阐述linux系统下命令的执行流程

    第一步:看命令是不是以绝对路径的方式运行
    第二步:判断是不是设置了别名
    第三步:看命令是外置命令还是内置命令
    第四步:若是内置命令,可直接执行,若是外置,再次查看是否有缓存 hash
    第五步:通过$PATH变量查找命令,若有 可直接执行,没有的话会报错 command not found

    awk相关

    1.取出IP地址(3种方式)
    [root@yinwucheng ~]# ifconfig eth0 |awk 'NR==2{print $2}'
    [root@yinwucheng ~]# ifconfig eth0 |sed -n 2p |sed -r 's#^.*inet (.*)net.*$#1#g'
    [root@yinwucheng ~]# ifconfig eth0 |grep 'inet ' | awk '{print  $2}'
    
    2.筛选出/etc/passwd文件中以a开头,并且以nologin结尾的行
    [root@yinwucheng ~]# grep '^a.*nologin$' /etc/passwd
    
    3.将“access.log”上传至你的linux服务器

    (1)统计出该文件出现过多少个IP地址

    [root@yinwucheng ~]# awk '{print $1}' access.log |sort -n |uniq -c |sort -n |wc -l
    

    (2)统计该文件内某一时间内,用户访问的次数最多(例如[01/Aug/2019:11:12:18 在第四列),并按照倒序进行排序

    [root@yinwucheng ~]# awk '{print $4}' access.log |sort -n |uniq -c |sort -n
    

    (3)过滤出所有用户请求是GET的行(第六列),并统计每种状态的数量

    [root@yinwucheng ~]# awk '{print $6}' access.log |sort -n |uniq -c |sort -n
    
    4.取出/etc/passwd中以“:”为分隔符,第三列(用户UID)以0结尾的行
    [root@yinwucheng ~]# awk -F ":" '{print $3}' /etc/passwd |grep '0$'
    
    5.使用hostnamectl查看当前系统信息,取出系统名称与系统版本信息
    [root@yinwucheng ~]# hostnamectl |awk 'NR==1{print $3}'
    [root@yinwucheng ~]# hostnamectl |awk 'NR==7{print $4,$5}'
    
    6.使用"netstat -lntp"查看当前linux服务器开放的网络端口,过滤出远程连接服务关键字"sshd",取出该服务所占用的端口号"22"
    1.获取所有的内容,包含我们需要的值
    2.筛选出需要的行
    3.取出对应的值
    [root@yinwucheng ~]# netstat -lntop |grep 'sshd' |awk '{print $4}' |awk -F ":" '{print $NF}'
    [root@chengyinwu ~]# netstat -lntp |grep 'sshd' |awk -F "[ :]+" '{print $5}'
    

    vim相关

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

    (1)命令模式

    G:到文件最后一行首行	  gg:到文件顶端首行   5gg:到文件第5行   
    $到这行的行尾	  ^到这行的开头	ctrl+f:向下翻页	   ctrl+b:向上翻页
    yy复制	3yy:复制3行	 p(小写):粘贴至光标下边	  P(大写):粘贴至光标上边    
    dd:删除光标所在行   5dd:删除光标以下5行
    dG:从光标删至文件结尾	D:删除并保留空行		
    u:撤销操作   x(小写):删除光标所在处一个字符		X(大写):删除光标前一个字符	
    r:替换光标所在的一个字符	R:可以连续替换	
    

    (2)命令模式进入编辑模式

    	i:进入编辑模式					I:进入编辑模式,光标跳转到当前行的开头					a:向右一个字符插入		
    	A:到文件行尾进行插入				o(小写):下一行插入				O(大写)上一行插入
    

    (3)末行模式

    	:w保存当前所操作的			:w!强制保存				   :q退出
    	:q!强制退出					:wq保存并退出					:wq!强制保存并退出
    	:x保存并退出					ZZ(shift+zz)保存并退出		  :number显示行号
    	/进入搜索					n:向下查找						  N:向上查找
    	:set nu 显示行号
    
    2.在根下创建一个data目录,复制/etc/passwd文件到data目录下,使用vim打开/data目录下的paaswd,光标跳转至最顶端

    (1)1行到5行的bin替换成oldboy

      :1,5s#bin#oldboy#g
    

    (2)将匹配到的第一行root替换成123

      :1s#root#123#g
    

    (3)将所有nologin替换成student

      :%s#nologin#student#g
    

    (4)可视块模式删除整个文本所有行的第一个字符

       ctrl+v
    

    (5)可视块模式整个文本所有行的行首插入#号

    ctrl+v
    

    (6)可视行模式删除第3行到第6行

    shift+v  选中3-6行   按d
    

    (7)将该文件另存为家目录

    :w /root/file.txt
    

    VIM相关

    1:vim四种模式都是如何进入的
    普通模式  vim
    编辑模式  i
    命令模式  :  /
    视图模式  ctrl+v  shift+v
    
    2:vim中如何显示行号
    :set nu
    
    3:对比/etc/sysconfig/network-scripts/ifcfg-lo与/etc/sysconfig/network-scripts/ifcfg-eth0(ens32)的区别

    image.png

    [root@www ~]# cat proxy.conf
    server {
    	Listen 8080;
    	Server_Name vim.OldboyEDU.com;
    	location / {
    		proxy_pass http://127.0.0.1:8080;
    		proxy_set_header Host $http_host;
    		proxy_set_header X-Forward-for;
    		proxy_intercept_errors on;
    		proxy_next_upstream error timeout;
    		proxy_next_upstream_timeout 3s;
    		proxy_next_upstream_tries 2;
    		error_page 500 502 403 404 = /proxy_error.html;
    	}
    	location = /proxy_error.html {
    		root /code/proxy;
    	}
    }
    
    4.修改vim.OldboyEDU.com为vim.oldboy.com
    :%s#OldboyEDU#oldboy#g
    
    5.在server_name行下插入一行 root /code;
    o向下插入一行   输入root /code;
    
    6.复制5-14行的内容,然后将其粘贴到14行下面
    shift+v  选中5-14行 y复制
    14gg  p粘贴
    
    7.删除与proxy_set_header相关的两行全部删除.
    定位到这两行 依次用dd删除
    
    8.如上操作完成后,在13-20行前面加上#号
    ctrl+v  选中13-20行开头那列  按I --->输# --->敲ESC
    
    9.在普通模式下复制Server_Name所在的行以及该行的下两行,一共三行内容,粘贴至root /code/proxy;这一行的下面
    3yy ---> p
    
    10.删除21-23的行,然后保存当前文件
    shift+v  选中21-23行 --->敲D ---> :w保存
    

    用户管理相关

    1.root的UID与gid是多少
    [root@yinwucheng ~]# id
    uid=0(root) gid=0(root)
    
    2.用户信息文件etc/passwd由 ':' 为分割符, 分为7个字段,其中每个字段分别代表的含义是
    root:x:0:0:root:/root:/bin/bash
        1.root用户
        2.密码占位符
        3.用户uid
        4.组gid
        5.注释信息
        6.用户家目录
        7.登录的shell
    
    3.用户密码文件/etc/shadow由 ':' 为分割符, 分为9个字段,其中每个字段分别代表的含义是
    cyw:!!:18113:0:99999:7:2:66275:
    第一列:cyw   用户名称
    第二列:!!    密码为一长串字符,!!则表示无密码
    第三列:18113 最近一长变更密码,从1970年到现在,过了多少天
    第四列:0     密码最少使用天数,0无限制
    第五列:99999  密码最长使用天数,默认99999不过期
    第六列:7      密码到期前,系统会在密码前7天提前变更密码
    第七列:2      密码到期后,密码过期后2天强制提示变更用户密码
    第八列:66275  账户失效时间,从1970年起,账户在这个日期前可使用,到期后失效
    
    4.每个用户都有一个唯一的UID,UID是怎么区分用户的
    用户UID        系统定义
    0              超级管理员,最高权限,有极强的破坏能力
    1-200          系统用户,用来运行系统自带的进程,默认已创建
    201-999        系统用户,用来运行用户安装的程序,此类用户无法登陆系统
    1000+          普通用户,正常可以登陆系统的用户,权限较小,执行的任务有限
    
    5.统计/etc/passwd的总行数
    wc -l /etc/passwd
    
    6.新建用户u1、u2,密码是redhat,属于同一个附加组grp1,用户u2不允许登陆到系统中
    groupadd grp1
    useradd u1 -G grp1 -s /bin/bash
    passwd u1
    
    useradd u2 -G grp1 -s /sbin/nologin
    passwd u2
    
    7.查看用户u1的uid和gid信息
    id u1
    uid=5003(u1) gid=5004(u1) groups=5004(u1),5003(grp1)
    
    8.创建组distro,其GID为2019
    groupadd -g 2019 distro
    
    9.创建用户olddir,其ID号为1005,基本组为distro
    useradd olddir -u 1005 -g distro -s /bin/bash
    
    10.创建用户oldman,其ID号为1100,家目录为/home/linux
    useradd oldman -u 1100 -d /home/linux -s /bin/bash
    
    11.给用户oldman添加密码,密码为oldboyedu
    echo "oldboydey" |passwd --stdin oldman
    
    12.创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    [root@yinwucheng ~]# useradd slackware -u 2002 -g distro -G peguin -s /bin/bash
    
    13.退出root账户,用admin账户登录,在其家目录下建立一个名为oldboy的文件,并用长格式列出oldboy文件

    image.png

    14.创建用户harry,要求harry的uid为3000,shell设置为不可登陆shell,观察如下文件/etc/passwd , /etc/shadow,
    [root@yinwucheng ~]# useradd harry -u 3000 -s /sbin/nologin
    
    [root@yinwucheng ~]# cat /etc/passwd |tail -1
    harry:x:3000:3000::/home/harry:/sbin/nologin
    [root@yinwucheng ~]# cat /etc/shadow |tail -1
    harry:!!:18113:0:99999:7:::
    
    15.shadow文件中密码为*号和!!代表什么?
    * 代表账户已锁定
    !!代表无密码
    

    awk相关

    1.查看/etc/passwd文件里的第一行,将其倒置输出,要求输出结果为“/bin/bash❌0:0:root:/root:root”
    [root@yinwucheng ~]# head -1 /etc/passwd |awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}'
    
    2.只显示/etc/passwd文件的第五行
    [root@yinwucheng ~]# awk 'NR==5' /etc/passwd
    
    3.使用ifconfig查看网卡信息,仅筛选出IP地址
    [root@yinwucheng ~]# ifconfig |awk 'NR==2{print $2}'
    
    4.将access.log"上传至你的linux服务器
    	(1)统计出该文件IP地址出现的次数,并按正序对其进行排序
    [root@yinwucheng ~]# awk '{print $1}' access.log |sort -n |uniq -c |sort -n
    	(2)统计该文件内HTTP状态返回码出现的次数(例如200,404,403,在第九列),并按照倒序进行排序
    [root@yinwucheng ~]# awk '{print $9}' access.log |sort -n |uniq -c |sort -nr
    	(3)过滤出所有状态返回码是200的行,并将这些返回码为200行的全部替换成300
    [root@yinwucheng ~]# grep -o '200' access.log |sed 's#200#300#g
    
    5.匹配/etc/passwd里包含root关键字的行(要求至少两种方法,分别使用awk和grep)
    方法1:
    [root@yinwucheng ~]# awk '/root/' /etc/passwd
    方法2:
    [root@yinwucheng ~]# grep 'root' /etc/passwd
    
    6.以“:”为分隔符,取出/etc/passwd第一行的最后一列的内容
    [root@yinwucheng ~]# awk -F ":" 'NR==1 {print $NF}' /etc/passwd
    
    7.取出以“:”为分隔符,第三列(用户UID)以0结尾的
    方法1:
    [root@yinwucheng ~]# awk -F ":" '{print $3}' /etc/passwd |grep '0$
    方法2:
    [root@yinwucheng ~]# awk -F ":" '$3~/0$/  {print $3}' /etc/passwd
    
    8.使用hostnamectl查看当前系统信息,取出kernel内核版本信息(如3.10.0-693.2.2.el7.x86_64)
    [root@yinwucheng ~]# hostnamectl |awk 'NR==9 {print $3}'
    
    9.使用"netstat -lntp"查看当前linux服务器开放的网络端口,过滤出远程连接服务关键字"sshd",取出该服务所占用的端口号"22"
    [root@yinwucheng ~]# netstat -lntp |grep 'sshd' |awk '{print $4}' |awk -F ":" '{print $NF}'
    
    10.用awk获取/etc/passwd文件中第三行的倒数第二列字段
    [root@yinwucheng ~]# awk -F ":" 'NR==3 {print $(NF-1)}' /etc/passwd
    

    用户权限相关

    1.对名为fido的文件用chmod 551 fido进行了修改,则它的权限信息是(C)
    A.-rwxr-xr-x
    B.-rwxr--r--
    C.-r-xr-x--x
    D.-rw-r-xr-x
    
    2.改变文件所有者的命令为(C)
    A.chmod
    B.touch
    C.chown
    D.cat	
    
    3.linux中,文件权限读,写,执行的三种标志符号依次是(A)
    A.rwx
    B.rox
    C.orx
    D.wrx
    
    4.如果执行命令"chmod 746 file.txt"那么该文件的权限是?(A)
    A.rwxr--rw-
    B.rw-r--r--
    C.--xr--rwx
    D.jrwxr-r--
    
    5.linux文件权限一共10位长度,分成四段,第三段代表的含义是
     (指所属于这个组的成员对于这个文件具有,可读可写可执行的权限 )
    
    6.当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1 是否可修改和删除?
       强制可以修改也能删除
    
    7.复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限
    [root@yinwucheng ~]# cp /etc/fstab /var/tmp/
    [root@yinwucheng ~]# cd /var/tmp/
    [root@yinwucheng /var/tmp]# useradd wangcai
    [root@yinwucheng /var/tmp]# groupadd sysadmins
    [root@yinwucheng /var/tmp]# ll 
    total 4
    -rw-r--r--. 1 root root 501 Aug  6 20:07 fstab
    [root@yinwucheng /var/tmp]# chown wangcai:sysadmins fstab
    [root@yinwucheng /var/tmp]# chmod 660 fstab
    [root@yinwucheng /var/tmp]# ll
    -rw-rw----. 1 wangcai sysadmins 501 Aug  6 20:07 fstab
    
    8.创建下面的用户、组和组成员关系,用户natasha,使用admins作为附属组,用户harry,也使用admins作为附属组,用户sh,不可交互登录系统,natasha,harry,sh密码都是centos
    [root@yinwucheng ~]# groupadd admins
    [root@yinwucheng ~]# useradd natasha -G admins
    [root@yinwucheng ~]# useradd harry -G admins
    [root@yinwucheng ~]# useradd sh -s /sbin/nologin
    [root@yinwucheng ~]# echo "centos" |passwd --stdin natasha
    Changing password for user natasha.
    passwd: all authentication tokens updated successfully.
    [root@yinwucheng ~]# echo "centos" |passwd --stdin harry
    Changing password for user harry.
    passwd: all authentication tokens updated successfully.
    [root@yinwucheng ~]# echo "centos" |passwd --stdin sh
    Changing password for user sh.
    passwd: all authentication tokens updated successfully.
    
    9.修改jack的uid为666,用户名改为jacky
    [root@yinwucheng ~]# useradd jack -u 777
    [root@yinwucheng ~]# usermod jack -u 666 -l jacky
    [root@yinwucheng ~]# id jacky
    uid=666(jacky) gid=7782(jack) groups=7782(jack)
    
    10.把jacky的密码设置为123
    [root@yinwucheng ~]# echo "123" |passwd --stdin jacky 
    Changing password for user jacky.
    passwd: all authentication tokens updated successfully.
    
    11.切换控制台,用jacky帐户登录系统
    su - jacky
    
    12.将rose加入到root组,用命令查看是否加入成功,查看/etc/group中root组中有无rose
    [root@yinwucheng ~]# useradd rose
    [root@yinwucheng ~]# usermod rose -G root
    [root@yinwucheng ~]# grep 'root' /etc/group
    root:x:0:rose
    
    13.以root身份建一个目录/test,查看这个目录的默认权限是?
    [root@yinwucheng ~]# ls -ld /test/
    drwxr-xr-x. 2 root root 6 Aug  6 17:55 /test/     755
    
    14.进入/test目录中,建一个文件abc,查看其默认的权限为?
    [root@yinwucheng /test]# ls -ld abc 
    -rw-r--r--. 1 root root 0 Aug  6 17:56 abc       644
    
    15.转换为普通用户jacky登录,看能否进入/test目录,能否在里面创建文件,能否用vim编辑abc文件并保存退出
    可以进去   不能创建文件  没权限   编辑保存不了
    
    16.新建一个用户oldwoman,密码123,授予该用户可以使用ls命令操作任何目录,切换到该用户验证权限
    [root@yinwucheng ~]# useradd oldwoman
    [root@yinwucheng ~]# echo "123" |passwd --stdin oldwoman
    Changing password for user oldwoman.
    passwd: all authentication tokens updated successfully.
    [root@yinwucheng ~]# visudo
    加入  oldwoman  ALL=(ALL)     /usr/bin/ls
    [root@yinwucheng ~]# visudo -c
    /etc/sudoers: parsed OK
    
    17.将oldwoman用户的权限改为可以使用所有命令,并切换至该用户创建文件oldwoman.txt验证
    oldwoman  ALL=(ALL)     ALL
    vim oldwoman.txt
    
    18.使用"ls -l /"以长格式查看根目录,写出每一列所代表的含义

    image.png

    19.当用户mysql对/data/DB目录无读权限,但是拥有写和执行权限,意味着能做哪些操作,无法做哪些操作?
    可以创建,可以删除文件
    不能查看目录下面有哪些文件 相当于不能使用ls
    
    20.将root密码修改为"bgx123"
    passwd 
    bgx123
    
  • 相关阅读:
    R语言--自定义函数证明中心极限定理
    R基础for、while、自定义函数
    R基础绘图、时间序列生成
    装R包(package)error:(as ‘lib’ is unspecified)installation of package had non-zero exit status
    GraphPad Prism中文显示错误
    SAS学笔记_chapter_library
    excel表格打印时铺满纸张
    SAS学笔记_chapter1_基本概念
    支持向量机课(SVM)(五)--SMO算法(省去公式推导,只讲其思想)
    Web前端学习-第六课HTML篇
  • 原文地址:https://www.cnblogs.com/yinwu/p/11369399.html
Copyright © 2011-2022 走看看