| 选项 | 描述 |
|---|---|
| -A | 显示所有进程 |
| -N | 显示与指定参数不符的所有进程 |
| -a | 显示除控制进程(session leader)和无终端进程外的所有进程 |
| -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 | 显示更多的额外输出(相对-f 选项而言) |
| -O | 显示默认的输出列以及 format 列表指定的特定列 |
| -M | 显示进程的安全信息 |
| -c | 显示进程的额外的调度器信息 |
| -f | 显示完整格式的输出 |
| -j | 显示作业信息 |
| -l | 显示长列表 |
| -o format | 仅显示由 format 指定的列 |
| -y | 不显示进程标志 |
| -Z | 显示安全上下文信息 |
| -H | 以层级格式显示进程(显示父进程) |
| -n namelist | 定义要在 WCHAN 输出列中显示的值 |
| -w | 采用宽输出格式,不限宽度显示 |
| -L | 显示进程中的线程 |
| -V | 显示 ps 命令的版本号 |
| 选项 | 描述 |
|---|---|
| T | 显示与当前终端关联的所有进程 |
| a | 显示与任意终端关联的所有进程 |
| g | 显示包括控制进程在内的所有进程 |
| r | 仅显示运行中的进程 |
| x | 显示所有进程, 包括未分配任何终端的进程 |
| U userlist | 显示属于 userlist 列表中某个用户 ID 所有的进程 |
| p pidlist | 显示 PID 在 pidlist 列表中的进程 |
| t ttylist | 显示与 ttylist 列表中的某个终端关联的进程 |
| O format | 除了标准列,还输出由 format 指定的列 |
| X | 以寄存器格式显示数据 |
| Z | 在输出中包含安全信息 |
| j | 显示作业信息 |
| l | 采用长格式显示 |
| o format | 仅显示由 format 指定的列 |
| s | 采用信号格式显示 |
| u | 采用基于用户的格式显示 |
| v | 采用虚拟内存格式显示 |
| N namelist | 定义要在 WCHAN 输出列中显示的值 |
| O order | 定义信息列的显示顺序 |
| S | 将子进程的数值统计信息(比如 CPU 和内存使用情况)汇总到父进程中 |
| c | 显示真实的命令名称(用以启动该进程的程序名称) |
| e | 显示命令使用的环境变量 |
| f | 用层级格式来显示进程, 显示哪些进程启动了哪些进程 |
| h | 不显示头信息 |
| k soft | 指定用于排序输出的列 |
| n | 使用数值显示用户 ID 、组 ID 以及 WCHAN 信息 |
| w | 为更宽的终端屏幕生成宽输出 |
| H | 将线程显示为进程 |
| m | 在进程之后显示线程 |
| L | 列出所有的格式说明符 |
| V | 显示 ps 命令的版本 |
| 选项 | 描述 |
|---|---|
| –deselect | 显示除命令行中列出的进程之外的其他进程 |
| –Group grplist | 显示组 ID 在 grplist 列表中的进程 |
| –User userlist | 显示用户 ID 在 userlist 列表中的进程 |
| –group grplist | 显示有效组 ID 在 grplist 列表中的进程 |
| –user userlist | 显示有效用户 ID 在 userlist 列表中的进程 |
| –pid pidlist | 显示 pid 在 pidlist 列表中的进程 |
| –ppid pidlist | 显示父 pid 在 pidlist 列表中的进程 |
| –sid sidlist | 显示会话 ID 在 sidlist 列表中的进程 |
| –tty ttylist | 显示终端设备 ID 在 ttylist 列表中的进程 |
| –format format | 仅显示由 format 指定的列 |
| –context | 显示额外的安全信息 |
| –cols n | 将屏幕宽度设置为 n 列 |
| –columns n | 将屏幕宽度设置为 n 列 |
| –cumulative | 包含已停止的子进程的信息 |
| –forest | 用层级结构显示出进程和父进程之间的关系 |
| –headers | 在每页输出中都显示列名 |
| –no-headers | 不显示列名 |
| –lines n | 将屏幕高度设置为 n 行 |
| –rows n | 将屏幕高度设置为 n 行 |
| –sort order | 指定用于排序输出的列 |
| –width n | 将屏幕宽度设置为 n 列 |
| –help | 显示帮助信息 |
| –info | 显示调试信息 |
| –version | 显示 ps 命令的版本号 |
在 Linux 中,进程之间通过信号来通信。进程的信号是预定义好的一个消息,进程能识别该消息并决定忽略还是做出反应。进程如何处理信号是由开发人员通过编程来决定的。大多数编写完善的应用程序能接收和处理标准 Unix 进程信号。
Linux 进程信号
| 信号 | 名称 | 描述 |
|---|---|---|
| 1 | HUP | 挂起 |
| 2 | INT | 中断 |
| 3 | QUIT | 结束运行 |
| 9 | KILL | 无条件终止 |
| 11 | SEGV | 段错误 |
| 15 | TERM | 尽可能终止 |
| 17 | STOP | 无条件停止运行,但不终止 |
| 18 | TSTP | 停止或暂停,但继续在后台运行 |
| 19 | CONT | 在 STOP 或 TSTP 之后恢复执行 |
在 Linux 中有两个命令可以向运行中的进程发出进程信号: kill 和 pkill。
Linux 文件系统会将所有的磁盘都并入单个虚拟目录。在使用新的存储设备之前,需要将其放在虚拟目录中。这项工作称为挂载(mounting)。
用于挂载存储设备的命令叫作 mount。在默认情况下, mount 命令会输出当前系统已挂载的设备列表。但是, 除了标准存储设备, 较新版本的内核还会挂载大量用作管理目的的虚拟文件系统。
如果知道设备分区使用的文件系统类型,可以像下面这样过滤输出。
$ mount -t ext4
mount 命令提供了 4 部分信息。
要手动在虚拟目录中挂载设备,需要以 root 用户身份登录,或是以 root 用户身份运行 sudo 命令。下面是手动挂载设备的基本命令:
mount -t type device directory
mount -t vfat /dev/sdb1 /media/disk
一旦存储设备被挂载到虚拟目录, root 用户就拥有了对该设备的所有访问权限,而其他用户的访问则会被限制。可以通过目录权限指定用户对设备的访问权限。
mount 命令选项
| 选项 | 描述 |
|---|---|
| -a | 挂载/etc/fstab 文件中指定的所有文件系统 |
| -f | 模拟挂载设备, 但并不真正挂载 |
| -F | 和-a 选项一起使用时,同时挂载所有文件系统 |
| -v | 详细模式,显示挂载设备的每一步操作 |
| -i | 不使用/sbin/mount.filesystem 下的任何文件系统协助文件 |
| -l | 自动给 ext2 、ext3 、ext4 或 XFS 文件系统添加文件系统标签 |
| -n | 挂载设备,但不在/etc/mtab 已挂载设备文件中注册 |
| -p num | 进行加密挂载时从文件描述符 num 中获得口令 |
| -s | 忽略该文件系统不支持的挂载选项 |
| -r | 将设备挂载为只读 |
| -w | 将设备挂载为可读写(默认选项) |
| -L label | 将设备按指定的 label 挂载 |
| -U uuid | 将设备按指定的 uuid 挂载 |
| -O | 和-a 选项一起使用,限制其所作用的文件系统 |
| -o | 给文件系统添加特定的选项 |
mount 命令的 -o 选项允许在挂载文件系统时添加一系列以逗号分隔的额外选项。常用选项如下。
移除可移动设备时,不能直接将设备拔下,应该先卸载。卸载设备的命令是 umount。
Linux 不允许直接弹出已挂载的 CD 或 DVD 。如果在从光驱中移除 CD 或 DVD 时遇到麻烦,那么最大的可能是它还在虚拟目录中挂载着。应该先卸载, 然后再尝试弹出。
umount 命令的格式:
umount [directory | device ]
umount 命令支持通过设备文件或者挂载点来指定要卸载的设备。如果有任何程序正在使用设备上的文件,则系统将不允许卸载该设备。
如果在卸载设备时,系统提示设备繁忙,无法卸载,那么通常是有进程还在访问该设备或使用该设备上的文件。这时可用 lsof 命令获得相关进程的信息,然后将进程终止。 lsof 命令的用法很简单: lsof /path/to/device/node, 或者 lsof /path/to/mount/point。
处理大量数据时的一个常用命令是 sort。sort 可以轻松地对大数据文件进行排序。
在默认情况下,sort 命令会依据会话所指定的默认语言的排序规则来对文本文件中的数据行进行排序。
在默认情况下,sort 命令会将数字视为字符并执行标准的字符排序,这种结果可能不是你想要的。可以使用-n 选项来解决这个问题,该选项会告诉 sort 命令将数字按值排序。
另一个常用的选项是-M,该选择可以将数字按月排序,sort 命令就能识别三字符的月份名(例如,Jan、Feb等)并正确排序。 Linux 的日志文件经常在每行的起始位置有一个时间戳,以表明事件是什么时候发生的。
sort 命令选项
| 短选项 | 长选项 | 描述 |
|---|---|---|
| -b | –ignore-leading-blanks | 排序时忽略起始的空白字符 |
| -C | –check=quiet | 不排序, 如果数据无序也不要报告 |
| -c | –check | 不排序, 但检查输入数据是否有序,无序的话就报告 |
| -d | –dictionary-order | 仅考虑空白字符和字母数字字符,不考虑特殊字符 |
| -f | –ignore-case | 大写字母默认先出现,该选项会忽略大小写 |
| -g | –general-numeric-sort | 使用一般数值进行排序 |
| -i | –ignore-nonprinting | 在排序时忽略不可打印字符 |
| -k | –key=POS1 [,POS2] | 排序键从 POS1 位置开始, 到 POS2 位置结束(如果指定了 POS2 的话) |
| -M | –month-sort | 用三字符的月份名按月份排序 |
| -m | –merge | 合并两个已排序数据文件 |
| -n | –numeric-sort | 将字符串按数值意义排序 |
| -o | –output=file | 将排序结果写入指定文件 |
| -R | –random-sort | 根据随机哈希排序 |
| -R | –random-source=FILE | 指定-R 选项用到的随机字节文件 |
| -r | –reverse | 逆序排序(升序变成降序) |
| -S | –buffer-size=SIZE | 指定使用的内存大小 |
| -s | –stable | 禁止 last-resort 比较,实现稳定排序 |
| -T | –temporary-directory=DIR | 指定用于保存临时工作文件的目录 |
| -t | –field-separator=SEP | 指定字段分隔符 |
| -u | –unique | 和-c 选项合用时,检查严格排序;不和-c 选项合用时,相同行仅输出一次 |
| -z | –zero-terminated | 在行尾使用 NULL 字符代替换行符 |
$ sort -t ':' -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...
$ du -sh * | sort -nr
1008k mrtg-2.9.29.tar.gz
972k bldg1
888k fbs2.pdf
760k Printtest
...
grep [options] pattern [file]
$ grep [tf] file1
Linux 文件压缩工具
| 工具 | 文件扩展名 | 描述 |
|---|---|---|
| bzip2 | .bz2 | 采用 Burrows-Wheeler 块排序文本压缩算法和霍夫曼编码 |
| compress | .Z | 最初的 Unix 文件压缩工具,已经快要无人使用了 |
| gzip | .gz | GNU 压缩工具,用 Lempel-Zivwelch 编码 |
| xz | .xz | 日渐流行的通用压缩工具 |
| zip | .zip | Windows 中 PKZIP 工具的 Unix 实现 |
gzip 软件包包括以下文件。
gzip 命令会压缩命令行中指定的文件。也可以指定多个文件名或是用通配符来一次性压缩多个文件,gzip 命令会压缩该目录中匹配通配符的每个文件。
tar 命令的格式如下。
tar function [options] object1 object2 ...
tar 命令的操作
| 操作 | 长选项 | 描述 |
|---|---|---|
| -A | –concatenate | 将一个 tar 归档文件追加到另一个 tar 归档文件末尾 |
| -c | –create | 创建新的 tar 归档文件 |
| -d | –diff | 检查归档文件和文件系统的不同之处 |
| –delete | 从 tar 归档文件中删除文件 | |
| -r | –append | 将文件追加到 tar 归档文件末尾 |
| -t | –list | 列出 tar 归档文件的内容 |
| -u | –update | 将比 tar 归档文件中已有的同名文件更新的文件追加到该归档文件 |
| -x | –extract | 从 tar 归档文件中提取文件 |
每种操作都使用 option(选项)来定义针对 tar 归档文件的具体行为。
tar 命令选项
| 选项 | 描述 |
|---|---|
| -C dir | 切换到指定目录 |
| -f file | 将结果输出到文件(或设备) |
| -j | 将输出传给 bzip2 命令进行压缩 |
| -J | 将输出传给 xz 命令进行压缩 |
| -p | 保留文件的所有权限 |
| -v | 在处理文件时显示文件名 |
| -z | 将输出传给 gzip 命令进行压缩 |
| -Z | 将输出传给 compress 命令进行压缩 |
// 该命令创建了一个名为 test.tar 的归档文件,包含目录 test和 test2 的内容
tar -cvf test.tar test/ test2/
// 该命令列出了(但不提取)tar 文件 test.tar 的内容
tar -tf test.tar
// 该命令从 tar 文件 test.tar 中提取内容。如果创建的时候 tar 文件含有目录结构,则在当前目 录中重建该目录的整个结构。
tar -xvf test.tar
在下载开源软件时经常会看到文件名以.tgz 结尾,这是经 gzip压缩过的 tar 文件,可以用命令 tar -zxvf filename.tgz 来提取其中的内容。