linux常用命令总结(一)

常见命令速查:Linux最常用命令50条【呕心沥血呐,望用之取之】

1.Linux 主要目录速查表:

在这里插入图片描述

2.常用 Linux 命令的基本使用

在这里插入图片描述

3. chmod:修改文件读取权限

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

用户类型

u=user 文件所属用户
g=group 文件所属的组
o=other 其他用户
a=all 所有用户,相当于 ugo

权限设置

+,赋权
-,去权
=,设置指定用户权限的设置,即将用户类型的所有权限重新设置

权限允许的行为

r 表示可读取,
w 表示可写入,
x 表示可执行,
X特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行

八进制数来指定权限

在这里插入图片描述
由上图可以看出,rwx如果对应位置有字母,则对应二进制位为1,最终使用对应的八进制数来表示权限即r=4 w=2 x=1

使用例子如:chmod 765 file
765 的解释如下:
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

其他参数说明:

-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本

例:chmod u+r a.txt 给文件所有者给予可读权

例:chmod 777 a.txt 所有用户所有权限

4. netstat:用于显示网络状态

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

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][–ip]
-a或–all 显示所有连线中的Socket。
-A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-c或–continuous 持续列出网络状态。
-C或–cache 显示路由器配置的快取信息。
-e或–extend 显示网络其他相关信息。
-F或–fib 显示路由缓存。
-g或–groups 显示多重广播功能群组组员名单。
-h或–help 在线帮助。
-i或–interfaces 显示网络界面信息表单。
-l或–listening 显示监控中的服务器的Socket。
-M或–masquerade 显示伪装的网络连线。
-n或–numeric 直接使用IP地址,而不通过域名服务器。
-N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
-o或–timers 显示计时器。
-p或–programs 显示正在使用Socket的程序识别码和程序名称。
-r或–route 显示Routing Table。
-s或–statistics 显示网络工作信息统计表。
-t或–tcp 显示TCP传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。

-v或–verbose 显示指令执行过程。
-V或–version 显示版本信息。
-w或–raw 显示RAW传输协议的连线状况。
-x或–unix 此参数的效果和指定"-A unix"参数相同。
–ip或–inet 此参数的效果和指定"-A inet"参数相同。

输入 netstat 命令后,界面会显示四项信息:协议、本地地址、外部地址及状态,如下图 :
在这里插入图片描述
大部分可选项用于决定这四项信息的显示状态。

比如-t或–tcp选项列出协议部分是 TCP 协议的连接;-u或–udp 选项列出协议部分是UDP 协议的连接
-n或–numeric (数值的;用数字表示的)选项禁用域名解析功能,本地地址部分和外部地址部分都直接显示IP地址,可以加快查询速度;使用-l或–listening 选项列出状态信息是正在监听的套接字。-a:–all,显示所有连接和监听端口。

需要注意:当想让状态栏中只有监听信息出现时,切记不要 -a 和-l选项并用,否则 netstat 会列出所有连接,而不仅仅是监听端口

举例如下:
在这里插入图片描述
netstat -au 表示列出 UDP 协议的所有连接
在这里插入图片描述
netstat -ant 表示列出 TCP 协议的所有连接,直接显示IP地址

当然,netstat的作用不止于此,它可以用于打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员等。

使用 -p 选项查看进程信息。使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。
在这里插入图片描述
-s或–statistics 显示网络工作信息统计表。按照每个协议来分类进行统计。默认的显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6 的统计信息。
在这里插入图片描述
使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。也可以使用 -n 选项禁止域名解析。
(-r或–route 显示Routing Table。)
在这里插入图片描述
-i 选项打印网络接口信息
在这里插入图片描述
-e或–extend 显示网络其他相关信息。-e和-i配合使用,可以显示用户友好的网络接口信息
在这里插入图片描述

5.grep:用于查找文件里符合条件的字符串

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或–silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。

grep的基本应用

  1. grep test *file :在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。
  2. grep --color test *file :在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,打印出该字符串的行并高亮我们查找的字符串,这里test 字符串变成了红色字体。
  3. grep -r test /etc/acpi :以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"test"的文件,并打印出该字符串所在行的内容
  4. grep -v test \*test*:反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行
  5. grep -n test *file:grep 不仅能搜索到字符串,还能展示出它们位于文件的第几行,这时我们可以使用-n选项来实现这个效果。输出内容的开头部分就是行位置信息
  6. grep -c test *file:希望 grep 不要输出搜索到的行的内容,而是简单地告诉我们到底搜索到了多少行
  7. grep -i TEST *file:希望不要区分字母的大小写,这样做可以提高搜索命中的概率
  8. grep -A 1 test *file \ grep -B 1 test *file \ grep -C 1 test *file:-A选项,是 After 的缩写,表示除了展示匹配行之外,还要展示出匹配行下面的若干行。而示例中的 -A 1 则表示还展示匹配行下面一行的内容;-B选项,是 Before 的缩写,表示除了展示匹配行之外,还要展示出匹配行上面的若干行。而示例中的 -B 1 则表示还展示匹配行上面一行的内容;-C选项,它是-A和-B选项的合体,表示除了展示匹配行之外,还要展示出匹配行上面和下面各若干行。而示例中的 -C 1 则表示还展示匹配行上面一行和下面一行的内容。
  9. grep -l test *file:当前目录下含有特定字符test的文件 grep -L test *file当前目录下不含有特定字符test的文件
  10. grep -w test *file:希望搜索含有 test 这个词的行,但是含有tests的词也会被搜索出来,而我们并不想看到这样的结果。当使用 -w选项,检索时就可以把tests之类的词排除在外
  11. grep -e ‘test 1’ -e test2 *file:-e开关指定多个模式,完成使用grep查找多个单词或字符串。这里需要注意只需要在包含空格的字符串周围使用引号

egrep、fgrep 简介

grep -E = egrep
grep -F = fgrep

在这里插入图片描述
POSIX 将正则表达式进行了标准化,并把实现方法分为了两大类:基本正则表达式(BRE)和扩展正则表达式(ERE)

两者的区别,更多的是元字符的区别。

  1. 在基本正则表达式(BRE)中,只承认“^”、“$”、“.”、“[”、“]”、“*”这些是元字符,所有其他的字符都被识别为普通字符。

  2. 而在扩展正则表达式(ERE)中,则在BRE的基础上增加了“(”、“)”、“{”、“}”、“?”和“+”、“|”等元字符。

需要特别注意的一点,只有在用反斜杠进行转义的情况下,字符“(”、“)”、“{”和“}”才会在扩展正则表达式(ERE)中被当作元字符处理,而在基本正则表达式(ERE)中,任何元字符前面加上反斜杠反而会使其被当作普通字符来处理

egrep、fgrep 的使用

egrep 的使用:当需要使用延伸的正则表达式查找时。比如在文本文档中搜索包含两个连续的“ p”字母的字符串:

egrep p\{2} fruits.txt
grep -E p\{2} fruits.txt

fgrep的使用:当搜索字符串中包含了不少特殊字符,而这些特殊字符恰好又是正则表达式预留的字符时,可以使用 fgrep 来避免烦琐的转义

fgrep '^test' roc.txt

返回具有^test的行

6.ps:查看进程

在这里插入图片描述

常用情形:

  1. 查找指定进程格式:
ps -ef | grep 进程关键字

-e 等于“-A” 显示所有进程
-f 显示程序间的关系
例如显示 php 的进程:

ps -ef | grep php
root       794     1  0  2020 ?        00:00:52 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data   951   794  0  2020 ?        00:24:15 php-fpm: pool www
www-data   953   794  0  2020 ?        00:24:14 php-fpm: pool www
www-data   954   794  0  2020 ?        00:24:29 php-fpm: pool www
...
  1. 用于查看当前所有的进程
ps -ef
  1. 显示所有包含其他使用者的行程
ps -aux 

更多见: Linux ps (英文全拼:process status)命令

7.重定向符号>、>> : 输出重定向

linux 中允许把命令执行结果(输在终端上的内容),重定向输出到一个文件中
命令 参数>文件名

  1. 把一个命令指定的结果不输出到屏幕,存到一个指定文件中
  2. 如果文件不存在,就创建新文件,如果文件存在就覆盖文件

命令 参数>>文件名

  1. 把一个命令指定的结果不输出到屏幕,存到一个指定文件中
  2. 如果文件不存在,就创建新文件,如果文件存在就在文件后面追加新内容

8. cat:查看文件内容

cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上,cat命令的一些基本功能:
在这里插入图片描述

显示文件

  1. cat linuxmi.txt:显示linuxmi.txt文件内容
  2. cat *:显示当前目录中的所有文件
  3. cat *.txt:仅显示目录中文本文件的内容
  4. cat /etc/hostname /etc/resolv.conf linuxmi1.txt:在终端中查看所有三个文件/etc/hostname、/etc/resolv.conf、linuxmi1的输出

创建新文件

  1. cat > linuxmi:创建名为 linuxmi的文件

输入上述命令后,输入要存储在文件中的文本。完成后,使用Ctrl + D保存并退出。之后,可以在终端中执行cat linuxmi命令来查看新创建文件的内容:

复制文件内容

  1. cat linuxmi1.txt > linuxmi2.txt:将一个linuxmi1.txt的输出复制到另一个名为linuxmi2.txt的文件中,如果目标文件尚不存在,它将创建目标文件,否则将覆盖目标文件。
  2. cat linuxmi1.txt >>linuxmi2.txt:将一个linuxmi1.txt的输出复制到另一个名为linuxmi2.txt的文件中,如果目标文件尚不存在,它将创建目标文件,否则将附加输出到目标文件中。

合并文件

  1. cat /etc/hostname /etc/resolv.conf /etc/hosts > linuxmi.txt:将/etc/hostname、/etc/resolv.conf和/etc/hosts文件的输出连接到另一个名为linuxmi.txt的文件。

其他用法

  1. cat -n linuxmi.py:使用-n显示文件输出的行号
  2. cat linuxmi | sort :将sort与cat命令结合使用,以按字母顺序对输出进行排序
  3. cat [linuxmi1] [linuxmi2] | sort > [linuxmi3] :在有多个文件的情况下,可以按字母顺序将输出连接到一个文件中:
  4. cat –s [linuxmi] : Cat -s命令允许合并那些连续的空行,并将它们显示为一个空行。
    等等

9.top:用于实时显示 process 的动态

top命令经常用来监控Linux的系统状况,比如cpu、内存的使用。使用权限:所有使用者。

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b][p]
d : 秒数:指定 top 命令每隔几秒更新。如果不用-d命令默认是 3 秒;
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交互式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
n : 指定 top 命令执行的次数,完成后将会退出 top
b : 使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
p :进程PID,仅查看指定 ID 的进程;
u 用户名:只监听某个用户的进程;

在 top 命令的显示窗口中,且交互模式下,可以用以下按键进行进一步操作:
? 或 h:显示交互模式的帮助;
P:按照 CPU 的使用率排序,默认就是此选项;
M:按照内存的使用率排序;
N:按照 PID 排序;
T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
r:按照 PID 给某个进程重设优先级(Nice)值;
q:退出 top 命令;

top命令直接使用执行结果分析

top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:
第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;
第二部分从第六行开始,显示的是系统中进程的信息;
在这里插入图片描述

第一部分是前五行,显示的是整个系统的资源使用状况
  1. 第一行:系统运行时间和平均负载
    1)当前时间
    2)系统已运行的时间
    3)当前登录用户的数量
    4)相应最近1分钟、5分钟和15分钟的系统平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)

  2. 第二行:显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用’t’切换显示

  3. 第三行:显示不同模式下所占cpu时间百分比,这些不同的cpu时间表示:
    us, user: 运行(未调整优先级的) 用户进程的CPU时间
    sy,system: 运行内核进程的CPU时间
    ni,niced:运行已调整优先级的用户进程的CPU时间
    wa,IO wait: 用于等待IO完成的CPU时间
    hi:处理硬件中断的CPU时间
    si: 处理软件中断的CPU时间
    st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
    可以使用’t’命令切换显示。

  4. 第四行:显示物理内存使用率。物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存(buffer)。

  5. 第五行:显示虚拟内存使用率(交换空间),虚拟内存显示如下:全部、已使用、空闲和缓冲交换空间(cache)。

第四五行合起来有点像’free’命令。

解释一下缓冲(buffer)和缓存(cache)的区别:

  1. 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
  2. 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
    简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。
第二部分从第六行开始,显示的是系统中进程的信息

PID:进程ID,进程的唯一标识符

USER:进程所有者的实际用户名。

PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。

NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

SWAP: 进程使用的虚拟内存中,被换出的大小,单位kb

RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:SHR是进程使用的共享内存。共享内存大小,单位kb

S:这个是进程的状态。它有以下不同的值:

D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。

top命令其他形式使用

  1. top -p 15273 :只想让 top 命令查看15273进程,显示此进程的各项信息(上面提到的)
  2. 在 top 命令的交互界面中按 “q” 键会退出 top 命令;也可以按 “?” 或 “h” 键得到 top 命令交互界面的帮助信息;还可以按‘k’键中止某个进程,按完k键后一般会要求输入想要终止的进程信息,然后提示输入信号,信号9代表强制中止
  3. 要改变某个进程的优先级,就要利用 “r” 交互命令。需要注意的是,我们能够修改的只有 Nice 的优先级,而不能修改 Priority 的优先级。输入"r"交互命令之后,提示输入要修改优先级的进程的PID,输入PID后,需要输入Nice的优先级号。

10. free:用于显示内存状态

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。类似top命令第一部分的四五行

参考

【1】菜鸟教程
【2】netstat 的10个基本用法
【3】Linux top命令的用法详细详解
【4】linux下free命令详解

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值