第四章 更多bash shell命令一

网友投稿 668 2022-09-24 10:25:02

第四章 更多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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:NETC程序:GB2312汉字编码和C程序LCD显示实现
下一篇:餐饮店如何做好口碑营销?
相关文章