• Linux面试常考命令


    Linux面试常考命令

    note:本文只总结了一些面试时会常考到的命令,一些简单命令如cp,cd,ls 等不做介绍。

    参考: Linux 命令大全 | 菜鸟教程 (runoob.com)

    实际使用中,我们可以通过

    man 命令 查看一个命令的说明。

    cat命令

    把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

    cat -n textfile1 > textfile2
    
    • 1

    把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

    cat -b textfile1 textfile2 >> textfile3
    
    • 1

    所以:>是覆盖式的输入,>>是append式的输入。

    注意

    cat不适合读取超大文件,因为他需要一次将文件加载进内存,所以去读超大文件时会导致服务器卡死。

    tail

    默认显示最后的10行。

    格式

    tail [参数] [文件]  
    
    • 1
    • -f 循环读取
    • -c<数目> 显示的字节数
    • -n<行数> 显示文件的尾部 n 行内容

    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

    tail -n -5 /test001/text001tail -n 5 /test001/text001 显示的结果相同,均是文件末尾最后 5 行内容。

    tail -n +5 /test001/text001 显示的内容为从第 5 行开始,直到末尾的内容。tail -n 后面的数字有效输入只有单个数字(5)或者加号连接数字(+5)两种。

    head

    head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

    命令格式:

    head [参数] [文件]  
    
    • 1
    • -c<数目> 显示的字节数。
    • -n<行数> 显示的行数。

    less和more

    less(重点)

    less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

    这里只展示几个参数:

    • /字符串:向下搜索"字符串"的功能
    • ?字符串:向上搜索"字符串"的功能
    • Q退出less命令。
    • 空格键 滚动一页
    • 回车键 滚动一行

    less功能很强大,不用一次将文件全部读取进来,所以比vi、cat等工具读取速度快很多。

    more

    Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。

    从第 20 行开始显示 testfile 之文档内容。

    more +20 testfile
    
    • 1

    区别

    more比cat强大,提供分页显示的功能,less比more更强大,随意翻页。more再管道中不能往前翻页。

    grep

    语法

    grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
    
    • 1
    • -c 或 --count : 计算符合样式的列数。
    • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
    • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
    • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
    • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
    • -o 或 --only-matching : 只显示匹配PATTERN 部分
    • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
    • -v 或 --invert-match : 显示不包含匹配文本的所有行。
    • -i 或 --ignore-case : 忽略字符大小写的差别。
    • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

    场景: 系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)

    解决:

    grep -n '2019-10-24 00:01:11' *.log
    
    • 1

    递归查找/etc/acpi 下含字符串"update"的文件,并打印出该字符串所在行的内容

    grep -r update /etc/acpi 
    
    • 1

    从文件内容查找与正则表达式匹配的行:

    $ grep –e "正则表达式" 文件名
    
    • 1

    从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行:

    $ find / -type f -name "*.log" | xargs grep "ERROR"
    
    • 1

    查找网络连接中非正常链接

    netstat -tn | grep -v ESTABLISHED查看系统中的非正常连接

    find

    语法

    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
    
    • 1

    -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

    -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

    -type c : 文件类型是 c 的文件。

    d: 目录

    c: 字型装置文件

    b: 区块装置文件

    p: 具名贮列

    f: 一般文件

    l: 符号连结

    将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

    # find . -name "*.c"
    
    • 1

    将当前目录及其子目录中的所有文件列出:

    # find . -type f
    
    • 1

    查找大于1G文件并删除

     find /APP/istester/ -type f -size +1G | [xargs](https://so.csdn.net/so/search?q=xargs&spm=1001.2101.3001.7020) rm
    
    • 1

    awk

    awk是三个创作人名字的组合,所以不用想为什么叫这个。

    一般用来处理文件的每一行。

    语法

    awk [选项参数] 'script' var=value file(s)
    或
    awk [选项参数] -f scriptfile var=value file(s)
    
    • 1
    • 2
    • 3

    script就是对应的命令脚本,也可以-f scriptfile 的方式从scriptfile读取awk命令来执行。

    -v 设置变量 ,例如-va=1,就是设置了一个a=1的变量。

    -F设置分隔符,默认是按照空格或者tab分割的,-F可以指定分割符,例如 -F,就是指定按照,分割。

    注意:

    awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
    
    • 1

    关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。

    • BEGIN{ 这里面放的是执行前的语句 }
    • END {这里面放的是处理完所有的行后要执行的语句 }
    • {这里面放的是处理每一行时要执行的语句}

    以下是示例:

    awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号
    
    • 1

    awk -v # 设置变量

    $ awk -va=1 '{print $1,$1+a}' log.txt #指定
    
    • 1
    awk -F  #-F相当于内置变量FS, 指定分割字符
    
    • 1

    过滤第一列大于2并且第二列等于’Are’的行

    $ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt    #命令
    #输出
    3 Are you
    
    • 1
    • 2
    • 3

    sort

    sort 可针对文本排序

    语法

    sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]
    
    • 1

    常用参数介绍:

    • -o<输出文件> 将排序后的结果存入指定的文件。

    • -r 以相反的顺序来排序。

    • -t<分隔字符> 指定排序时所用的栏位分隔字符。

    • -n 依照数值的大小排序。

    • -u 意味着是唯一的(unique),输出的结果是去完重了的。

    • -m 将几个排序好的文件进行合并。

    • -b 忽略每行前面开始出的空格字符。

    • -c 检查文件是否已经按照顺序排序。

    • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

    • -f 排序时,将小写字母视为大写字母。

    • [-k field1[,field2]] 按指定的列进行排序。sort testfile -k 2 之地那个对第二列的排序。

    uniq

    Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

    uniq 可检查文本文件中重复出现的行列。

    语法

    uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
    
    • 1
    • -c或–count 在每列旁边显示该行重复出现的次数。

    • -d或–repeated 仅显示重复出现的行列。

    • -u或–unique 仅显示出一次的行列。

    • [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;

    • [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

    注意:

    uniq命令只适用于已经排序号的文件,否则不起作用。

    所以使用时结合sort命令,例如统计出现次数最多的前三个字符。

    sort test.log | uniq -c |head -3| awk '{print $2}' 
    
    • 1

    netstat

    Linux netstat 命令用于显示网络状态。

    利用 netstat 指令可让你得知整个 Linux 系统的网络情况。

    语法

    netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
    
    • 1
    • -t或–tcp 显示TCP传输协议的连线状况。

    • -u或–udp 显示UDP传输协议的连线状况。

    • -n或–numeric 直接使用IP地址,而不通过域名服务器。

    • -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。

    • -a或–all 显示所有连线中的Socket。

    • -c或–continuous 持续列出网络状态。

    • -l或–listening 显示监控中的服务器的Socket。

    xargs

    xargs 一般是和管道一起使用。

    命令格式:

    somecommand |xargs -item  command
    
    • 1

    假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:

    # cat url-list.txt | xargs wget -c
    
    • 1
    find /sbin -perm +700 |ls -l       #这个命令是错误的
    find /sbin -perm +700 |xargs ls -l   #这样才是正确的
    
    • 1
    • 2

    ps

    Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

    语法

    ps [options] [--help]
    
    • 1
    • ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

    • -A 列出所有的进程

    • -w 显示加宽可以显示较多的资讯

    • -au 显示较详细的资讯

    • -aux 显示所有包含其他使用者的进程

    • USER: 行程拥有者

    • PID: pid

    • %CPU: 占用的 CPU 使用率

    • %MEM: 占用的记忆体使用率

    • VSZ: 占用的虚拟记忆体大小

    • RSS: 占用的记忆体大小

    • TTY: 终端的次要装置号码 (minor device number of tty)

    • STAT: 该行程的状态:

      • D: 无法中断的休眠状态 (通常 IO 的进程)
      • R: 正在执行中
      • S: 静止状态
      • T: 暂停执行
      • Z: 不存在但暂时无法消除
      • W: 没有足够的记忆体分页可分配
      • <: 高优先序的行程
      • N: 低优先序的行程
      • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
    • START: 行程开始时间

    • TIME: 执行的时间

    • COMMAND:所执行的指令

    ps -u root //显示root进程用户信息
    
    • 1
    ps -ef //显示所有命令,连带命令行
    
    • 1
    ps -ef| grep docker  //查看docker 相关进程。
    
    • 1

    top

    Linux top命令用于实时显示 process 的动态。

    使用权限:所有使用者。

    语法

    top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
    
    • 1

    一般就直接top。

    然后按shift+H,可以查看具体的线程信息

    free

    查看内存使用情况

    语法

    free [-bkmotV][-s <间隔秒数>]
    
    • 1

    free -ht -s

    • -h  以合适的单位显示内存使用情况

    • -t  显示内存总和列。

    • -s<间隔秒数>  持续观察内存使用状况。

    nohup

    nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

    语法格式

     nohup Command [ Arg … ] [ & ]
    
    • 1

    参数说明:

    Command:要执行的命令。

    Arg:一些参数,可以指定输出文件。

    &:让命令在后台执行,终端退出后命令仍旧执行。

    实例

    以下命令在后台执行 root 目录下的 runoob.sh 脚本:

    nohup /root/runoob.sh &
    
    • 1
  • 相关阅读:
    如何判断当前市场是否适合投资进而控制自己的仓位
    互动游戏是如何推动app变现的?
    LeetCode算法栈—验证图书取出顺序
    对于分辨率很高的图片(1205*1205)使用什么样的深度学习模型对其进行回归预测更准确高效一点
    《安富莱嵌入式周报》第291期:分分钟设计数字芯片,单片机版JS,神经网络DSP,microPLC,FatFS升级至V0.15,微软Arm64 VS正式版发布
    部署wordpress项目
    【手撕STL】bitset(位图)、布隆过滤器
    ExtJS-容器布局(Layouts)教程
    python局部变量与全局变量问题
    LVGL_基础控件btnmatrix
  • 原文地址:https://blog.csdn.net/yanghao201607030101/article/details/125890067