第四章 更多bash shell命令一
Key words : 进程查看 :ps top 监控磁盘空间:mount、df、du 操作数据文件 sort grep Linux文件压缩工具:bzip2 compresse gzip zip
4.1.1进程查看
ps 默认情况下只显示属于当前用户正在当前终端中运行的程序
[root@localhost ~]# ps
PID TTY TIME CMD
4026 pts/0 00:00:00 bash
4793 pts/0 00:00:00 ps
ps本身提供的信息很少,但它有很多参数,可以实现强大的功能
linux中使用的GNU ps命令支持3种不同的命令行参数:
1、Unix类型参数,前面有一短划线
2、BSD类型参数,前面没有短划线
3、GNU长参数,前面有双短划线
unix类型常用参数:
ps -e/A 显示所有进程
-f 显示完整的格式列表
-l 显示长列表
ps -ef 是最常用最有用的
例:
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 20:35 ? 00:00:07 init [5]
root 2 1 0 20:35 ? 00:00:00 [migration/0]
root 3 1 0 20:35 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 20:35 ? 00:00:00 [watchdog/0]
root 5 1 0 20:35 ? 00:00:00 [migration/1]
root 6 1 0 20:35 ? 00:00:00 [ksoftirqd/1]
root 7 1 0 20:35 ? 00:00:00 [watchdog/1]
。。。。。。
UID :负责启动进程的用户
PID :进程ID
PPID:父进程ID
C :进程存续期的处理器利用率
STIME :进程启动时的系统时间
TTY:进程从中启动的终端
TIME:运行进程所需的累积CPU时间
CMD:启动程序的名称
[root@localhost ~]# ps -el 若希望查看更多的信息,可以l参数
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 78 0 - 518 - ? 00:00:07 init
1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:00 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
5 S 0 4 1 0 -40 - - 0 watchd ? 00:00:00 watchdog/0
1 S 0 5 1 0 -40 - - 0 migrat ? 00:00:00 migration/1
1 S 0 6 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/1
5 S 0 7 1 0 -40 - - 0 watchd ? 00:00:00 watchdog/1
F:内核分配给进程的系统标记
s :进程的状态(O=在处理器上运行; S=睡眠 ; R=可运行,等待运行 ; Z=死进程,进程以
终止但父进程不可用 ; T=进程已停止)
PRI:进程的优先级,数字越大优先级越低
NI :nice value 用于判断优先级
ADDR:进程的内存地址
SZ:换出进程大致需要的交换空间
WCHAN:进程睡眠时所在的内核函数的地址
BSD类型参数:
与Unix类型参数有许多相同之处,最常用的是l 参数
[root@localhost ~]# ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 3483 1 17 0 1664 452 - Ss+ tty1 0:00 /sbin/mingetty t
4 0 3484 1 18 0 1664 452 - Ss+ tty2 0:00 /sbin/mingetty t
4 0 3485 1 18 0 1664 448 - Ss+ tty3 0:00 /sbin/mingetty t
4 0 3486 1 19 0 1664 448 - Ss+ tty4 0:00 /sbin/mingetty t
4 0 3487 1 20 0 1664 448 - Ss+ tty5 0:00 /sbin/mingetty t
4 0 3488 1 21 0 1664 452 - Ss+ tty6 0:00 /sbin/mingetty t
4 0 3590 3586 15 0 18372 10400 - Rs+ tty7 0:29 /usr/bin/Xorg :0
0 0 4026 4022 15 0 4912 1520 wait Ss pts/0 0:00 bash
4 0 6055 4026 17 0 4456 844 - R+ pts/0 0:00 ps l
不同的地方是
VSZ :进程在内存中的大小,以KB为单位
RSS:进程使用过且未被换成的物理内存
STAT:由两个字符组成的状态码,表示当前进程的状态,第一个字符与Unix类型的S输出列的值相同
,第二个字符进一步定义进程的状态:
< : 进程正以高优先级运行
N :进程正以低优先级运行
L:进程在内存中存在锁定页面
s:进程是会话的领导者
l:进程是多线程的
+:进程正在前台运行
4.1.2实时进程监控
ps只能显示特定时间点的信息,而top命令可以实时显示进程信息,例如在内存中换进换出的进程趋
势、负载值等。
[root@localhost ~]# top
top - 22:32:40 up 1:57, 2 users, load average: 0.07, 0.02, 0.00
Tasks: 95 total, 2 running, 93 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.1%us, 2.9%sy, 0.0%ni, 93.8%id, 0.0%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 1035064k total, 331236k used, 703828k free, 87928k buffers
Swap: 2097144k total, 0k used, 2097144k free, 145676k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3590 root 15 0 35356 9.9m 5820 S 7.1 1.0 0:36.91 Xorg
4022 root 15 0 100m 17m 10m R 4.1 1.7 0:08.06 gnome-terminal
3733 root 15 0 39848 11m 7664 S 0.3 1.1 0:01.06 metacity
3828 root 15 0 16904 4080 3188 S 0.3 0.4 0:01.71 gnome-screensav
6867 root 18 0 2300 1080 836 R 0.3 0.1 0:00.14 top
1 root 18 0 2072 660 568 S 0.0 0.1 0:07.19 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.35 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
。。。。。。
第一行:当前时间 系统已正常运行的时间 登录的用户数量 系统平均负载
平均负载包括三个值,分别是1分钟平均负载、5分钟平均负载、15分钟平均负载。值越高则系统负
载越大,短期活动使1分钟平均负载值冲高是常见的,但是15分钟平均负载值处于高位则表示系统可能
遇到了麻烦。平均负载值依赖于在系统的硬件配置和其中运行的程序,这个值对不同的系统有不同的影
响,但一般来说,如果平均负载值高于2则表示系统趋于繁忙。
第二行:一般进程信息:有多少进程在运行、睡眠、已停止、僵死(已经运行完毕,但父进程未响应)
第三行:CPU的一般信息
第四第五行:系统内存状态
剩下的信息跟PS命令的输出相似。
默认情况下,top会根据%CPU的值对程序进行排序,但可以在top运行其中按下互交式命令改变
程序行为
b 启用表中重要数据用粗体显示
z 显示颜色
l 在单个CPU与symmetric Muutiprocessor(SMP)状态之间切换
F 选择对进程进行排序的字段
m 切换MEM和SWAP信息行显示
k 杀死特定进程
q 退出top命令
d/s 更改更新时间(默认为3秒)
u 显示特定用户的进程
w 将当前设置写入配置文件
。。。。。。
4.1.3停止进程——需要root用户或进程所有者
Linux沿用了Unix中的进程间通信方法,在Linux中,各种进程使用信号相互通信,进程信号是进程可
以识别的预定义信息,进程可以选择忽略它或作出响应,大多数精心编写的应用程序都能接收标准Unix
进程信号,并对此作出响应。
Linux进程信号:
信号
|
名称
|
描述
|
1
|
HUP
|
挂起
|
2
|
INT
|
中断
|
3
|
QUIT
|
停止运行
|
9
|
KILL
|
强制终止
|
11
|
SEGV
|
段违例
|
15
|
TERM
|
条件终止
|
17
|
STOP
|
强制停止但未终止
|
18
|
TSTP
|
停止或暂停,但仍继续在后台运行
|
19
|
CONT
|
STOP或TSTP之后恢复执行
|
kill 和killall 命令可以向运行中的进程发送进程信号
kill 命令根据PID将信号发送给相关进程,默认情况下kill命令向进程发送TERM(15)信号友好地通知
进程停止运行,但当进程失控时很可能忽略该请求。当需要执行强制措施时可以通过使用参数-s 来指定
其他信号(名称或信号编号)
例:
[root@localhost ~]# kill 4302
[root@localhost ~]# kill -s 9 4302
[root@localhost ~]# kill -2 4532
[root@localhost ~]# kill QUIT 4597
killall可以根据进程名称来停止进程,还允许使用通配符,对处理出错的系统非常有用。但使用时务必小心,否则很容易导致意外停止重要的系统进程,使文件系统受损。
[root@localhost ~]# killall gnome-terminal