linux中进程及内存管理工具

pstree 显示进程树 ({}是线程)

选项-p #显示进程编号

pstree username #查看指定用户的进程

centos7中可以使用选项-s来查看指定进程的父子进程

 

ps (默认显示当前终端运行的进程)

支持三种选项:

1、UNIX选项

-C cmdlist 指定命令(允许同时指定多个命令)

-L 显示线程

-e: 显示所有进程,相当于-A

-f: 显示完整格式程序信息

-F: 显示更完整格式的进程信息

-H: 以进程层级格式显示进程相关信息

-u userlist 指定有效的用户ID或名称(发起者)

-U userlist 指定真正的用户ID或名称(执行者)

-g gid或groupname 指定有效的gid或组名称

-G gid或groupname 指定真正的gid或组名称

-p pid 显示指定pid的进程(支持多个)

–ppid pid 显示属于pid的子进程

-M 显示SELinux信息,相当于Z

-t 指定终端号

2、BSD选项

a 选项包括所有终端中的进程

x 选项包括不链接终端的进程

u 选项显示进程所有者的信息

f 选项显示进程树,相当于 –forest

k|–sort 属性 对属性排序,属性前加- 表示倒序

o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

L 显示支持的属性列表

常用组合-例:

ps axo pid,cmd,%cpu –sort %cpu

ps -C vim o pid,cmd,%mem

ps aux

3、GNU选项

–sort

–ppid

 

ps输出属性说明

VSZ 虚拟内存(系统分配的内存大小)

RSS 实际内存(进程实际可用的内存大小)

STAT:进程状态

R:running

S: interruptable sleeping

D: uninterruptable sleeping

T: stopped

Z: zombie

+: 前台进程

l: 多线程进程

L:内存分页并带锁

N:低优先级进程

<: 高优先级进程

s: session leader,会话(子进程)发起者

ps示例

列出有效组名称(或会话)所拥有的所有进程:

ps -fg mysql ps -fG 27

以父进程ID来显示其下所有的进程,如显示父进程为1154的 所有进程:

ps -f –ppid 1234

查看进程的PID,PPID,用户名和命令:

ps -eo pid,ppid,user,cmd

自定义格式显示文件系统组,ni值开始时间和进程的时间:

ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime

查找指定进程名所有的所属PID,在编写需要从std输出或文 件读取PID的脚本时这个参数很有用:

ps -C httpd,sshd -o pid=

检查一个进程的执行时间

ps -eo comm,etime,user | grep nginx

查找占用最多内存和CPU的进程:

ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head

ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head

使用watch实用程序执行重复的输出以实现对就程进行实时的 监视,如下面的命令显示每秒钟的监视:

watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=- %mem | head’

 

pidof cmd   #查看此进程下的所有子进程

说明:此命令可以作为判断进程是否运行正常的手段

 

uptime

显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

系统平均负载: 指在特定时间间隔内运行队列中的平均进程数

通常每个CPU内核的当前活动进程数不大于3,那么系统 的性能良好。如果每个CPU内核的任务数大于5,那么此 主机的性能有严重问题

如果linux主机是1个双核CPU,当Load Average 为6的 时候说明机器已经被充分使用

 

top:有许多内置命令:

排序:

P:以占据的CPU百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU时长,TIME+

首部信息显示:

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

 

栏位信息简介

us:用户空间

sy:内核空间

ni:调整nice时间

id:空闲

wa:等待IO时间

hi:硬中断

si:软中断(模式切换)

st:虚拟机偷走的时间

 

选项:

-d #: 指定刷新时间间隔,默认为3秒

-b: 全部显示所有进程

-n #: 刷新多少次后退出

 

ltop命令

选项:

-d #: 指定延迟时间;

-u UserName: 仅显示指定用户的进程

-s COLUME: 以指定字段进行排序

子命令:

s: 跟踪选定进程的系统调用

l: 显示选定进程打开的文件列表

a:将选定的进程绑定至某指定CPU核心

t: 显示进程树

 

vmstat命令:虚拟内存信息(以内存为参照)

vmstat 1 5   #1秒显示1次,显示5次

输出说明:

procs

r:可运行(正运行或等待运行)进程的个数,和核心数有关

b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)

memory

swpd: 交换内存的使用总量

free:空闲物理内存总量

buffer:用于buffer的内存总量

cache:用于cache的内存总量

swap:

si:从磁盘交换进内存的数据速率(kb/s)

so:从内存交换至磁盘的数据速率(kb/s)

io:

bi:从块设备读入数据到系统的速率(kb/s)

bo: 保存数据至块设备的速率

system

in: interrupts 中断速率,包括时钟

cs: context switch 进程切换速率

选项

-s: 显示内存的统计数据

 

iostat  #统计CPU和设备IO信息

iostat 1 10  #1秒显示一次,10次结束

 

glances 远程监控主机状态

服务器模式:

glances -s -B IPADDR

IPADDR: 指明监听的本机哪个地址

不加-B 监听在所有地址

客户端模式:

glances -c IPADDR

IPADDR:要连入的服务器端地址

 

iotop命令是一个用来监视磁盘I/O使用状况的top类工具

iotop输出说明

第一行:Read和Write速率总计

第二行:实际的Read和Write速率

第三行:参数如下:

线程ID(按p切换为进程ID)

优先级

用户

磁盘读速率

磁盘写速率

swap交换百分比

IO等待所占的百分比

线程/进程命令

iotop常用参数

-o, –only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。

-b, –batch非交互模式,一般用来记录日志。

-n NUM, –iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。

-d SEC, –delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。

-p PID, –pid=PID指定监测的进程/线程。

-u USER, –user=USER指定监测某个用户产生的I/O

-P, –processes仅显示进程,默认iotop显示所有线程。

-a, –accumulated显示累积的I/O,而不是带宽。

-k, –kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用

-t, –time 加上时间戳,非交互非模式

-q, –quiet 禁止头几行,非交互模式,有三种指定方式

-q 只在第一次监测时显示列名

-qq 永远不显示列名

-qqq 永远不显示I/O汇总

交互按键

left和right方向键:改变排序

r:反向排序

o:切换至选项–only

p:切换至–processes选项

a:切换至–accumulated选项

q:退出

i:改变线程的优先级

 

kill命令(

显示当前系统可用信号

kill –l或trap -l

常用信号

1) SIGHUP: 无须关闭进程而让其重读配置文件

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

3) SIGQUIT:相当于ctrl+\

9) SIGKILL: 强制杀死正在运行的进程

15) SIGTERM:终止正在运行的进程

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠

0  检查进程是否正常工作

 

指定信号的方法:

(1) 信号的数字标识:1, 2, 9

(2) 信号完整名称:SIGHUP

(3) 信号的简写名称:HUP

 

例:

按pid

kill -SIGNAL pid

按名字

Killall -SIGNAL cmd

按模式

pkill

-SIGNAL

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-l: 显示进程名(pgrep可用)

-a: 显示完整格式的进程名(pgrep可用)

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90203

(0)
oranixoranix
上一篇 2017-12-17
下一篇 2017-12-17

相关推荐

  • 集中管理利器-puppet快速入门-中

    集中管理利器-puppet快速入门-中 6.    尝试启动master puppet 启动master puppet,并确认8140端口已被监听:  #puppet返回成功,但不一定能成功启动,puppet这个功能希望能改进… 7.    目录结构 /etc/puppet/  …

    Linux干货 2015-05-04
  • 第8天磁盘管理练习—增加SWAP分区

          SWAP交换空间,指在物理内存不够用时,充当虚拟内存使用。在实际操作中,使用1-2G的一个分区并指定分区类型为SWAP,挂载至SWAP来使用。 一、新增分区 fdisk /dev/sda n     #新增加分区 t   &nb…

    Linux干货 2016-07-04
  • 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

    一、环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新版本war包位置 生产环境服务器:192.168.13.51 /home/app/api-tomcat/webapps/api.war为生产环境war包位置 /…

    Linux干货 2016-12-18
  • 浅谈HTTP协议以及httpd的十八般武艺

      初识HTTP协议                HTTP(hyper text transfer protocal)作为互联网应用最广泛的协议,任何一个运维人员都无法回避它,HTTP的目的就是提供一种发布和…

    Linux干货 2016-02-14
  • N28-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    Linux干货 2017-12-19