04 进程、挂载和数据处理命令

4.1 检测程序

探查进程

ps命令支持三种不同风格的参数:

  • Unix风格:加单破折线

  • BSD风格:不加破折线

  • GNU风格:加双破折线

每种风格的参数都很多,下面举常用的例子

Unix风格

ps -ef

-e表示输出所有进程,-f表示输出完整信息。每列的意义:

  • UID:启动进程的用户

  • PID:进程id

  • PPID:父进程id

  • C:进程生命周期中的CPU利用率

  • STIME:启动进程时的系统时间

  • TTY:启动进程时的终端设备

  • TIME:运行进程需要的累计CPU时间

  • CMD:启动的程序名称

如果还想获得更多信息,可以使用-l参数。多输出的列的意义:

  • F:内核分配给进程的系统标记

  • S:进程的状态(O正在运行,S在休眠,R可运行正等待运行,Z僵尸状态,T停止)

  • PRI:优先级,数字越小优先级越高

  • NI:谦让度(nice值)设置之后:PRI(new)=PRI(old)+nice。

  • ADDR:进程的内存地址

  • SZ:进程被换出,所需交换空间大小

  • WCHAN:值为0代表进程处于运行态;否则代表内核地址(休眠态)

僵尸进程是指完成执行但在操作系统的进程表中仍然有一个表项,处于"终止状态"的进程。

BSD风格

很多系统管理员喜欢用BSD风格的l参数,其一些列的含义:

  • VSZ:进程在内存中的大小,单位为KB。

  • RSS:进程在未换出时占用内存的大小。

  • STAT:代表当前进程状态的双字符状态码

STAT第一个字符含义和Unix风格的S列相同,第二个参数则是进一步说明进程的状态:

  • <:该进程运行在高优先级上

  • N:该进程运行在低优先级上

  • L:该进程有页面锁定在内存中

  • s:该进程是控制进程

  • l:该进程是多线程的

GNU长参数

--forest可以显示进程的层级信息

实时监测进程top

前五行是系统信息概况,分别是:

  • 第一行:当前时间、系统运行时间、登录用户数、系统平均负载(分别是最近1分钟、5分钟和15,值越大负载越高)

  • 第二行:Task(即进程)信息

  • 第三行:CPU利用率信息

  • 第四五行:内存状态

下面的是进程信息,有些列和ps一样。其他列的含义:

  • PR:优先级

  • NI:nice值

  • VIRT:进程占得虚拟内存总量

  • RES:进程占用的物理内存总量

  • SHR:进程和其他进程共享的物理内存

  • S:进程的状态

  • %CPU:进程使用CPU的时间比

  • %MEM:进程使用内存的空间比

  • TIME+:进程自启动到目前为止的CPU时间总量

结束进程

linux沿用了Unix进程间用信号通信的方法。大多数编写完善的程序都能接受和处理标准的unix信号。

信号

名称

描述

1

HUP

挂起

2

INT

中断

3

QUIT

结束运行

9

KILL

无条件终止

11

SEGV

段错误

15

TERM

尽可能终止

18

TSTP

停止或暂停,但在后台继续运行

kill

kill命令通过PID给进程发送一个TERM信号。kill不能通过进程名给进程发送信号。用参数-s还支持其他信号,如

kill -s HUP 3940

killall

killall支持进程名,且还支持通配符。

4.2 监测磁盘空间

挂载存储媒体

在图形化环境中,大多数发行版都支持自动挂载可移动存储媒体,如CD-ROM、软盘和U盘

mount

直接使用mount命令会输出当前系统的挂载信息,每行有四部分

  • 设备名

  • 挂载点

  • 文件系统类型

  • 已挂在媒体的访问状态(可能没有)

/dev/sdb1 on /media/disk type vfat意思是把U盘挂载到了/media/disk,文件类型是vfat。

Linux可识别的文件类型非常多。如果适合Windows共用一些设备,可以用如下的文件格式:

  • vfat:Windows长文件系统

  • ntfs:Windows NT、XP、Vista的Win7中广泛使用的高级文件系统

  • iso9660:标准CD-ROM文件系统

要手动将U盘/dev/sdb1挂载到/media/disk,可以用命令

mount -t vfat /dev/sdb1 /media/disk

-o参数允许在挂载时添加一些额外的选项:

  • ro:以只读形式挂载

  • rw:以只写形式挂载

  • user:允许普通用户挂载文件系统

  • check=none:挂载文件系统时不进行完整性校验

  • loop:挂载一个文件

umount

注意u后面没有n。可以用过设备文件或者挂载点来卸载:

umount [ directory | device ]

df

可以方便的看到已挂载的磁盘的使用情况。一个常用的参数是-h,使空间单位更易读。

du

du查看某个特定目录(默认是当前目录)的磁盘使用情况。du默认会递归列出所有子目录和子文件。du一般配合参数使用:

  • -h:更易读

  • -c:显示已列文件总的大小

  • -s:显示总计

4.3 处理数据文件

数据排序sort

sort默认是按字符排序,下面是一些参数:

  • -n:按数字排序

  • -M:按月排序

  • -r:降序输出(默认是升序)

  • -t:字段分隔符

  • -k:排序的字段

如我们对/etc/passwd里面的内容按:分隔,按第三个字段(即用户ID)排序

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

对du的结果按文件从大到小排序

du -ch * | sort -nr

搜索数据

grep [ options ] pattern [ file ]

grep输出的就是包含匹配模式的行。常用参数

  • -v:反向搜索,输出不包含匹配模式的行

  • -n:显示行号

  • -c:统计有多少行匹配

  • -e:指定多个模式(之间是或的关系)如grep -e t -r f file1,输出匹配t或f的行

压缩数据

工具

文件扩展名

描述

compress

.Z

最初的Unix文件压缩工具,已经快没人用了

bzip2

.bz2

用Burrrows-Wheeler块排序文本压缩算法和霍夫曼编码

gzip

.gz

GNU压缩工具,用Lempel-Ziv编码

zip

.zip

Windows上PKZIP工具的unix实现

gzip软件包是linux上最流行的压缩工具,包含

  • gzip:用来压缩文件

  • gzcat:用来查看压缩过的文件的内容

  • gunzip:用来解压文件

归档数据

tar常用的参数:

  • -c:create,创建tar文件

  • -t:列出已有tar归档文件的内容

  • -x:extract,提取文件

  • -v:在处理文件时显示文件

  • -f:file,输出结果到文件或设备file

下面的命令吧test和test2目录的内容归档到test.tar文件

tar -cvf test.tar test/ test2/

列出test.tar文件的内容

tar -tf test.tar

提取内容

tar -xvf test.tar

.tgz结尾的文件时gzip压缩过的tar文件。可以用tar -zxvf filename.tgz来解压