zoukankan      html  css  js  c++  java
  • Linux面试题

    常见的高频Linux面试题目如下:

    (1)最近登录的5个帐号

    当执行last -n 5命令时,输出的内容如下:

    则需要用awk输出名称即可,具体如下:

    last -n 5 | awk  '{print $1}'
    

    -n表示number,有多少行需要显示。读入有' '换行符分割的一条记录,然后将记录按指定的域分隔符划分域(默认为空白符),$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。  

    (2)用awk统计文本行数

    awk '{count++} END{print "user count is ", count}' /etc/passwd
     
    awk 'END{print "user count is " NR}' /etc/passwd

    NR表示awk开始执行程序后所读取的数据行数

    或者还可以使用wc命令,如下:

    wc -l /etc/passwd   

    其中的命令参数-l还可以是--lines,表示显示行数。

    (3)Test内容如下:

    zhangsan     80
    lisi         81.5
    wangwu       93
    zhangsan     85
    lisi         88
    wangwu       97
    zhangsan     90
    lisi         92
    wangwu       88
    

    要求输出格式:  

    name#######average#######total 
    zhangsan   xxx      xxx 
    lisi       xxx      xxx 
    wangwu     xxx      xxx  
    

    其中average为平均成绩,而total为总成绩  

    awk '{a[$1]+=$2;b[$1]++};END{for(i in a)print i,a[i]/b[i],a[i]}' test.txt  
    

    居然能用$1来当数据索引。END之前的逗号有没有都可以。  

    (4)这个文件夹里面每一层级都有个.svn隐藏文件夹,需要删除,使用如下命令:  

    $find . -type d -name "*.svn" | xargs rm -rf
    

    -type指定为d,而d表示为目录。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之档案亦逐一删除。

    (5)统计以p开始的行的个数:  

    find -name test.sh -type f -print|xargs awk '/^p/{count++}END{print count}'
    

    -type指定为f,表示普通文件。-print表示将结果输出到标准输出。

    使用了xargs,将找到的文件名做为参数传递给awk命令,如果输出的是一行行内容,就没有必要加xargs了,如下: 

    $cat a.txt |awk  '{print $2}'
    

    xargs 与exec作用相同 ,起承接作用。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等,如:

    find /bin -name bash -exec ls -l '{}' ;
    

    对匹配的文件执行该参数所给出的shell命令。 形式为command {} ;,注意{}与;之间有空格 

    (6)提取文件中含有"apa"的单词并输出到一个文件中

    find . -name "*.txt"|xargs grep -oE "[a-zA-Z]*apa[a-zA-Z]*"|awk -F: '{print $2}'
    

    sed 命令可以很好的进行行匹配,但从某一行中精确匹配某些内容,则使用 grep 命令并辅以 -o 和 -E 选项可达到此目的。其中 -o 表示“only-matching”,即“仅匹配”之意。光用它不够,配合 -E 选项使用扩展正则表达式则威力巨大。

    (7)端口被占用 

    在 Web 开发中,经常会遇到「端口被占用」的场景

    常规解决方案是:

    • 使用 lsof -i 命令查询占用端口的进程 PID

    • 利用 kill -9 PID 干掉目标进程

    虽然只有 2 步,我也觉得很繁琐,即:既要记住命令,又要输入两次 

    8、linux查看tcp命令 

    使用netstat命令,或者用神器lsof命令 

    9、使用Linux命令找出日志文件中访问量最大的top10 IP地址 

    检验你是否熟悉Linux命令的常见问题:使用 Linux命令找出日志文件中访问量最大的top10 IP地址 

    日志文件test.log格式如下: 

    时间  IP   ****
    

    linux 命令如下: 

    cat  test.log|awk -F " " '{print $2}'|sort|uniq -c|sort -nrk 1 -t' '|awk -F" " '{print $2}'|head -10
    

    问题剖析: 

    1.cat  *.log将文本内容打印到屏幕 

    2.使用awk命令可以按照分割符将一行分割为多个列,第一列用$1表示,第二列用$2表示,依次类推 

    awk -F " " '{print $2} // 表示用空格作为分隔符进行分割,打印出第2列
    

    3.sort 进行排序,默认是按照ascii码进行排序的 

    4.uniq -c 统计相邻的行的重复数量,结果是类似 3  127.13.13.13,前面的数字代码重复的行数 

    sort|uniq -c   // 统计重复的行数
    

    5.sort -n是按照数值进行由小到大进行排序, -r是表示逆序,-t是指定分割符,-k是执行按照第几列进行排序 

    sort -nr -k 1 -t ' '
    

    6.使用awk命令可以按照分割符将一行分割为多个列,第一列用$1表示,第二列用$2表示,依次类推 

    awk -F " " '{print $2}'    // 表示用空格作为分隔符进行分割,打印出第2列
    

    7.head -n表示取前n个 

    head -10
    

      

     

     

      

     

      

      

     

     

     

     

     

     

     

     

      

        

  • 相关阅读:
    bzoj 4007
    bzoj 2190
    bzoj 2186
    bzoj 2005
    bzoj 2721
    bzoj 1951
    CF919F
    CF1005F
    CF1019C
    bitset用法详解
  • 原文地址:https://www.cnblogs.com/extjs4/p/14436014.html
Copyright © 2011-2022 走看看