Linux学习笔记(四)

第四章 更多的bash shell命令

1.监测程序

ps:当程序运行在系统上时,称之为进程(process)ps命令用来查看进程相关的信息。默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户的进程。

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

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

Unix风格的参数,前面加单破折线

BSD风格的参数,前面不加破折线

GNU风格的长参数,前面加双破折线

Unix风格的参数

-ef显示系统上的所有进程。

$ ps -ef
UID PID PPID C STIME TTY  TIME    CMD
root 1  0    0 11:29 ?  00:00:01 init [5]
root 2  0    0 11:29 ?  00:00:00 [kthreadd]
root 3  2    0 11:29 ?  00:00:00 [migration/0]
root 4  2    0 11:29 ?  00:00:00 [ksoftirqd/0]

UID:启动这些进程的用户

PID:进程ID

PPID:父进程的进程号(如果该进程是由另一个进程启动的)

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

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

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

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

CMD:启动进程名称

可以使用-l参数获取更多的信息

$ ps -l
F S UID PID  PPID C PRI NI ADDR SZ WCHAN TTY  TIME     CMD
0 S 500 3081 3080 0 80  0  - 1173  wait pts/0 00:00:00 bash
0 R 500 4463 3081 1 80  0  - 1116  -    pts/0 00:00:00 ps

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

S:进程的状态(O代表正在运行,S代表正在休眠,R代表可运行,正等待运行,Z代表僵化,进程已结束但父进程已不存在,T代表停止)

PRI:进程的优先级(数字越大代表优先级越低)

NI:谦让度,用来参与决定优先级

ADDR:进程的内存地址

SZ:假如进程被换出,所需交换空间的大致大小

WCHAN:进程休眠的内核函数的地址

BSD(Berkeley software distribution)风格的参数

$ ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY   TIME COMMAND
0 500 3081 3080 20 0 4692 1432 wait Ss   pts/0 0:00  -bash
0 500 5104 3081 20 0 4468 844	 -  R+   pts/0 0:00  ps l

VSZ:进程在内存中的大小,以千字节(KB)为单位

RSS:进程在未换出时占用的物理内存

STAT:代表当前进程状态的双字符状态码,第一个字符与Unix风格的S列相同,第二个字符进一步说明进程的状态。

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

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

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

s:该进程是控制进程

l:该进程是多线程的

+:该进程运行在前台

GNU长参数不再介绍。Unix和BSD类型的参数有很多重叠的地方,只使用一个风格的参数即可。ps命令参数较多,可以记录自己常用的命令即可。

实时检测进程

ps命令只能显示某个特定时间点的信息,如果想观察频繁环进环出内存的进程趋势,需要使用top命令。
在这里插入图片描述

第一部分显示的是系统的概况,第一行显示了当前时间,系统的运行时间,登录的用户数以及系统的平均负载。平均负载有三个值,最近1分钟,最近5分钟,最近15分钟的平均负载。值越大说明系统的负载越高。由于进程短期的突发性活动,出现最近1分钟的高负载也很常见,如果近15分钟内的平均负载都很高,就说明系统可能有问题。通常,如果系统的负载值超过2,说明系统比较繁忙了。

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

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

接下来的两行说明了系统的内存状态。第一行说的是系统的物理内存,第二行说的是系统交换空间的内存信息。

最后一行说的是当前运行中的进程的详细列表,跟ps命令的输出类似。默认情况下,top命令启动时会按照%CPU值对进程排序,可以使用top运行时使用交互命令重新排序。在top运行时输入单字符可以改变top的行为,f可选择对输出进行排序的字段,d修改轮询间隔,q退出top。

结束进程

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

信号名称描述
1HUP挂起
2INT中断
3QUIT结束运行
9KILL无条件终止
11SEGV无条件终止
15TERM尽可能终止
17STOP无条件停止运行,但不终止
18TSTP停止或暂停,但继续在后台运行
19CONT在STOP或TSTP之后恢复执行

在Linux中有两个可以向运行中的进程发送进程信号。

kill:通过进程ID(PID)给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。要发送进程信号,你必须是进程属主或登录为root用户。

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

如果要强制终止,-s参数支持指定其他信号。要检查kill命令是否有效,可再运行ps命令或top命令,查看进程是否已停止。

killall:支持通过进程而不是PID来结束进程,也支持通配符。

2.检测磁盘信息

挂载存储媒体

Linux文件系统将所有的磁盘都并入一个虚拟目录下,在使用新的存储媒体之前,需要把它放到虚拟目录下,此操作成为挂载(mounting)

mount:挂载媒体,默认情况下,mount会输出当前系统上挂载的设备列表。

$ mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /media/disk type vfat
(rw,nosuid,nodev,uhelper=hal,shortname=lower,uid=503)

mount提供4部分信息:

媒体的设备文件名,媒体挂载到虚拟目录的挂载点,文件系统类型(type),已挂载媒体的访问状态。

要手动在虚拟目录中挂载设备,需要以root用户身份登录,或以root用户身份运行sudo命令。

mount -t type device directory

type参数指定了磁盘被格式化的文件系统类型。

unmount:从Linux系统上移除一个可移动设备时,不能直接从系统上删除,而应该先卸载。卸载设备的命令是umount,命令格式如下:

umount [directory | device ]

umount命令支持通过设备文件或者是挂载点来指定要卸载的设备。如果有任何程序正在使用设备上的文件,系统就不会允许卸载。

df:查看所有已挂载磁盘的使用情况。

$ df
Filesystem 	1K-blocks 	Used 	Available   Use%   Mounted on
/dev/sda2 	18251068 	7703964 9605024 	45% 	 /
/dev/sda1 	101086 		18680 	77187		20%		 /boot
tmpfs 		119536 		0 		119536		0% 		 /dev/shm
/dev/sdb1 	127462 		113892 	13570 		90% 	 /media/disk

df命令会显示每个有数据的已挂载文件系统。命令输出如下:

设备的设备文件位置

能容纳多少个1024字节大小的块

已用了多少个1024字节大小的块

还有多少个1024字节大小的块可用

已用空间所占的比例

设备挂载到了哪个挂载点上

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

du:显示某个特定的目录(默认当前目录)的磁盘使用情况。此方法可以用来判断系统上某个目录是不是有超大文件。

$ du
484	 	./.gstreamer-0.10
8 		./Templates
8 		./Download
8	    ./.ccache/7/0
24		./.ccache/7

每行输出左边的数值时每个文件或目录占用的磁盘块数。列表是从目录层级的最底部开始,然后按照文件,子目录,目录逐级向上。-c显示所有已列出文件总的大小。-h按用户易读的格式输出大小,即用K替代千字节,M代替兆字节,G代替吉字节。-s显示每个输出参数的总计。

3.处理数据文件

排序数据

sort:对数据进行排序,默认情况下按照指定的默认语言的排序规则对文本中的数据行排序。如果对数字进行排序,需要加入-n参数,因为sort命令会把数字当做字符来执行标准的字符排序。参数-M是按照月排序,Linux日志文件经常会在每行的起始位置有一个时间戳,可以用此参数排序日志。sort命令还有其他的参数,其中比较常用的是-k-t-k排序从POS1位置开始,如果指定了POS2的话,到POS2位置结束,-t指定一个用来区分键位置的字符。可以使用-k-t组合来分别指定排序的字段和指定字段的分隔符。

$ 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

搜索数据

grep:查找命令,语法如下:

grep [options] pattern [file]

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

-v参数进行反向搜索(输出不匹配该模式的行)。

-n显示匹配模式的行所在的行号。

-c参数用来返回有多少行还有匹配的模式。

-e参数指定多个匹配模式。

压缩数据

Linux包含了多种文件压缩工具,常见的有:

工具文件拓展名描述
bzip2.bz2采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码
compress.Z最初的Unix文件压缩工具,快没人用了
gzip.gzGNU压缩工具,用Lempel-Ziv编码
zip.zipWindows上PKZIP工具的Unix实现

gzip:压缩文件

gzcat:查看压缩过的文本文件的内容

gunzip:解压文件

归档数据

zip命令不是Linux中的标准归档工具,目前Linux上最广泛使用的归档工具是tar命令,格式如下:

tar function [options] object1 object2 ...

function参数定义了tar命令应该做什么。常用的参数组合为-cvf-c创建一个新的tar归档文件,-v在处理文件时显示文件,-f输出结果到文件或设备file,-x从已有tar归档文件中提取文件,-t列出已有tar归档文件的内容。

tar -cvf test.tar test/ test2/

创建了名为test.tar的归档文件,含有testtest2目录内容。

tar -tf test.tar

列出tar文件test.tar的内容(不提取文件)。

tar -xvf test.tar

从tar文件test.tar中提取内容。

本章小结

​ 1.进程相关的命令。

​ 2.磁盘相关的命令。

​ 3.处理文件命令(搜索,排序,压缩,归档)

参考文献:Linux命令行与shell脚本编程大全(第三版)Richard Blum Christine Bresnahan著 门佳 武海峰译

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值