小白也能学会的 Linux 基础命令(下)

小白也能学会的 Linux 基础命令(下)
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

1. 磁盘内存相关命令

1.1 df 命令

命令:df
作用:查看磁盘的空间 (disk free)
语法:df [-h]
选项:-h 表示可读性较高的形式展示大小
在这里插入图片描述
这几列依次是:Filesystem ⇒ 磁盘名称、Size ⇒ 总大小、Used ⇒ 被使用的大小、Avail ⇒ 剩余大小、Use% ⇒ 使用百分比、Mounted on ⇒ 挂载路径(相当于 Windows 的磁盘符)

1.2 free 命令

命令:free
作用:查看内存使用情况
语法:free -m
选项:-m 表示以 MB 为单位查看(1G = 1024MB,1MB = 1024KB)
在这里插入图片描述
如上图所示,系统实际可用内存是不是 free 部分呢,不是的,系统实际内存占用以及可用内存有如下几个加减法:

used = total - freetotal = used + free
☆ 实际内存占用:used - buffers- cachedtotal - free- buffers - cached
☆ 实际可用内存:buffers + cached + free

计算过程如下:

第1行 Mem 数据:total 内存总数:1862 used 已经使用的内存数:800 free 空闲的内存数:1061
shared 共享内存数:4 buffers Buffer Cache 块设备缓存区内存数:40
cached Page Cache文件缓存内存数:352

第2行-/+ buffers/cache:
-buffers/cache 的内存数:407 (等于第 1 行的 used - buffers - cached)
+buffers/cache 的内存数: 1454 (等于第 1 行的 free + buffers + cached)
可见 -buffers/cache 反映的是被程序实实在在吃掉的内存,而 +buffers/cache 反映的是可以挪
用的内存总数。

第 3 行数据是 Swap 交换分区,也就是我们通常所说的虚拟内存。可以在内存不够使用的情况下当
临时内存来使用,交换分区并不是越大越好,一般话它就等同于实际内存的大小。

根据公式计算出结果有 1M 的误差。

2. 与文件内容相关命令

2.1 head 命令

命令:head
作用:查看一个文件的前 n 行,如果不指定 n,则默认显示前 10 行。
语法:head -n 文件路径【n 表示数字】
示例代码:显示 install.log 文件的前 3 行
在这里插入图片描述

2.2 tail 命令

命令:tail
作用:查看一个文件的末 n 行,如果 n 不指定默认显示后 10 行
语法:tail -n 文件路径【n 表示数字】
示例代码:显示 install.log 文件的最后 5 行
在这里插入图片描述
示例代码:显示 install.log 文件的最后 10 行
在这里插入图片描述

2.2.1 tail 命令扩展

语法:tail -f 文件路径
作用:查看一个文件动态变化的内容【变化的内容不能是用户手动增加的,必须要求是计算机帮我们写入的内容】
说明:tail -f 命令一般用于查看系统的日志
手动示例演示:
在这里插入图片描述
退出 tail -f 卡屏状态可以按下 ctrl+c 键,在命令行中 c 不再表示 copy,而表示 cancel(取消)

2.3 less 与 more 命令

2.3.1 less 命令(推荐)

命令:less
作用:查看文件,按下辅助功能键(数字 + 回车、空格键(向下翻页)、上下方向键)查看更多
语法:less 需要查看的文件路径
流程:不是加载整个文件,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。
示例代码:使用 less 命令查看 /root/install.log 的文件内容
在这里插入图片描述
在退出的时候只需要按下 q 键 (quit)即可(此时 ctr l+ c 不好使)扩展命令:

/关键字,搜索成功后,文档中的所有关键字都会高亮。
n:next,向下切换关键字
N:shift + n,向上切换关键字

2.3.2 more 命令

命令:more
作用:查看文件,按下辅助功能键(空格、字母键 b 等价于 back)查看更多
语法:more 需要查看的文件路径
流程:more 在读取文件时,默认已经加载文件的全部内容。
在这里插入图片描述
在退出的时候只需要按下 q 键 (quit)即可(此时 ctr l+ c 不好使)

2.4 wc 命令

命令:wc,wc = word count
作用:用于统计文件内容信息(包含行数、单词数、字节数)
语法:wc -lwc 需要统计的文件路径
-l:表示 lines,行数(以回车/换行符为标准)
在这里插入图片描述
-w:表示 words,单词数 依照空格来判断单词数量
在这里插入图片描述
-c:表示 bytes,字节数(空格,回车,换行)
在这里插入图片描述
特别注意:wc 命令选项可以混在一起搭配使用,但选项的顺序不影响输出结果,第一个是行数,第二个是单词数,第三个字节数。
在这里插入图片描述

2.5 du 命令

命令:du
作用:查看文件或目录 (会递归显示子目录) 占用磁盘空间大小
语法:du [-sh]
选项:

  1. -s:summaries,只显示汇总的大小,统计文件夹的大小
  2. -h:表示以高可读性的形式进行显示,如果不写 -h,默认以 KB 的形式显示文件大小

统计 /root/install.log 文件大小
在这里插入图片描述
统计 /etc 目录大小
在这里插入图片描述

2.6 find 命令

命令:find
作用:用于查找文档(其选项有 55 个之多)
语法:find 路径范围 选项1 选项1的值 [选项2 选项2的值…]
选项:

  1. -name:按照文档名称进行搜索(支持模糊搜索)。*:通配符,匹配任意个任意字符
  2. -type:按照文档的类型进行搜索。文档类型:- 表示文件(在使用 find 的时候需要用 f 来替换),d 表示文件夹

示例代码:使用 find 来搜索 httpd.conf 文件
在这里插入图片描述
示例代码:搜索 /etc 目录下所有的 conf 后缀文件(*.conf),* 表示通配符
在这里插入图片描述
如果使用了 *,建议给整个文件名加上引号,谨记。通配符不仅可以用于搜索,还可以用于删除。
示例代码:使用 find 来搜索 /etc/ppp 目录下所有的文件夹
在这里插入图片描述

3. 日期时间命令

3.1 date 命令(重点)

3.1.1 获取时间

命令:date
作用:表示获取系统时间
语法1:date 输出的形式:2020年 12月 27日 星期日 23:08:22 CST
语法2:date “+%F” (等价于 date “+%Y-%m-%d” ) 输出形式:2020-12-27
语法3:date “+%F %T” 引号表示让 “年月日与时分秒” 成为一个不可分割的整体 输出形式:2020-12-27 23:11:18 等价于 date “+%Y-%m-%d %H:%M:%S”
语法4:获取之前或者之后的某个时间(备份) date -d “-1 day” “+%Y-%m-%d %H:%M:%S” 符号的可选值:+(之后) 或者 - (之前)单位的可选值:day(天)、month(月份)、year(年)

序号 格式符 说明
1 %F 表示完整的年月日,形如 2020-12-27
2 %T 表示完整的时分秒,形如 08:00:00
3 %Y (year)表示四位年份
4 %m (month)表示两位月份(带前导0)
5 %d (day)表示日期(带前导0)
6 %H (hour)表示小时(带前导0)
7 %M (minute)表示分钟(带前导0)
8 %S (second)表示秒数(带前导0)

示例代码:输出当前系统时间,时间格式:“日/月/年 时:分:秒”
在这里插入图片描述
示例代码:获取 5 天之前的时间,格式为 年-月-日 时:分:秒
在这里插入图片描述

3.1.2 设置时间

命令:date
作用:表示设置系统时间
选项:-s, --set=STRING,设置系统时间
在这里插入图片描述

3.2 hwclock 命令

① 获取时间
命令:hwclock
作用:表示获取计算机硬件 RTC 时间
在这里插入图片描述
② 设置时间
命令:hwclock
作用:设置计算机硬件 RTC 时间
选项1:-w,将 Linux 系统时间保存到硬件 RTC 中
选项2:-s,将 RTC 中的时间保存到 Linux 系统时间中
在这里插入图片描述

3.3 cal 命令(了解)

命令:cal
作用:操作系统日历
语法1:cal 等价于 cal -1 直接输出当前月份的日历
在这里插入图片描述
语法2:cal -3 表示输出上一个月 + 本月 + 下个月的日历
在这里插入图片描述
语法3:cal -y 年份数字 表示输出某一个年份的日历(1-9999)
在这里插入图片描述

3.4 扩展:bash 中的引号

☆ 双引号 "":会把引号的内容当成整体来看待,允许通过 $ 符号引用其他变量值。
在这里插入图片描述
☆ 单引号 '':会把引号的内容当成整体来看待,禁止引用其他变量值,shell 中特殊符号都被视为普通字符。
在这里插入图片描述
在这里插入图片描述
☆ 反撇号 ``:反撇号和 $() 一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用。
在这里插入图片描述

4. 管道命令(重点)

4.1 管道符

管道符:|
作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
在这里插入图片描述

4.2 过滤功能

ls / | grep “y”
grep 指令用于 “过滤”
grep 语法:grep 选项 文件路径/内容
针对上面这个命令说明:
① 以管道作为分界线,前面的命令有个输出,后面需要先输入(缺少查找范围),然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入。为了便于理解,上述的指令变相实现可以如下:
ls / > xxx.txt 将 ls / 的结果保存到 xxx.txt 文件中
grep “y” xxx.txt 使用 grep 指令搜索 xxx.txt 中的包含 y 的行
② grep 指令:主要用于过滤
语法:grep [选项] 搜索关键词 搜索范围
示例代码:获取 / 根目录下包含关键字 “y” 的文件信息
在这里插入图片描述
示例代码:搜索 /root/install.log 文件中包含 mysql 关键词的行信息
在这里插入图片描述

4.3 特殊功能

通过管道的操作方法来实现 less 的等价效果(了解)例如:源指令是 “less xxx.txt” 使用管道的话则可以写成:cat xxx.txt | less。之前可以通过 less 命令查看一个文件,可以 less 路径。现在通过管道还可以:cat 路径 | less。

4.4 扩展处理

问题:请使用学过的命令,来统计某个目录下的文档的总个数?
示例代码:使用 Linux 命令统计 / 下的文档的个数
在这里插入图片描述
示例代码:用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息。
在这里插入图片描述

4.5 xargs 命令扩展

问题:为什么需要 xargs 命令?
答:之所以能用到这个命令,关键是由于很多命令不支持 | 管道来传递参数,而日常工作中有这个必要,所以就有了 xargs 命令。
首先来看一个命令:
在这里插入图片描述
xargs 特别说明:

  1. xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
  2. xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
  3. xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
  4. xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

示例代码:多行输入单行输出
在这里插入图片描述
示例代码:-n 选项多行输出
在这里插入图片描述

5. Linux 高级命令

5.1 hostname 命令

命令:hostname
作用:操作服务器的主机名(读取、设置)
语法1:hostname,获取主机名.完整域名
语法2:hostname -f 全限定域名(FQDN)
在这里插入图片描述
语法3:hostname FQDN 全限定域名,临时设置主机名称
在这里插入图片描述

5.2 id 命令

命令:id
作用:查看一个用户的一些基本信息(包含用户 id,用户组 id,附加组 id…),该指令如果不指定用户则默认当前用户。
语法1:id 默认显示当前执行该命令的用户的基本信息。
在这里插入图片描述
语法2:id 用户名, 显示指定用户的基本信息。
在这里插入图片描述
如何验证以上信息是否正确?
答:验证用户信息:通过文件 /etc/passwd,验证用户组信息:通过文件 /etc/group

5.3 ps 命令(重点)

指令:ps【process show】
作用:主要是查看服务器的进程信息
选项含义:

  1. -e:等价于 “-A”,表示列出全部(all)的进程
  2. -f :表示 full,显示全部的列(显示全字段)
    在这里插入图片描述

列的含义:

UID:该进程执行的用户 ID
PID:进程 ID
PPID:该进程的父级进程 ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID)
C:Cpu 的占用率,其形式是百分数
STIME:进程的启动时间
TTY:终端设备,发起该进程的设备识别符号,如果显示 “?” 则表示该进程并不是由终端设备发起,扩
展:Ctrl + Alt + F1 ~ F6,可以进入到不同的终端设备(有的电脑可能需要加上 fn)
TIME:进程实际使用 CPU 的时间
CMD:该进程的名称或者对应的路径

示例代码:在 ps 的结果中过滤出想要查看的进程状态 crond 进程(100%使用的命令)
在这里插入图片描述
注意查询结果:其中如果只有一条则表示没查到对应的进程(这 1 条表示刚才 ps 指令的自身)。只有查到的结果多余 1 条,才表示有对应的进程。
补充:针对上述情况的优化:如果没有对应的进程,则什么都不显示。
思路:在现有的基础之上再次使用管道去处理下(-v 选项表示“排除”)
在这里插入图片描述
注意:使用以上指令时,需要提前启动 Firefox 浏览器
在这里插入图片描述
扩展:ps aux【BSD 格式命令,注意没有横杠"-"】
在这里插入图片描述

USER:该 process 属于哪个使用者账号
PID:该 process 的 ID
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ:该 process 使用掉的虚拟内存量 (Kbytes)
RSS:该 process 占用的固定的内存量 (Kbytes)
TTY:该 process 是在哪个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是
本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有 R:该程序目前正在运作,或者是可被运作。S:该程序目前
正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。T:该程序目前正在侦测或者
是停止了。Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的
状态。
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令

5.4 top 命令(重点)

作用:查看服务器的进程所占资源(100%使用) Plants VS zombies
语法:top(动态显示)
退出命令:按下 q 键
补充:load average,一般单核情况,这个值不能超过 1,超过 1 代表 CPU 超负荷运行。用1分钟、5分钟、15分钟的 数值/逻辑 的 CPU 数量
CPU:2 颗 CPU,每颗 2 核,所以逻辑 CPU 数量 = 4
在这里插入图片描述
表头含义:

  1. PID:进程 ID
  2. USER:该进程对应的用户
  3. PR:优先级
  4. VIRT:虚拟内存
  5. RES:常驻内存
  6. SHR:共享内存,计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
  7. S:表示进程的状态 status(sleeping,其中 S 表示睡眠,R 表示运行)
  8. %CPU:表示 CPU 的占用百分比
  9. %MEM:表示内存的占用百分比
  10. TIME+:执行的时间
  11. COMMAND:进程的名称或者路径

注:在运行 top 的时候,可以按下方便的快捷键:

  • M (大写):表示将结果按照内存(MEM)从高到低进行降序排列
  • P (大写):表示将结果按照 CPU 使用率从高到低进行降序排列
  • 1:当服务器拥有多个 cpu 的时候可以使用 “1” 快捷键来切换是否展示显示各个 cpu 的详细信息
    在这里插入图片描述

5.5 service 命令(重点)

命令:service
作用:用于控制一些软件的服务启动、停止、重启
语法:service 服务名 start/stop/restart/status状态(服务名可以去 /etc/init.d 目录下寻找)
服务和进程有啥区别?

  1. 服务≠进程
  2. 进程是指运行的程序(状态不一定是正在运行:run/sleep/stop/zombieˈzɑ:mbi’]僵尸)
  3. 服务是进程的一个 “外壳”,用于控制对进程的启动、停止、重启操作

示例代码:启动本机中的 sshd 服务
在这里插入图片描述
示例代码:启动本机安装的 Apache(网站服务器软件),其服务名 httpd
在这里插入图片描述
通过 ps -ef 得到的结果发现 apache 启动的进程存在父子关系。了解:在 centos7 中,service 命令将会被 systemctl 所替代(systemctl start/restart/stop 服务名)。但是,service 命令在 centos7 中同时兼容。

5.6 kill 命令

命令:kill
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
语法:kill 进程ID (语法需要配合 ps 一起使用)如果需要杀死子进程,则可以直接杀父进程
示例代码:使用 kill 命令干掉 Apache 的进程
在这里插入图片描述
备注:在互联网中,经常看到 kill -9 进程PID,强制杀死某个进程。

5.7 killall 命令

命令:killall/pkill
作用:与 kill 命令作用相似,但是比 kill 更加好用的杀死进程的命令
语法:killall 进程名称
在这里插入图片描述
扩展:pkill 进程名称,与 killall 类似,杀死所有进程。

5.8 ifconfig 命令

命令:ifconfig
作用:获取网卡的相关信息
语法:ifconfig
在这里插入图片描述
☆ eth0 是默认的第一块网卡
☆ lo(loop,循环)表示回环网卡

5.9 uname 命令

命令:uname
作用:获取计算机操作系统相关信息
语法1:uname 获取操作系统的类型
语法2:uname -a,选项 -a 代表 all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
在这里插入图片描述

5.10 netstat 命令

命令:netstat
作用:查看网络连接状态
语法:netstat -tnlp
选项:

  1. -t:表示只列出 tcp 协议的连接,-u:表示只列出 udp 协议的连接
  2. -n:表示将地址从字母组合转化成 ip 地址,将协议转化成端口号来显示
  3. -l:表示过滤出 “state(状态)” 列中其值为 LISTEN(监听)的连接
  4. -p:表示显示发起连接的进程 pid 和进程名称
    在这里插入图片描述
本文来源Amo Xiang,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/7798

发表评论