Linux shell 学习笔记(2)— 监测程序、磁盘空间和处理文件(ps -ef、top、kill、df、du 、grep、tar)

1. 监测程序

1.1 检查进程

默认情况下,ps 命令只会显示运行在当前控制台下的属于当前用户的进程。

$ ps
PID   TTY      TIME CMD
3081 pts/0 00:00:00 bash
3209 pts/0 00:00:00 ps

上图显示了程序的进程 ID(Process ID,PID)、它们运行在哪个终端(TTY)以及进程已用的CPU 时间。

ps 命令参数

ps -ef 查看系统上运行的所有进程

$ ps -ef
UID 	PID 	PPID 	C 	STIME 	TTY 		TIME 	CMD
root 	1 		0 		0 	11:29 	? 		00:00:01 	init [5]
...
rich 	3081 	3080 	0 	12:00 	pts/0 	00:00:00 	-bash
rich 	4445 	3081 	3 	13:48	pts/0 	00:00:00 	ps -ef
  • UID:启动这些进程的用户
  • PID:进程的进程ID
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)
  • C: 进程生命周期中的CPU利用率
  • STIME:进程启动时的系统时间
  • TTY: 进程启动时的终端设备
  • TIME:运行进程需要的累计CPU时间
  • CMD:启动的程序名称
1.2 实时监测进程

top 命令跟 ps 命令相似,能够显示进程信息,但它是实时显示的

top 命令结果

输出的第一部分显示的是系统的概况:

第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。

平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。

第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。

下一行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。

最后两行中第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间。

最后一部分显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似:

  • PID:进程的 ID。

  • USER:进程属主的名字。

  • PR:进程的优先级。

  • NI:进程的谦让度值。

  • VIRT:进程占用的虚拟内存总量。

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

  • SHR:进程和其他进程共享的内存总量。

  • S:进程的状态(D 代表可中断的休眠状态,R 代表在运行状态,S 代表休眠状态,T 代表跟踪状态或停止状态,Z 代表僵化状态)。

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

  • %MEM:进程使用的内存占可用内存的比例。

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

  • COMMAND:进程所对应的命令行名称,也就是启动的程序名。

默认情况下,top 命令在启动时会按照 %CPU 值对进程排序。键入 f 允许你选择对输出进行排序的字段,键入 d 允许你修改轮询间隔。键入 q 可以退出 top。

1.3 结束进程

在 Linux 中,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应。

Linux 进程号

  1. kill 命令

    kill命令可通过进程 ID(PID)给进程发信号。默认情况下,kill 命令会向命令行中列出的全部 PID 发送一个 TERM 信号。

    要发送进程信号,你必须是进程的属主或登录为 root 用户。

    $ kill 3940
    -bash: kill: (3940) - Operation not permitted
    

    TERM 信号告诉进程可能的话就停止运行,如果要强制终止,-s 参数支持指定其他信号(用信号名或信号值)。

    $ sudo kill -s HUP 3940
    
  2. killall 命令

    killall 命令非常强大,它支持通过进程名而不是 PID 来结束进程。killall 命令也支持通配符。

    killall http*
    

2. 监测磁盘空间

2.1 使用 df 命令

要知道在某个设备上还有多少磁盘空间,可以使用 df -h ,它会把输出中的磁盘空间按照用户易读的形式显示,通常用 M 来替代兆字节,用 G 替代吉字节。

$ df -h
Filesystem 	Size 	Used 	Avail 	Use% 	Mounted on
/dev/sdb2 	18G 	7.4G 	9.2G 	45% 	/
/dev/sda1 	99M 	19M 	76M 	20% 	/boot
tmpfs 		117M 	0 		117M 	0% 		/dev/shm
/dev/sdb1 	125M 	112M 	14M 	90% 	/media/disk
2.2 使用 du 命令

du 命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。

默认情况下,du 命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。

du 命令常用参数:

  • -c:显示所有已列出文件总的大小。
  • -h:按用户易读的格式输出大小,即用 K 替代千字节,用 M 替代兆字节,用 G 替代吉字节。
  • -s:显示每个输出参数的总计。

3. 处理数据文件

3.1 排序数据

默认情况下,sort 命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。

  • -n 参数 把数字识别成数字而不是字符,并且按值排序。
  • -M 参数 按月排序
  • -k --key=POS1[,POS2] 指定排序的字段,排序从 POS1 位置开始;如果指定了 POS2 的话,到POS2 位置结束
  • -t --field-separator=SEP 指定字段分隔符
  • -r 参数 将结果按降序输出

比如要对前面提到的密码文件 /etc/passwd 根据用户 ID 进行数值排序:

$ 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
3.2 搜索数据

grep 命令的命令行格式:grep [options] pattern [file]

grep 命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。grep 的输出就是包含了匹配模式的行。

  1. 要进行反向搜索(输出不匹配该模式的行),可加 -v 参数

    $ grep -v t file1
    one
    four
    five
    
  2. 要显示匹配模式的行所在的行号,可加 -n 参数

    $ grep -n t file1
    2:two
    3:three
    
  3. 要知道有多少行含有匹配的模式,可用 -c 参数

    $ grep -c t file1
    2
    
  4. 要指定多个匹配模式,可用 -e 参数来指定每个模式

    $ grep -e t -e f file1
    two
    three
    four
    five
    
  5. 默认情况下,grep 命令用基本的 Unix 风格正则表达式来匹配模式。

3.3 压缩数据

gzip 命令会压缩你在命令行指定的文件。也可以在命令行指定多个文件名甚至用通配符来一次性批量压缩文件。

$ gzip my*
$ ls -l my*
-rwxr--r-- 1 rich rich 103 Sep 6 13:43 myprog.c.gz
-rwxr-xr-x 1 rich rich 5178 Sep 6 13:43 myprog.gz
-rwxr--r-- 1 rich rich 59 Sep 6 13:46 myscript.gz
-rwxr--r-- 1 rich rich 60 Sep 6 13:44 myscript2.gz
3.4 归档数据

tar命令的格式:

 tar   function   [options]    object1     object2 ...

function 参数定义了 tar 命令应该做什么,如下图所示:

tar 命令功能

options 参数的选项:
tar 命令选项

这些选项经常合并到一起使用。

  1. 用下列命令来创建一个归档文件

      tar	-cvf	  test.tar 	  test/ 	test2/
    

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

  2. 列出 tar文件 test.tar 的内容

       tar 	-tf 	test.tar
    
  3. 从tar文件test.tar中提取内容

      tar 	-xvf 	 test.tar
    

下载了开源软件之后,你会经常看到文件名以 .tgz 结尾。这些是 gzip 压缩过的 tar 文件可以用命令 tar -zxvf filename.tgz 来解压。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值