更多Bash Shell命令实战——从进程管理到数据归档
前言
本文是《更多的bash shell命令》课程的实践总结,通过在Xshell中连接虚拟机,亲手操作了Linux中进程管理、磁盘管理、数据排序、搜索和归档等常用命令。本文将按照PPT的顺序,逐一演示每个命令的用法,并附上操作截图和常见参数说明,帮助正在学习Linux的你快速上手。
一、实验环境
操作系统:Ubuntu(VMware虚拟机)
远程连接工具:Xshell
Shell环境:GNU Bash
二、监测程序——ps命令
ps命令用于查看系统上运行的所有程序的信息。当程序运行在系统上时,我们称之为进程(process)。
基本用法:
直接输入ps,查看当前终端下的进程:
ps
输出示例:
PID TTY TIME CMD
2938 pts/1 00:00:00 bash
3810 pts/1 00:00:00 ps
目前只运行了bash shell以及ps命令本身。基本输出显示了程序的进程ID(PID)、它们运行在哪个终端(TTY)以及进程已用的CPU时间。
查看所有进程:
使用ps -ef参数组合查看系统上运行的所有进程:
ps -ef
-e参数指定显示所有运行在系统上的进程,-f参数则扩展了输出。输出依次包含以下信息:
UID:启动这些进程的用户
PID:进程的进程ID
PPID:父进程的进程号
C:进程生命周期中的CPU利用率
STIME:进程启动时的系统时间
TTY:进程启动时的终端设备
TIME:运行进程需要的累计CPU时间
CMD:启动的程序名称
操作截图:
三、实时监控——top命令
ps命令只能显示某个特定时间点的信息,而top命令是实时显示的。
启动top:
top
top输出的第一部分显示系统的概况:
第一行:当前时间、系统的运行时间、登录的用户数以及系统的平均负载。平均负载有3个值:最近1分钟、最近5分钟和最近15分钟的平均负载。值越大说明系统的负载越高。
第二行:进程概要信息,有多少进程处在运行、休眠、停止或是僵化状态。
第三行:CPU的概要信息,包括用户空间占用CPU百分比(us)、内核空间占用CPU百分比(sy)、空闲CPU百分比(id)等。
最后两行:系统内存的状态,包括物理内存总量、空闲内存、已用内存和交换空间的信息。
top常用交互命令:
在top界面中可以输入以下按键执行相应功能:
? 显示在top当中可以输入的命令
P 以CPU的使用资源排序显示
M 以内存的使用资源排序显示
N 以pid排序显示
T 由进程使用的时间累计排序显示
k 给某一个pid一个信号,可以用来杀死进程
r 给某个pid重新定制一个nice值(即优先级)
u 显示指定用户下的所有进程
q 退出top
操作截图:
四、结束进程——kill命令
作为系统管理员,很重要的一个技能就是知道何时以及如何结束一个进程。有时进程挂起了,需要让进程重新运行或结束。
常用信号:
1 HUP 挂起
2 INT 中断
9 KILL 无条件终止
15 TERM 尽可能终止
18 TSTP 停止或暂停,但继续在后台运行
19 CONT 在STOP或TSTP之后恢复执行
使用kill命令:
用法:kill [option] [PID号]
默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号,告诉进程可能的话就停止运行。
正常终止进程:
kill PID号
强制终止进程(慎用):
kill -9 PID号
操作截图:
五、磁盘挂载——mount和umount命令
Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下,这项工作称为挂载(mounting)。
查看已挂载设备:
mount
mount命令提供如下四部分信息:
媒体的设备文件名
媒体挂载到虚拟目录的挂载点
文件系统类型
已挂载媒体的访问状态
手动挂载设备:
mount -t type device directory
常用参数:
-r 将设备挂载为只读的
-w 将设备挂载为可读写的(默认参数)
-t 指定文件系统类型
卸载设备:
从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。
umount [directory|device]
操作截图:
六、查看磁盘空间——df和du命令
df命令:
df命令可以很方便地查看所有已挂载磁盘的使用情况。
查看磁盘使用情况:
df
以易读格式显示(MB、GB):
df -h
df命令输出依次为:设备的设备文件位置、能容纳多少个1024字节大小的块、已用了多少个、还有多少个可用、已用空间所占比例、设备挂载到了哪个挂载点上。
du命令:
du命令可以显示某个特定目录的磁盘使用情况,用来快速判断系统上某个目录下是不是有超大文件。
查看当前目录磁盘使用情况:
du
以易读格式显示:
du -h
只显示总大小:
du -sh
查看指定目录:
du -sh /home
操作截图:
七、排序数据——sort命令
sort命令是对数据内容进行排序。注意,sort只是将数据显示的时候进行了排序,实际上文件内部的数据没有变。
基本用法:
创建测试文件:
echo -e “5\n3\n15\n8\n1\n20\n10” > numbers.txt
cat numbers.txt
默认排序(按字符排序):
sort numbers.txt
按数值排序:
sort -n numbers.txt
降序排序:
sort -nr numbers.txt
常用参数:
-n 把数字识别成数字而不是字符,按值排序
-r 将结果按降序输出
-t 指定分隔符
-k 指定排序的列
操作截图:
八、搜索数据——grep命令
grep命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。
基本用法:
创建测试文件:
echo -e “apple\nbanana\ngrape\napple pie\npineapple\nAPPLE” > fruits.txt
基本搜索:
grep “apple” fruits.txt
反向搜索(不包含apple的行):
grep -v “apple” fruits.txt
显示行号:
grep -n “apple” fruits.txt
统计匹配行数:
grep -c “apple” fruits.txt
忽略大小写:
grep -i “apple” fruits.txt
多个匹配模式:
grep -e “apple” -e “grape” fruits.txt
使用正则表达式(以a开头):
grep “^a” fruits.txt
在系统进程中使用grep:
ps -ef | grep bash
操作截图:
九、压缩和解压——gzip和tar命令
gzip命令:
gzip命令会压缩你在命令行指定的文件。
压缩文件:
gzip filename
解压文件:
gzip -d filename.gz
tar命令:
tar命令最开始是用来将文件写到磁带设备上归档的,现在普遍用来归档数据。
常用功能:
-c 创建一个新的tar归档文件
-x 从已有tar归档文件中提取文件
-t 列出已有tar归档文件的内容
-r 追加文件到已有tar归档文件末尾
常用选项:
-f file 输出结果到文件或设备file
-z 将输出重定向给gzip命令来压缩内容
-j 将输出重定向给bzip2命令来压缩内容
-v 在处理文件时显示文件
-C dir 切换到指定目录
tar命令使用案例:
创建测试目录和文件:
mkdir test_archive
touch test_archive/file1.txt test_archive/file2.txt test_archive/file3.txt
创建tar归档文件:
tar -cvf archive.tar test_archive/
查看tar归档文件内容:
tar -tvf archive.tar
创建tar.gz压缩文件:
tar -czvf archive.tar.gz test_archive/
解压tar.gz文件:
tar -xzvf archive.tar.gz
解压到指定目录:
mkdir extract_dir
tar -xzvf archive.tar.gz -C extract_dir/
操作截图:
十、知识框架总结
1.进程管理类:
ps 查看进程信息 常用参数:-ef
top 实时监控进程 常用交互:P、M、N、T、u、k、q
kill 结束进程 常用参数:-9
2.磁盘管理类:
mount 挂载设备 常用参数:-t
umount 卸载设备 无
df 查看磁盘空间 常用参数:-h
du 查看目录占用空间 常用参数:-h、-s
3.数据处理类:
sort 排序数据 常用参数:-n、-r、-t、-k
grep 搜索数据 常用参数:-v、-n、-c、-i、-e
4.压缩归档类:
gzip 压缩文件 常用参数:-d
tar 归档文件 常用参数:-c、-x、-t、-v、-f、-z