Linux基本命令(下)
一、磁盘内存相关命令
1、df命令
命令:df
作用:查看磁盘的空间(disk free)
语法:# df [-h]
选项:-h表示可读性较高的形式展示大小
这几列依次是:Filesystem=>磁盘名称、Size=>总大小、Used=>被使用的大小、Avail=>剩余大小、Use%=>使用百分比、Mounted on=>挂载路径(相当于Windows 的磁盘符)
2、free命令
命令:free
作用:查看内存使用情况
语法:#free -m
选项:-m 表示以mb为单位查看(1g = 1024mb,1mb = 1024kb)
如上图所示,系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内存有如下几个加减法:
☆ used=total-free 即 total=used+free
☆ 实际内存占用:used-buffers-cached 即 total-free-buffers-cached
☆ 实际可用内存:buffers+cached+free
第1行Mem数据:
total 内存总数: 979
used 已经使用的内存数: 539
free 空闲的内存数: 440
shared 共享内存数: 4
buffers Buffer Cache块设备缓存区内存数: 34
cached Page Cache文件缓存内存数: 182
第2行-/+ buffers/cache:
-buffers/cache 的内存数:323 (等于第1行的 used - buffers - cached)
+buffers/cache 的内存数: 656 (等于第1行的 free + buffers + cached)
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第3行数据是Swap交换分区,也就是我们通常所说的虚拟内存。可以在内存不够使用的情况下当临时内存来使用,交换分区并不是越大越好,一般话它就等同于实际内存的大小。
二、与文件内容相关命令
1、head命令
命令:head
作用:查看一个文件的前n 行,如果不指定n,则默认显示前10 行。
语法:#head -n 文件路径 【n 表示数字】
示例代码:显示install.log 文件的前3行
示例代码:显示install.log 文件的前10行,使用head命令不指定的行数(默认10 行)
2、tail命令
命令:tail
作用:查看一个文件的末n 行,如果n 不指定默认显示后10 行
语法:# tail -n 文件路径 【n 表示数字】
示例代码:显示install.log 文件的最后5行
示例代码:显示install.log文件的最后10行
tail命令扩展
语法:# tail -f 文件路径
作用:查看一个文件动态变化的内容【变化的内容不能是用户手动增加的,必须要求是计算机帮我们写入的内容】
说明:tail -f命令一般用于查看系统的日志
退出tail -f 卡屏状态可以按下ctrl+c 键,在命令行中c 不再表示copy,而表示cancel(取消)
3、less与more命令
① less命令(推荐)
命令:less
作用:查看文件,按下辅助功能键(数字+回车、空格键(向下翻页)、上下方向键)查看更多
语法:# less 需要查看的文件路径
流程:不是加载整个文件,而是一点一点进行加载,相对而言,读取大文件时,效率比较高。
示例代码:使用less命令查看/root/install.log的文件内容
在退出的只需要按下q 键(quit)即可(此时ctrl+c 不好使)
扩展:less命令我们还可以进行关键词检索功能
/关键字,搜索成功后,文档中的所有关键字都会高亮。
n : next,向下切换关键字
N : shift + n,向上切换关键字
② more命令
命令:more
作用:查看文件,按下辅助功能键(空格、字母键b等价于back)查看更多
语法:#more 需要查看的文件路径
流程:more在读取文件时,默认已经加载文件的全部内容。
在退出的只需要按下q 键(quit)即可(此时ctrl+c 不好使)
4、wc命令
命令:wc,wc = word count
作用:用于统计文件内容信息(包含行数、单词数、字节数)
语法:# wc -lwc 需要统计的文件路径
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes, 字节数(空格,回车,换行)
特别注意:wc命令选项可以混在一起搭配使用,但选项的顺序不影响输出结果,第一个是行数,第二个是单词数,第三个数字节数。
5、du命令
命令:du
作用:查看文件或目录(会递归显示子目录)占用磁盘空间大小 Disk Usage
语法:# du [-sh]
选项:-s :summaries,只显示汇总的大小,统计文件夹的大小
-h:表示以高可读性的形式进行显示,如果不写-h,默认以KB的形式显示文件大小
示例代码:统计/root/install.log文件大小
示例代码:统计/etc目录大小
6、find命令
命令:find
作用:用于查找文档(其选项有55 个之多)
语法:# find 路径范围 选项1 选项1的值 [选项2 选项2 的值…]
选项:
-name:按照文档名称进行搜索(支持模糊搜索)
* : 通配符,匹配任意个任意字符
-type:按照文档的类型进行搜索
文档类型:"-"
表示文件(在使用find 的时候需要用f 来替换),"d"
表示文件夹
示例代码:使用find 来搜索httpd.conf 文件
示例代码:搜索/etc 目录下所有的conf 后缀文件(*.conf),*表示通配符
注:如果使用了*,建议给整个文件名加上引号,谨记!!!
* :通配符不仅可以用于搜索,还可以用于删除
示例代码:使用find 来搜索/etc/ppp目录下所有的文件夹
三、日期时间命令
1、date命令(重点)
① 获取时间
命令:date
作用:表示获取系统时间
语法1:# date 输出的形式:2018 年 3 月 24 日 星期六 15:54:28 CST
语法2:# date “+%F” (等价于# date “+%Y-%m-%d” ) 输出形式:2018-03-24
语法3:# date “+%F %T” 引号表示让 “年月日与时分秒” 成为一个不可分割的整体
等价操作# date “+%Y-%m-%d %H:%M:%S”,输出的形式:2018-03-24 16:01:00
语法4:获取之前或者之后的某个时间(备份)
# date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
符号的可选值:+(之后) 或者 - (之前)
单位的可选值:day(天)、month(月份)、year(年)
序号 | 格式符 | 说明 |
---|---|---|
1 | %F | 表示完整的年月日,形如2018-12-31 |
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) |
示例代码:输出当前系统时间,时间格式:“日/月/年 时:分:秒”
示例代码:获取7 天之前的时间,格式为年-月-日 时:分:秒
② 设置时间
命令:date
作用:表示设置系统时间
选项:-s, --set=STRING,设置系统时间
2、hwclock命令
① 获取时间
命令:hwclock
作用:表示获取计算机硬件RTC时间 Hardware Clock
② 设置时间
命令:hwclock
作用:设置计算机硬件RTC时间
选项1:-w,将Linux系统时间保存到硬件RTC中
选项2:-s,将RTC中的时间保存到Linux系统时间中
3、cal命令(了解)
命令:cal
作用:操作系统日历 calendar
语法1:# cal 等价于 #cal -1 直接输出当前月份的日历
语法2:# cal -3 表示输出上一个月+本月+下个月的日历
语法3:# cal -y 年份数字 表示输出某一个年份的日历(1-9999)
4、扩展:bash中的引号
☆ 双引号"" : 会把引号的内容当成整体来看待,允许通过$符号引用其他变量值
☆ 单引号’’ : 会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符
☆ 反撇号`` : 反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用
四、管道命令(重点)
1、管道符
管道符:|
作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
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关键词的行信息
3、特殊功能
通过管道的操作方法来实现less 的等价效果(了解)
例如:源指令是"less xxx.txt"使用管道的话则可以写成:cat xxx.txt | less
之前可以通过less命令查看一个文件,可以# less 路径
现在通过管道还可以:#cat 路径 | less
示例代码:
4、扩展处理
问题:请使用学过的命令,来统计某个目录下的文档的总个数?
示例代码:使用Linux命令统计“/”下的文档的个数
示例代码:用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息
5、xargs命令扩展
问题:为什么需要xargs命令?
答:之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令。
首先来看一个命令:
find /etc -name "*.conf" | ls -l (错误)
find /etc -name "*.conf" | xargs ls -l (正确)
xargs特别说明:
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
示例代码:多行输入单行输出
示例代码:-n 选项多行输出
-n3 3列输出
五、Linux高级命令
1、hostname命令
命令:hostname
作用:操作服务器的主机名(读取、设置)
语法1:# hostname
获取主机名.完整域名
语法2:# hostname -f
全限定域名(FQDN)
web01.itcast.cn
web02.itcast.cn
语法3:# hostname FQDN全限定域名
临时设置主机名称
2、id命令
命令:id
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。
语法1:# id 默认显示当前执行该命令的用户的基本信息
语法2:# id 用户名
, 显示指定用户的基本信息
如何验证以上信息是否正确?
答:验证用户信息:通过文件/etc/passwd,验证用户组信息:通过文件/etc/group
3、ps命令(重点)
指令:ps【process show】
作用:主要是查看服务器的进程信息
选项含义:
-e:等价于“-A”,表示列出全部(all)的进程
-f : 表示full,显示全部的列(显示全字段)
列的含义:
UID :该进程执行的用户ID
PID :进程ID
PPID :该进程的父级进程ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID)
C :Cpu的占用率,其形式是百分数
STIME:进程的启动时间
TTY :终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起
扩展:Ctrl + Alt + F1 ~ F6,可以进入到不同的终端设备
TIME :进程实际使用CPU的时间
CMD :该进程的名称或者对应的路径
示例代码:在ps的结果中过滤出想要查看的进程状态"crond"进程(100%使用的命令)
语法:ps -ef | grep “进程名称”【Linux/Unix命令格式】
注意查询结果:其中如果只有一条则表示没查到对应的进程(这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:该程序的实际指令
4、top命令(重点)
作用:查看服务器的进程占的资源(100%使用) Plants VS zombies
语法:# top (动态显示)
退出命令:按下q 键
补充:
- load average,一般单核情况,这个值不能超过1,超过1代表CPU超负荷运行。
- 用1分钟、5分钟、15分钟的数值/逻辑的CPU数量
- CPU:2颗CPU,每颗2核,所以逻辑CPU数量 = 4
表头含义:
PID :进程ID
USER:该进程对应的用户
PR :优先级
VIRT:虚拟内存
RES :常驻内存
SHR :共享内存,计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR)
S :表示进程的状态status(sleeping,其中S 表示睡眠,R 表示运行)
%CPU:表示CPU 的占用百分比
%MEM:表示内存的占用百分比
TIME+ :执行的时间
COMMAND:进程的名称或者路径
注:在运行top 的时候,可以按下方便的快捷键:
M(大写):表示将结果按照内存(MEM)从高到低进行降序排列;
P(大写):,表示将结果按照CPU 使用率从高到低进行降序排列;
1 :当服务器拥有多个cpu 的时候可以使用“1”快捷键来切换是否展示显示各个cpu 的详细信息;
5、service命令(重点)
命令:service
作用:用于控制一些软件的服务启动/停止/重启
语法:# service 服务名 start/stop/restart/status状态
注:服务名可以去/etc/init.d 目录下寻找
服务和进程有啥区别?
服务≠进程
进程是指运行的程序(状态不一定是正在运行:run/sleep/stop/zombieˈzɑ:mbi']僵尸)
服务是进程的一个"外壳",用于控制对进程的启动/停止/重启操作
示例代码:启动本机中的sshd服务
# service sshd start|stop|restart|status
示例代码:重启网络network服务
# service network restart
示例代码:启动本机安装的Apache(网站服务器软件),其服务名httpd
通过ps -ef
得到的结果发现apache启动的进程存在父子关系
了解:在centos7 中,service 命令将会被systemctl 所替代(#systemctl start/restart/stop 服务名)。但是,service 命令在centos7 中同时兼容。
6、kill命令
命令:kill
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
语法:# kill 进程ID (语法需要配合ps 一起使用)如果需要杀死子进程,则可以直接杀父进程
示例代码:使用kill命令干掉Apache的进程
备注:在互联网中,经常看到kill -9 进程PID,强制杀死某个进程,kill -l
7、killall命令
命令:killall
作用:与kill 命令作用相似,但是比kill 更加好用的杀死进程的命令
语法:# killall 进程名称
扩展:pkill 进程名称,与killall类似,杀死所有进程
8、ifconfig命令
命令:ifconfig
作用:获取网卡的相关信息
语法:# ifconfig
在上述的信息中,可以得知以下信息:
这里有2 个网卡;其IP地址是inet addr(圈红的地方)
☆ eth0 是默认的第一块网卡
☆ lo(loop,循环)表示回环网卡
9、uname命令
命令:uname
作用:获取计算机操作系统相关信息
语法1:# uname 获取操作系统的类型
语法2:# uname -a,选项-a代表all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
10、netstat命令
命令:netstat
作用:查看网络连接状态
语法:netstat -tnlp
选项:-t:表示只列出tcp 协议的连接;
-n:表示将地址从字母组合转化成ip 地址,将协议转化成端口号来显示;
-l :表示过滤出"state(状态)"列中其值为LISTEN(监听)的连接;
-p:表示显示发起连接的进程pid 和进程名称;
Protocol:协议(tcp、upd、http、https、icmp、ssh…)
Receive:接收
Send:发送
六、练习题
1、如何通过命令行重启linux 操作系统?
2、如何在命令行中快速删除光标前/后的内容? 前:ctrl + u 后:ctrl + k
3、如何删除/tmp 下(不要求递归)所有A 开头的文件?
答:rm /tmp/A*
4、系统重要文件需要备份,如何把/etc/passwd 备份到/tmp 目录下?
5、如何查看系统最后创建的3 个用户?
答:tail -3 /etc/passwd
6、什么命令可以统计当前系统中一共有多少账户?
答:可以统计一下/etc/passwd文件中一共有多少行,这个问题就解决了
7、如何创建/tmp/test.conf 文件?
8、如何查看/etc/passwd 的头3 行和尾3 行?
9、如何一次性创建目录/text/1/2/3/4?
10、如何最快的返回到当前账户的家目录?
11、如何查看/etc 所占的磁盘空间(文件夹大小)?
12、如何删除/tmp 下所有的文档?
13、尝试启动Apache 的服务,并且检查是否启动成功。
14、使用已学命令杀死Apache 的进程。