第二章 Linux命令
1 执行命令前置知识
-
Linux严格区分大小写
-
长短格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDY98EAG-1683776505760)(null)]
-
man命令
![image-20230507152614745](https://i-blog.csdnimg.cn/blog_migrate/7b17571c4657819c6f259566c19f751f.png)
![image-20230507152648161](https://i-blog.csdnimg.cn/blog_migrate/16196f7d3de739e8cb2b02da843d2bb1.png)
- 4个快捷键/组合键
- Tab键:对命令、参数或文件内容补全
- Ctrl+C:终止当前进程
- Ctrl+D:键盘输入结束
- Ctrl+L:清空终端内容(清屏)
2 常用系统工作命令
echo
用于在终端设备上输出字符串或变量提取后的值执行“echo 字符串” 或“echo 变量”就行,其中 变量”就行,其中 变量”就行,其中符号的意思是提取变量的实际值,以便后续的输出操作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LyU2E6zU-1683776505817)(null)]
date
用于显示或设置系统的时间与日期,语法格式为“date [+指定的格式]”。
![image-20230507153105828](https://i-blog.csdnimg.cn/blog_migrate/37591e3c6489c5aa1e46a1ffc318db1a.png)
![image-20230507153120018](https://i-blog.csdnimg.cn/blog_migrate/423b3ccc8a7c5e3ee20a1eefd088fe56.png)
![image-20230507153155312](https://i-blog.csdnimg.cn/blog_migrate/ef2cecc27f969208724d6d35e075d99a.png)
timedatectl
用于设置系统的时间
![image-20230507153232334](https://i-blog.csdnimg.cn/blog_migrate/2db23fde68fd2f4114a9d6326b9c9493.png)
![image-20230507153242425](https://i-blog.csdnimg.cn/blog_migrate/9ee1d66b645b4f4b508984e454264545.png)
reboot
用于重启系统
poweroff
用于关闭系统
wget
用于在终端命令行中下载网络文件
![image-20230507153404230](https://i-blog.csdnimg.cn/blog_migrate/b5ee243f25d24c814277169026459cbc.png)
![image-20230507153431850](https://i-blog.csdnimg.cn/blog_migrate/d9af1868799338cd7ef66cfcc8809c69.png)
ps
用于查看系统中的进程状态
![image-20230507153527115](https://i-blog.csdnimg.cn/blog_migrate/d571e9af317caa9f6f2e05006cad6fe8.png)
![image-20230507155415026](linux就该这么学.assets/image-20230507155415026.png)
![image-20230507155430628](https://i-blog.csdnimg.cn/blog_migrate/6b66a2bef6b0d87b6cebf3b82293aae2.png)
- linux中5种常见的进程状态:运行、中断、不可中断、僵死与停止。
- R(运行): 进程正在运行或在运行队列中等待。
- S(终端):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态
- D(不可中断): 进程不响应异步信号,即便用kill命令也不能将其中断
- Z(僵死) : 进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放
- T(停止): 进程收到停止信号后停止运行
pstree
用于以树状图的形式展示进程之间的关系
top
用于动态地监视进程活动及系统负载等信息,不同于ps命令,top 命令能够动态地查看系统状态,因此完全可以将它看作是 Linux 中“强化版的 Windows 任务管理器”。top 是相当好用的性能分析工具
![image-20230507155622350](https://i-blog.csdnimg.cn/blog_migrate/c135a20533635d3ca6a1338cd8e60d32.png)
![image-20230507155634438](https://i-blog.csdnimg.cn/blog_migrate/eb98360350010f1f29b0da110cbcb613.png)
![image-20230507155642175](https://i-blog.csdnimg.cn/blog_migrate/a853a9d3115354eaff841599df7ff07d.png)
nice
用于调整进程的优先级,语法格式为“nice 优先级数字 服务名称”。在 top 命令输出的结果中,PR 和 NI 值代表的是进程的优先级,数字越低(取值范围是 -20~19),优先级越高。
- 将bash服务的优先级调整到最高
![image-20230507155943965](https://i-blog.csdnimg.cn/blog_migrate/9e814d03415f9d5b479982018aa367fd.png)
pidof
用于查询某个指定服务进程的 PID 号码值
- 查询本机上sshd服务程序的PID
![image-20230507160057624](https://i-blog.csdnimg.cn/blog_migrate/2b66f9de93d70aad5f90296ecf6ea5a1.png)
kill
用于终止某个指定 PID 值的服务进程,但有时系统会提示进程无法被终止,此时可以加参数-9,表示最高级别地强制杀死进程。
![image-20230507160145883](https://i-blog.csdnimg.cn/blog_migrate/a17e4eb492f04062242e7d2e171f83b2.png)
killall
用于终止某个指定名称的服务所对应的全部进程,语法格式为“killall [参数] 服务名称”。
-
结束httpd服务的全部进程
-
&符号:如果有些命令在执行 时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加一个 &符号,这样命令将进入系统后台来执行
3 系统状态检测命令
ifconfig
用于获取网卡配置与网络状态等信息,主要查看的就 是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为 MAC 地址), 以及 RX、TX 的接收数据包与发送数据包的个数及累计流量
![image-20230507160521498](https://i-blog.csdnimg.cn/blog_migrate/74f00c04eab74141cf94ae14c8186057.png)
uname
用于查看系统内核版本与系统架构等信息, unix name,在使用 uname 命令时,一般要固定搭配上-a 参数来完整地查看当前系统的内核名称、主 机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型以及操作系统 名称等信息。
![image-20230507160622565](https://i-blog.csdnimg.cn/blog_migrate/28efaab7b2739dccc353c24671b6b4b8.png)
uptime
令用于查看系统的负载信息,它可以显示当前系统时间、系统已运行时间、启用终端数量以及 平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下 面加粗的信息部分),负载值越低越好。
![image-20230507160722338](https://i-blog.csdnimg.cn/blog_migrate/9e1c5721456c32b3d6fd945183314b06.png)
- 对于负载值,越低表示设备越空闲,而设备长期空闲是资源浪费,建议负载值保持在1左右,生产环境中不要超过5
free
用于显示当前系统中内存的使用量信息,语法格式为“free [-h]”, -h参数数以更人性化的方式(转化成计量单位)输出当前内存的实时使用量信息。
![image-20230507161057156](https://i-blog.csdnimg.cn/blog_migrate/2360577759e5fb4088757a6a38f65b00.png)
who
用于查看当前登入主机的用户终端信息,可以快速显示出所有正在登录本机的用户名称以及他们正在开启的终端 信息;如果有远程用户,还会显示出来访者的 IP 地址。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y24lJC7D-1683776505789)(null)]
last
用于调取主机的被访记录,Linux 系统会将每次的登录信息都记录到日志文件中,可以通过last命令翻阅
![image-20230507161302174](https://i-blog.csdnimg.cn/blog_migrate/3056b6417ad3dd7471c2097bd3b751d5.png)
ping
用于测试主机之间的网络连通性,语法格式为“ping [参数] 主机地址”。
![image-20230507161335987](https://i-blog.csdnimg.cn/blog_migrate/976087ddc19054356b61018f37559f98.png)
tracepath
用于显示数据包到达目的主机时途中经过的所有路由信息,语法格式为 “tracepath [参数] 域名”。
![image-20230507161518579](https://i-blog.csdnimg.cn/blog_migrate/4a851d85df64d076090e23fe0da7cd9e.png)
netstat
用于显示如网络连接、路由表、接口状态等的网络相关信息
![image-20230507161558406](https://i-blog.csdnimg.cn/blog_migrate/4f8e900b6971323bb29e86793c91881f.png)
![image-20230507161609300](https://i-blog.csdnimg.cn/blog_migrate/f3d819690dbf0076081453196634c26a.png)
history
用于显示执行过的命令历史,语法格式为“history [-c]”。在使用 history 命令时,可以使用-c 参数清空所有的命令历史记录。还 可以使用“!编码数字”的方式来重复执行某一次的命令。
![image-20230507161759318](https://i-blog.csdnimg.cn/blog_migrate/1522911636936b5501797e77a7c5f8e5.png)
- 历史命令会被保存到用户家目录中的.bash_history 文件中。Linux 系统中以点**(.)开头的 文件均代表隐藏文件**,这些文件大多数为系统服务文件
sosreport
用于收集系统配置及架构信息并输出诊断文档,有点像远程问诊
4 查找定位文件命令
pwd
用于显示用户当前所处的工作目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YT3yb9hy-1683776505850)(null)]
cd
令用于切换当前的工作路径。可以使用**“cd -”命令返回到上一次所处的目录**, 使用“cd…”命令进入上级目录,以及使用“cd~”命令切换到当前用户的家目录,抑或使用 “cd~username”命令切换到其他用户的家目录
ls
用于显示目录中的文件信息,语法格式为“ls [参数] [文件名称]”。使用 ls 命令的-a 参数 可以看到全部文件(包括隐藏文件),使用-l 参数可以查看文件的属性、大小等详细信息。将 这两个参数整合之后,再执行 ls 命令即可查看当前目录中的所有文件并输出这些文件的属性信息。
![image-20230507162205951](https://i-blog.csdnimg.cn/blog_migrate/8fb478e975b2b84a488c5068b0fe4214.png)
如果想要查看目录属性信息,则需要额外添加一个-d 参数。例如,可使用如下命令查看 /etc 目录的权限与属性信息。
![image-20230507162249124](https://i-blog.csdnimg.cn/blog_migrate/4da54663b4002e1fbe917f93f2d94860.png)
tree
用于以树状图的形式列出目录内容及结构。
![image-20230507162319141](https://i-blog.csdnimg.cn/blog_migrate/881045d999f80dc834aac835c2284c07.png)
find
用于按照指定条件来查找文件所对应的位置。
![image-20230507162504149](https://i-blog.csdnimg.cn/blog_migrate/0b63e1dda9674ece1180741f389c6808.png)
- 想获取该目录中所有以 host 开头的文件列表,可 以执行如下命令
![image-20230507162535359](https://i-blog.csdnimg.cn/blog_migrate/894b672b47aa9e75f73567701de1280f.png)
-
进阶实验:在整个文件系统中找出所有归属于 linuxprobe 用户的文件并复制到/root/findresults 目录中。 该实验的重点是“-exec {} ;”参数,其中的{}表示 find 命令搜索出的每一个文件,并且 命令的结尾必须是“;”。
locate
令用于按照名称快速搜索文件所对应的位置。使用 find 命令进行全盘搜索虽然更准确,但是效率有点低。在使用 locate 命令时,先使用 updateddb 命 令生成一个索引库文件,这个库文件的名字是/var/lib/mlocate/mlocate.db,后续在使用 locate 命令搜索文件时就是在该库中进行查找操作,速度会快很多。
第一次使用locate 命令之前,记得先执行updatedb 命令来生成索引数据库,然后再进行查找
![image-20230507162805607](https://i-blog.csdnimg.cn/blog_migrate/7f30891e98fba98bd48b88526f950aed.png)
- 使用locate搜索出所有包含“whereis”名称的文件所在位置
![image-20230507162922037](https://i-blog.csdnimg.cn/blog_migrate/9053544e4ef9cba82dfb05d4f8e1014f.png)
whereis
用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的 位置,语法格式为“whereis 命令名称”。whereis 命令也是基于 updatedb 命令所生成的索引库文件进行搜索,它与 locate 命令的区别是不关心那些相同名称的文件,仅仅是快速找到对应的命令文件及其帮助文件所 在的位置。
![image-20230507163610292](https://i-blog.csdnimg.cn/blog_migrate/e16fa28caf9cd2bb1f5e2c541197faac.png)
which
用于按照指定名称快速搜索二进制程序(命令)所对应的位置,which 命令是在 PATH 变量所指定的路径中,按照指定条件搜索命令所在的路径,如果我们既不关心同名文件(find 与 locate),也不关心命令所对应的源代码和帮助文件 (whereis),仅仅是想找到命令本身所在的路径。
![image-20230507163745646](https://i-blog.csdnimg.cn/blog_migrate/afbe9225a2750493ea4491bdb4aa9740.png)
5 文本文件编辑命令
cat
用于查看纯文本文件(内容较少的),追加-n参数,可以显示行号。
more
用于查看纯文本文件(内容较多的),会在最下面使用百分比的形式。
![image-20230507164007249](https://i-blog.csdnimg.cn/blog_migrate/8a7f3dd6b90d1ae01719c6c98d633520.png)
head
head 命令用于查看纯文本文件的前 N 行
- 查看文本中的前10行内容
![image-20230507164049995](https://i-blog.csdnimg.cn/blog_migrate/feec2c73a6eccb8d4b67f4b22416fe5a.png)
tail
用于查看纯文本文件的后 N 行或持续刷新文件的最新内容。
- tail 命令最强悍的功能是能够持续刷新一个文件的内容,当想要实时查看最新的日志文件 时,这特别有用,此时的命令格式为“tail -f 文件名称。
![image-20230507164149991](https://i-blog.csdnimg.cn/blog_migrate/bd86a164129d314544621f624888110c.png)
tr
用于替换文本内容中的字符“translate”,语法格式为“tr [原始字符] [目标字符]”。
-
把某个文本内容中的英文全部 替换为大写
wc
用于统计指定文本文件的行数、字数或字节数“word counts”
![image-20230507164437312](https://i-blog.csdnimg.cn/blog_migrate/b28da12ca6bb89629a44a9765effcf91.png)
-
在 Linux 系统中,/etc/passwd 是用于保存所有用户信息的文件,要统计当前系统中有多 少个用户,可以使用下面的命令来进行查询
stat
用于查看文件的具体存储细节和时间等信息“status”
- Linux 系统中的文件包 含 3 种时间状态,分别是 Access Time(内容最后一次被访问的时间,简称为 Atime),ModifyTime(内容最后一次被修改的时间,简称为 Mtime)以及 Change Time(文件属性最后一次被 修改的时间,简称为 Ctime)。
![image-20230507164554902](https://i-blog.csdnimg.cn/blog_migrate/a484d661ad4d0c06aa4a137aa8dc521c.png)
grep
用于按行提取文本内容。-n参数用来显示搜索到的信息的行号, -v参数用于反选信息(没有包含关键词的信息行)
![image-20230507164703597](https://i-blog.csdnimg.cn/blog_migrate/57723d8141950e7ebab53fc09b304996.png)
- 在 Linux 系统中,/etc/passwd 文件保存着所有的用户信息,而一旦用户的登录终端被设 置成/sbin/nologin,则不再允许登录系统,因此可以用 grep 命令查找出当前系统中不允许登 录系统的所有用户的信息
![image-20230507164913650](https://i-blog.csdnimg.cn/blog_migrate/83816e3120dcd3e57b67a0d8d640d886.png)
cut
用于按“列”提取文本内容, 语法格式为“cut [参数] 文件名称”。
-
系统文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的,
-
一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键 词即可。如果按“列”搜索,不仅要使用-f 参数设置需要查看的列数,还需要使用-d 参 数来设置间隔符号。接下来使用下述命令尝试提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间 隔符号的第一列内容
![image-20230507165413620](https://i-blog.csdnimg.cn/blog_migrate/26a76e8408cdf3f893d68036e122d8e7.png)
diff
用于比较多个文件之间内容的差异。
![image-20230507165623622](https://i-blog.csdnimg.cn/blog_migrate/ff133c36e5834ba4a3e972423d9634f4.png)
- 使用**–brief** 参数来确认两个文件是否相同,还可以使用**-c** 参数来详细比较出多个文件的差异之处。
![image-20230507165519732](https://i-blog.csdnimg.cn/blog_migrate/ea46ac708f8159d89628da5c73ea552d.png)
![image-20230507165536405](https://i-blog.csdnimg.cn/blog_migrate/0b6d32041de45070aa66e503b1172034.png)
uniq
令用于去除文本中连续的重复行,该命令的作用是用来去除文本 文件中连续的重复行,中间不能夹杂其他文本行(非相邻的默认不会去重)
![image-20230507165838538](https://i-blog.csdnimg.cn/blog_migrate/30731ebefaaf6844c9b83aaed6300f56.png)
sort
用于对文本内容进行再排序。
![image-20230507165911897](https://i-blog.csdnimg.cn/blog_migrate/9261a950a723eadee5b3f84bb0af338d.png)
- 与 uniq 命令不同,sort 命令是无论内容行之间是否夹杂有其他内容,只要有两个 一模一样的内容行,立马就可以使用-u 参数进行去重操作
![image-20230507165951029](https://i-blog.csdnimg.cn/blog_migrate/17b576b11b4b6723bce8ae0187d0a144.png)
-
进阶实验:下面的内容节选自/etc/passwd 文件中的前 5 个字段,并且进行了混乱排序。如果想以第 3 个 字段中的数字作为排序依据,那么可以用-t 参数指定间隔符,用-k 参数指定第几列,用-n 参 数进行数字排序。
![image-20230507170119803](https://i-blog.csdnimg.cn/blog_migrate/5552ef66d30c4818073af5d5d3ac9501.png)
6 文件目录管理命令
touch
用于创建空白文件或设置文件的时间
![image-20230507170311133](https://i-blog.csdnimg.cn/blog_migrate/50609ead904dddded95635d640baadf4.png)
-
先使用 ls 命令查看一个文件的修改时间,随后修改这个文件,最后再查看一下 文件的修改时间,看变化
-
如果不想让别人知道我们修改了它,那么这时就可以用 touch 命令把修改后的文件时间 设置成修改之前的时间
mkdir
用于创建空白的目录。除了能创建单个空白目录外,mkdir 命令还可以结合**-p** 参数来递归创建出具有嵌套层叠关系的文件目录。
cp
用于复制文件或目录。唯一需要记住的就是在复制目录时要加上-r 参数。
![image-20230507170804745](https://i-blog.csdnimg.cn/blog_migrate/d9edb63bb65e42d1994cc075eadb9013.png)
mv
用于剪切或重命名文件。
![image-20230507170836294](https://i-blog.csdnimg.cn/blog_migrate/72faa5cac0968134e8c132e09cfadafa.png)
rm
用于删除文件或目录。在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是 看到这种反复的确认信息,可在 rm 命令后跟上-f 参数来强制删除。另外,要想删除一个目录, 需要在 rm 命令后面加一个-r 参数才可以,否则删除不掉。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYWu9zNi-1683776505729)(null)]
- eg:
![image-20230507170928451](https://i-blog.csdnimg.cn/blog_migrate/75655d0e49359d94a7e23c614009a7ad.png)
dd
用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为“dd if= 参数值 of=参数值 count=参数值 bs=参数值”。
![image-20230507171018582](https://i-blog.csdnimg.cn/blog_migrate/3f02268f966d76e8347a453d31aa9dee.png)
-
用 dd 命令从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后保存成 名为 560_file 的文件。
file
用于查看文件的类型。
![image-20230507171131179](https://i-blog.csdnimg.cn/blog_migrate/bb239d82469114b5f6f9af585e4bb838.png)
tar
用于对文件进行打包压缩或解压。一般使用“tar -czvf 压缩包名 称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf 压缩 包名称.tar.gz”
![image-20230507171242101](https://i-blog.csdnimg.cn/blog_migrate/f8f6d5308db4838b42e4dcb9ead492af.png)
![image-20230507171253207](https://i-blog.csdnimg.cn/blog_migrate/ac797a52a1430118ff342629ea7b162f.png)
- 使用 tar 命令把/etc 目录通过 gzip 格式进行打包压缩,并把文件命名为 etc.tar.gz
![image-20230507171400127](https://i-blog.csdnimg.cn/blog_migrate/d1f08cb79b0f0e1f328d1e2b190f1307.png)
-
将打包后的压缩包文件指定解压到/root/etc 目录中