linux之进程管理,系统监控

Posted 小火星_Hirsi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之进程管理,系统监控相关的知识,希望对你有一定的参考价值。

一、进程管理

前台进程:一般是指占据着标准输入和/或标准输出的进程
后台进程:不占据
默认开启的进程都是前台进程
ctrl+C 中断
ctrl+z 从前台转入后台
bg 后台进程编号 让其在后台运行
ls -R / & 让其在后台进行

 

使一个进程在后台进行
1.ctrl+z将前台进程调入后台,默认进行到后台后处于停止状态
若想要在后台运行该后台进程,使用 bg # (#表示后台进程编号),此时ctrl+c不管用
2.在开启进程的时候,使用&符号缀在命令之后,也是在后台运行该进程

使用fg命令可以将已被调入后台的进程重新调回前台运行
fg # (#表示后台进程编号)

jobs 列出后台进程
+:将默认操作的进程
-:将第二个操作的进程

杀后台进程:kill -9 PID

红帽5支持 kill %1 杀死一号进程

 

PRI:优先级

renice:调整NI值
renice -10 PID

nice:在执行命令的时候直接指定NI值
nice -n +15 vim .bashrc

 

trap 捕捉指定信号,但是不完成信号本身的功能,而是执行COMMAND部分(信号名字必须大写)
trap ‘命令’ SIG_SPECIFY
trap `echo "not exists"` SIGINT 捕捉到ctrl+c,输出not exists

 

进程的调度执行
守护进程(系统服务),可中断式的睡眠状态进程
ls /etc/init.d

 

kill:后面加PID,向进程或进程组发生信号
2:中断信号,CTRL+C
9:强行终止机制
15:终止进程,默认的信号
kill -l
2) SIGINT(中断) 9) SIGKILL(强制终止机制) 15) SIGTERM


pkill :后面加进程名称,结束进程
pkill vim

killall : kill processes by name
比pkill效率更高一点

二、系统监控命令

ps 查看进程

输出进程状态的即时点信息
选项:
a:所有与终端有关的进程
u:按用户名和启动时间的顺序来显示进程
x:所有与终端无关的进程

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5   2824  1400 ?        Ss   06:07   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    06:07   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    06:07   0:00 [migration/0]

USER: 进程所有者
PID: 进程ID
%CPU: 占用的 CPU 使用率
%MEM: 占用的内存使用率
VSZ: 占用的虚拟内存大小
RSS: 占用的内存大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 进程状态:
START: 启动进程的时间; 
TIME: 进程消耗CPU的时间;
COMMAND:命令的名称和参数;

 

=========================================进程STAT状态==================================
D 无法中断的休眠状态(通常 IO 的进程); 
R 正在运行,在可中断队列中; 
S 处于休眠状态,静止状态; 
T 停止或被追踪,暂停执行; 
W 进入内存交换(从内核2.6开始无效); 
X 死掉的进程; 
Z 僵尸进程不存在但暂时无法消除;
W: 没有足够的记忆体分页可分配
WCHAN 正在等待的进程资源;
<: 高优先级进程
N: 低优先序进程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存

s 进程的领导者(在它之下有子进程); 
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+ 位于后台的进程组;

 

进程的优先级
1.占据CPU处理的时间长短
2.被CPU加载处理的机会

数字越小,优先级越高

0-139
0-99:系统默认定义的
100-139:用户可以调整的

 

NICE 调整nice偏移量,修改优先级 -20~+19

普通用户只能增加nice值,只能使用正整数的nice值
管理员root可以使用负数的nice值

数字越小,优先级越高
120 0

 

ps axo user,pid,command | head -2
USER       PID COMMAND
root         1 /sbin/init

 

pstree :显示进程之间的父子关系
     pstree
init─┬─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─hald───hald-runner─┬─hald-addon-acpi
     │                    ├─hald-addon-inpu
     │                    └─hald-addon-rfki
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─mdadm
     ├─5*[mingetty]
     ├─rpc.idmapd
     ├─rpc.statd
     ├─rpcbind
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]

 

pgrep
查看进程的pid

pgrep ps
36

 

top

top:模式化命令,全屏,动态显示进程信息,默认情况下每三秒刷新一次
   M:按照内存使用率,从大到小排序显示
   P:按照CPU处理的时间排序显示
   T:按照运行时间排序显示   
   l:是否显示开启时间和平均负载的信息
   m:是否显示内存和交换分区的信息
   t:是否显示任务量和CPU的信息
   
   k PID;结束进程
   q:退出TOP界面
   
   -d TIME:修改自动刷新时间
top - 09:00:19 (系统时间)up  2:52(开机时间),  2 users,  load average(负载平均值,1分钟,5分钟,15分钟): 0.07, 0.07, 0.01
Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie(僵尸)
Cpu(s)(只有一个CPU):  0.3%us,  0.3%sy,  0.0%ni(nice), 99.0%id(空闲),  0.0%wa(wait),  0.0%hi(硬交换),  0.3%si(软交换),  0.0%st
Mem:    249620k total,   243048k used,     6572k free,    23696k buffers(缓冲区存元数据信息)
Swap:   524280k total,        0k used,   524280k free,   144352k cached(缓存区存数据信息)

 

netstat

常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

 

 

vmstat:虚拟内存的统计信息

vmstat 1 10:每隔一秒刷新一次,一共显示10次

vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0   6084  24184 144384   54    0     0    23   21   20  0  1 98  1  0

r :表示运行队列,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高

b :表示阻塞的进程数

swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器

free :空闲的物理内存的大小

buff : 系统占用的缓存大小

cache :直接用来记忆我们打开的文件,给文件做缓冲

si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了

us :用户CPU时间

sy :系统CPU时间

so : 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

sy : 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id : 空闲 CPU时间,一般来说,id + us + sy = 100

wt : 等待IO CPU时间。

 

lsof

列出打开的文件

它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件。

 

网络包分析器:tcpdump

 Tcpdump是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。  

-h:查看命令帮助

-i:网络接口

-c :需要输出包数量

 

进程监控:Htop

  Htop 是一个非常高级的交互式的实时linux进程监控工具。 它和top命令十分相似,但是它具有更丰富的特性,例如用户可以友好地管理进程,快捷键,垂直和水平方式显示进程等等。

监控Linux磁盘I/O :Iotop

 Iotop命令同样也非常类似于top命令和Htop程序,不过它具有监控并显示实时磁盘I/O和进程的统计功能。在查找具体进程和大量使用磁盘读写进程的时候,这个工具就非常有用。  

 

输入/输出统计:iostat

  Iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘。

%user: 在用户级别运行所使用的CPU的百分比.

%nice:优先进程消耗的CPU时间,占所有CPU的百分比.

%system: 在系统级别(kernel)运行所使用CPU的百分比.

%iowait: CPU等待硬件I/O时,所占用CPU百分比.

%steal: 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比.

%idle: CPU空闲时间的百分比.


tps: 每秒钟发送到的I/O请求数.

KB_read /s: 每秒读取的block数.

KB_wrtn/s: 每秒写入的block数.

KB_read: 启动到现在 读入的block总数.

KB_wrtn: 启动到现在写入的block总数.

 

实时局域网IP监控:IPTraf

IPTraf是一个在Linux控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的IP流量监控,包括TCP标记、ICMP详细信息、TCP/UDP流量分离、TCP连接包和字节数。同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非IP,IP校验和错误,接口活动等。

服务管理程序:sysv-rc-conf

  Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作。sysv-rc-conf是一个强大的服务管理程序,用于查看程序和服务的运行级别。

监视每个进程使用的网络带宽:NetHogs

  NetHogs是一个开放源源代码的很小程序(与Linux下的top命令很相似),它密切监视着系统上每个进程的网络活动。同时还追踪着每个程序或者应用所使用的实时网络带宽。

 

监视网络带宽:iftop

  iftop是另一个在控制台运行的开放源代码系统监控应用,它显示了系统上通过网络接口的应用网络带宽使用(源主机或者目的主机)的列表,这个列表定期更新。iftop用于监视网络的使用情况,而‘top‘用于监视CPU的使用情况。iftop是‘top‘工具系列中的一员,它用于监视所选接口,并显示两个主机间当前网络带宽的使用情况。

<= => :表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

界面操作:

按h切换是否显示帮助;

按n切换显示本机的IP或主机名;

按s切换是否显示本机的host信息;

按d切换是否显示远端目标主机的host信息;

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;

 

linux系统监控工具——Conky

Conky 是一个应用于桌面环境的系统监视软件,可以在桌面上监控系统运行状态、网络状态等一系列参数,而且可自由定制,但对于新手来说可能会比较难于上手。

Conky是一种自由软件,用于X视窗系统的系统监视,可以在FreeBSD、OpenBSD和各种Linux发布上使用的自由软件。Conky具有很高的可配置性,可以监视许多系统参数,如:CPU、内存、交换内存、硬盘使用情况等状态;各种硬件的温度;系统的进程(top);网络状态;电池电量;系统信息和邮件收发;各种音乐播放器MPD、XMMS2、BMPx、Audacious)的控制。不像其他系统监视器那样需要高级别的部件工具箱(widget toolkits)来渲染他们的信息,Conky可以直接在X视窗下渲染,这意味着在相同配置下Conky可以消耗更少的资源。

 

Linux系统监控工具——Nagios

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。[ Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

Nagios 可以监控的功能有:

1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);

2、监控主机资源(处理器负荷、磁盘利用率等);

3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;

4、并行服务检查机制;

5、具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;

6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);

7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;

8、自动的日志滚动功能;

9、可以支持并实现对主机的冗余监控;

10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;

 































































以上是关于linux之进程管理,系统监控的主要内容,如果未能解决你的问题,请参考以下文章

进程管理之top命令

Linux 编程之信号篇:异常监控必知必会

Linux 编程之信号篇:异常监控必知必会

Day7: Python学习笔记之Linux——系统监控

.Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控

Linux之进程管理相关命令之二