更多的 bash shell 命令

检测程序

探查进程 —— ps

ps 命令能输出运行在系统上的所有程序的许多信息。

ps [选项]

Linux 系统中使用的 GNU ps 命令支持3种不同类型的命令行参数。

  • Unix 风格的参数,前面加单破折线。
  • BSD 风格的参数,前面不加破折线。
  • GNU 风格的长参数,前面加双破折线。

Unix 风格的 ps 命令参数:

选项 描述
-A 显示所有进程
-N 显示与指定参数不符的所有进程
-a 显示除控制进程和无终端进程外的所有进程
-d 显示除控制进程外的所有进程
-e 显示所有进程
-C cmdlist 显示包含cmdlist列表中的进程
-G grplist 显示组 ID 在grplist 列表中的进程
-U userlist 显示属主的用户 ID 在 userlist 列表中的进程
-g grplist 显示会话或组 ID 在 grplist 列表中的进程
-p pidlist 显示 PID 在 pidlist 列表中的进程
-s sesslist 显示会话 ID 在sesslist 列表中的进程
-t ttylist 显示终端 ID 在 ttylist 列表中的进程
-u userlist 显示有效用户 ID 在 userlist 列表中的进程
-F 显示更多额外输出
-O format 显示默认的输出列以及 format 列表指定的特定列
-M 显示进程的安全信息
-c 显示进程的额外调度器信息
-f 显示完整格式的输出
-j 显示任务信息
-l 显示长列表
-o format 仅显示由format指定的列
-y 不要显示进程标记
-Z 显示安全标签信息
-H 用层级格式来显示进程
-n namelist 定义了WCHAN列显示的值
-w 采用款输出模式,不限宽度显示
-L 显示进程中的线程
-V 显示ps命令的版本号
  • UID:启动这些进程的用户。
  • PID:进程的ID。
  • PPID:父进程的进程号。
  • C:进程生命周期中的 CPU 利用率。
  • STIME:进程启动时的系统时间。
  • TTY:进程启动时的终端设备。
  • TIME:运行进程需要的累计CPU时间。
  • CMD:启动的程序名称。
  • F:内核分配给进程的系统标记。
  • S:进程的状态(O:正在运行;S:休眠;R:可运行,正在等待;Z:僵化,进程已结束但父进程已不存在;T:停止)。
  • PRI:进程的优先级(越大的数字代表越低的优先级)。
  • NI:谦让度值用来参与决定优先级。
  • ADDR:进程的内存地址。
  • SZ:假如进程被换出,所需交换空间的大致大小。
  • WCHAN:进程休眠的内核函数的地址。

查看进程树

pstree [选项]
选项 说明
-p 显示进程的 PID
-u 显示进程的所属用户

实时监测进程 —— top

能够实时显示进程信息。

top [选项]
选项 说明
-d 秒数 指定 top 命令,每隔几秒更新。
?或h 显示交互模式的帮助
P 以 CPU 使用率排序,默认就是此项
M 以内存的使用率排序
N 以 PID 排序
q 退出 top

第一行内容:系统概况

内容 说明
12:26:46 当前时间
up 1 day, 13:32 系统的运行时间
2 users 登录的用户数
load average: 0.00,0.00,0.00 系统的平均负载(1min、5min、15min)

第二行内容:进程概要信息

内容 说明
Tasks:95 total 系统中的进程总数
1 running 正在运行的进程树
94 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程

第三行内容:CPU概要信息

内容 说明
Cpu(s):0.1%us 用户模式占用的 CPU 百分比
0.1%sy 系统模式占用的 CPU 百分比
0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
99.7%id 空闲 CPU 的 CPU 百分比
0.1%wa 等待输入/输出的进程的占用 CPU 百分比
0.0%hi 硬中断请求服务占用的 CPU 百分比
0.0%si 软中断请求服务占用的 CPU 百分比
0.0%st 虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

第四行内容:物理内存信息

内容 说明
Mem: 625344k total 物理内存的总量
571504k used 已经使用的物理内存数量
53840k free 空闲的物理内存数量
65800k buffers 作为缓冲的内存数量

第五行内容:交换分区信息

内容 说明
Swap: 54280k total 交换分区的总大小
Ok used 已经使用的交互分区的大小
5244280k free 空闲交换分区的大小
409280k cached 作为缓存的交互分区大小

结束进程 —— kill、killall、pkill

在 Linux 中,进程之间通过信号来通信。

信号 名称 描述
1 HUP 挂起
2 INT 中断
3 QUIT 结束运行
9 KILL 无条件终止
11 SEGV 段错误
15 TERM 尽可能终止
17 STOP 无条件停止运行,但不终止
18 TSTP 停止或暂停,但继续在后台运行
19 CONT 在 STOP 或 TSTP 之后恢复执行
kill -l # 查看可用的进程信号
kill [进程代号] PID
killall [选项][信号] 进程名  # 按照进程名杀死进程
选项 说明
-i 交互式,询问是否要杀死某个进程
-I 忽略进程名大小写
pkill [选项][信号] 进程名  # 按照进程名杀死进程
选项 说明
-t 终端号 按照终端号踢出用户
w  # 查看本机已经登录的用户。

监测磁盘空间

mount 命令

mount [-l]  # 查询系统中已经挂载的设备 -l会显示卷标名称

默认情况下,mount 命令会输出当前系统上挂载的设备列表,会提供如下四部分信息:

  1. 媒体的设备文件名
  2. 媒体挂载到虚拟目录的挂载点
  3. 文件系统类型
  4. 已挂载媒体的访问状态
mount -a  # 依据配置文件 /etc/fstab 的内容,自动挂载

手动挂在媒体设备的基本命令:

mount - t type device directory
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名(设备文件位置) 挂载点(挂载点在虚拟目录中的位置)

手动将 U 盘 /dev/sdb1 挂载到 /medai/disk:

mount -t vfat /dev/sdb1 /media/disk
选项 说明
-t 文件系统(type):加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660(标准 CD-ROM文件系统)、vfat(win长文件系统)、ntfs(win NT、XP、vista 7 高级文件系统)等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项
-a 挂载 /etc/fstab 文件中指定的所有文件系统
-f 使mount命令模拟挂载设备,但并不真的挂载
-F 和 -a 参数一起使用时,会同时挂载所有文件系统
-v 详细模式,将会说明挂载设备的每一步
-I 不启用任何 /sbin/mount.filesystem 下的文件系统帮助文件
-l 给 ext2、ext3 或 XFS 文件系统自动添加文件系统标签
-n 挂载设备,但不注册到 /etc/mtab 已挂载设备文件中
-p num 进行加密挂载,从文件描述符num中获得密码短语
-s 忽略该文件系统不支持的挂载选项
-r 将设备挂载为只读的
-w 将设备挂载为可读写的
-L label 将设备按指定的 label 挂载
-U uuid 将设备按指定的uuid挂载
-O 和 -a 参数一起使用,限制命令只作用到特定的一组文件系统上
-o 给文件系统添加特定的选项

-o 参数允许在挂载文件系统时添加一些以逗号分隔的额外选项。以下为常用选项:

  • ro:以只读形式挂载
  • rw:以读写形式挂载
  • user:允许普通用户挂载文件系统
  • check=none:挂载文件系统时不进行完整性校验
  • loop:挂在一个文件

卸载命令 —— umount

从 Linux 系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。

umount [directory] [device]

挂载光盘与 U 盘

  1. 挂载光盘
mkdir /mnt/cdrom/
# 建立挂载点(盘符——C,D,E,F)
mount -t iso9600 /dev/cdrom /mnt/cdrom/
# 挂载光盘 设备文件名 挂载点
mount /dev/sr0/mnt/cdrom
  1. 卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
  1. 挂载U盘
fdisk -l
# 查看U盘设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/

不支持 NTFS 文件系统。

文件系统查看命令 —— df

查看某个设备上的剩余磁盘空间以及所有已挂载磁盘的使用情况。

df [选项] [挂载点]
选项 说明
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
-h 使用习惯单位显示容量如KB、MB、GB
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示容量。

统计目录或文件大小 —— du

du 命令可以显示某个特定目录的磁盘使用情况。这一方法可以用来快速判断系统上某个目录下是不是有超大文件。
默认情况下,du命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。

du [选项][目录或文件名]
选项 说明
-a 显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量
-s 统计总占用量,而不列出子目录和子文件的占用量
-c 显示所有已列出文件总的大小

du 命令和 df 命令的区别
df 命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
du 命令时面向文件的,只会计算文件或目录占用的空间。

处理数据文件

排序数据 —— sort

sort [选项] 文件名
选项 说明
-b 排序时忽略起始的空白
-C 不排序,如果数据无序也不要报告
-c 不排序,但检查输入数据是不是已排序,未排序的话,报告
-d 仅考虑空白和字母,不考虑特殊字符
-f 默认情况下,会将大写字母排在前面,这个参数会忽略大小写
-g 按通用数值来排序,浮点数、科学计数法等都支持
-i 在排序时忽略不可打印字符
-k POS1 [,pos2] 排序从 POS1 位置开始,如果指定了 POS2的话,到 POS2 位置结束
-M 用三字符月份名称排序
-m 将两个已排序数据文件合并
-n 按字符串数值来排序
-o file 将排序结果写出到指定文件中
-R 按随机生成的散列表的键值排序,指定 -R 参数用到的随机字节的源文件
-r 反序排列
-S 指定使用的内存大小
-s 禁用最后重排序比较
-T 指定一个位置来存储临时工作文件
-t 指定一个用来区分键位置的字符
-u 和 -c 参数一起使用时,检查严格排序;不和 -c 参数一起用时,仅输出第一例相似的两行
-z 用 NULL 字符作为行尾,而不是换行符

根据用户 ID 进行数值排序:

sort -t ':' -k 3 -n /etc/passwd

搜索数据 —— grep

命令名称: grep
命令英文原意:
命令所在路径: /bin/grep
执行权限: 所有用户
功能描述: 在文件内容中搜索字符串匹配的行并输出
语法: grep [选项] 指定字符串 文件

选项 说明
-i 不区分大小写
-v 排除指定字串
-n 显示行号
-c 有多少行含有匹配的模式
-e 指定多个匹配模式

支持正则表达式。

压缩数据

Linux 上的文件压缩工具:

工具 文件拓展名 描述
bzip2 .bz2 采用 Burrows-Wheeler 块排序文本压缩算法和霍夫曼编码
compress .Z 最初的 Unix 文件压缩工具
gzip .gz GNU 压缩工具,用 Lempel-Ziv 编码
zip .zip Win 上压缩工具的 Unix 实现
  • gzip:用来压缩文件
  • gzcat:用来查看压缩过的文本文件的内容
  • gunzip:用来解压文件
    文件压缩命令
    命令名称: gzip
    命令英文原意: GNU zip
    命令所在路径: /bin/gzip
    执行权限: 所有用户
    功能描述: 压缩文件为.gz格式
    语法: gzip [文件]
    不保留源文件。
    不可压缩目录。
    文件解压缩
    命令名称: gunzip
    命令英文原意: GNU unzip
    命令所在路径: /bin/gunzip
    执行权限: 所有用户
    功能描述: 解压缩.gz的压缩文件
    语法: gunzip[压缩文件]
    文件/目录压缩命令
    命令名称: zip
    命令英文原意:
    命令所在路径: /bin/zip
    执行权限: 所有用户
    功能描述: 压缩为.zip格式
    语法: zip [选项] [压缩后文件名][文件或目录]
选项 说明
-r 压缩目录

保留源文件。
文件/目录解压缩命令
命令名称: unzip
命令英文原意:
命令所在路径: /usr/bin/unzip
执行权限: 所有用户
功能描述: 解压.zip格式文件
语法: unzip [文件/目录]
文件压缩命令
命令名称: bzip2
命令英文原意:
命令所在路径: /usr/bin/bzip2
执行权限: 所有用户
功能描述: 压缩文件 .bz2
语法: bzip2 [选项] [文件]

选项 说明
-k 产生压缩文件后保留源文件

自动产生.bz2文件
文件解压命令
命令名称: bunzip2
命令英文原意:
命令所在路径: /usr/bin/bunzip2
执行权限: 所有用户
功能描述: 解压文件
语法: bunzip2 [选项] [压缩文件]

选项 说明
-k 产生压缩文件后保留源文件

归档数据

归档工具 —— tar
命令名称: tar
命令英文原意:
命令所在路径: /bin/tar
执行权限: 所有用户
功能描述: 打包目录 .tar.gz
语法: tar [选项] [压缩后的文件名][目录]
tar function [options] object1 object2…

功能 描述
-A 将一个已有tar归档文件追加到另一个已有tar归档文件
-c 创建一个新的tar归档文件 -zcf 生成.gz文件 -cjf:生成.tar.bz2
-r 追加文件到已有tar归档文件末尾
-t 列出已有tar归档文件的内容
-u 将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
-x 从已有tar归档文件中提取文件 -zxf 解码.tar.gz文件 -xjf 解码.tar.bz2文件
-C dir 切换到指定目录
-f file 输出结果到文件或设备file
-j 将输出重定向给bzip2命令来压缩内容
-p 保留所有文件权限
-v 在处理文件时显示文件
-z 将输出重定向给gzip命令来压缩内容

使用下面的命令来创建一个归档文件:

tar -cvf test.tar test/ test2/

上面的命令创建了名为 test.tar的归档文件,含有test和test2目录内容,接着,用下列命令:

tar -tf test.tar

列出tar文件test.tar的内容,最后,用命令:

tar -xvf test.tar

通过这一命令从tar文件test.tar中提取内容。如果tar文件是从一个目录结构创建的,那整个目录结构都会在当前目录下重新创建。
解压 .tgz 文件:

tar -zxvf filename.tgz 来解压
发布了247 篇原创文章 · 获赞 38 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_39541632/article/details/104640612