检测程序
探查进程 —— 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 命令会输出当前系统上挂载的设备列表,会提供如下四部分信息:
- 媒体的设备文件名
- 媒体挂载到虚拟目录的挂载点
- 文件系统类型
- 已挂载媒体的访问状态
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 盘
- 挂载光盘
mkdir /mnt/cdrom/
# 建立挂载点(盘符——C,D,E,F)
mount -t iso9600 /dev/cdrom /mnt/cdrom/
# 挂载光盘 设备文件名 挂载点
mount /dev/sr0/mnt/cdrom
- 卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
- 挂载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 来解压