Linux面试常考命令

Linux面试常考命令

    • cat命令
    • tail
    • head
    • less和more
    • grep
    • find
    • awk
    • sort
    • uniq
    • netstat
    • xargs
    • ps
    • top
    • free
    • nohup

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

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

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

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

cat命令

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

cat -n textfile1 > textfile2

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

cat -b textfile1 textfile2 >> textfile3

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

注意

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

tail

默认显示最后的10行。

格式

tail [参数] [文件]  
  • -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 [参数] [文件]  
  • -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

区别

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

grep

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
  • -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

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

grep -r update /etc/acpi 

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

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

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

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

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

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

find

语法

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

-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"

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

# find . -type f

查找大于1G文件并删除

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

awk

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

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

语法

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

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

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

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

注意:

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

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

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

以下是示例:

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

awk -v # 设置变量

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

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

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

sort

sort 可针对文本排序

语法

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

常用参数介绍:

  • -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][输入文件][输出文件]
  • -c或–count 在每列旁边显示该行重复出现的次数。

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

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

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

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

注意:

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

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

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

netstat

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

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

语法

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
  • -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

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

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

ps

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

语法

ps [options] [--help]
  • 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进程用户信息
ps -ef //显示所有命令,连带命令行
ps -ef| grep docker  //查看docker 相关进程。

top

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

使用权限:所有使用者。

语法

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

一般就直接top。

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

free

查看内存使用情况

语法

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

free -ht -s

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

  • -t  显示内存总和列。

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

nohup

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

语法格式

 nohup Command [ Arg … ] [ & ]

参数说明:

Command:要执行的命令。

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

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

实例

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

nohup /root/runoob.sh &

你可能感兴趣的:(Linux,linux,服务器,运维,面试)