菜单

4166m金沙进程管理命令,个命令行工具

2019年8月31日 - 4166m金沙
4166m金沙进程管理命令,个命令行工具

监控 Linux 系统的 7 个命令行工具

这里有一些基本的命令行工具,让你能更简单地探索和操作Linux。

4166m金沙 1

Image courtesy Meltys-stock

 

Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

深入

关于Linux最棒的一件事之一是你能深入操作系统,来探索它是如何工作的,并寻找机会来微调性能或诊断问题。这里有一些基本的命令行工具,让你能更简单地探索和操作Linux。大多数的这些命令是在你的Linux系统中已经内建的,但假如它们没有的话,就用谷歌搜索命令名和你的发行版名吧,你会找到哪些包需要安装(注意,一些命令是和其它命令捆绑起来打成一个包的,你所找的包可能写的是其它的名字)。如果你知道一些你所使用的其它工具,欢迎评论。

 

linux上进程有5种状态:

1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的状态码:

D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process 
+:前台进程
l:多线程进程
L:内存 分页并带锁
N:低优先级进程
<:高优先级进程
s:session leader,会话子进程发起者 

我们怎么开始

4166m金沙 2

须知: 本文中的截图取自一台Debian Linux 8.1 (“Jessie”),其运行在OS X
10.10.3 (“Yosemite”)操作系统下的Oracle VirtualBox
4.3.28中的一台虚拟机里。想要建立你的Debian虚拟机,可以看看我的这篇教程——“如何在
VirtualBox VM 下安装 Debian”。

 

pstree

pstree命令以树状图的方式展现进程之间的派生关系(“{}”表示线程)

选项:

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法; 
-G:使用VT100终端机的列绘图字符; 
-h:列出树状图时,特别标明现在执行的程序; -H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序; -l:采用长列格式显示树状图; 
-n:用程序编号排序。预设是以程序名称来排序; 
-p:显示程序识别码; 
-u:显示用户名称; 
-U:使用UTF-8列绘图字符; 
-V:显示版本信息。

Top

4166m金沙 3

作为Linux系统监控工具中比较易用的一个,top命令能带我们一览Linux中的几乎每一处。以下这张图是它的默认界面,但是按“z”键可以切换不同的显示颜色。其它热键和命令则有其它的功能,例如显示概要信息和内存信息(第四行第二个),根据各种不一样的条件排序、终止进程任务等等(你可以在这里找到完整的列表)。

 

ps

命令功能:
用来显示当前进程的状态

参数

a  显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
c  显示进程的真实名称
-N 反向选择
-e 等于“-A”
f  显示程序间的关系
-H 显示树状结构
r  显示当前终端的进程
T  显示当前终端的所有程序
u  指定用户的所有进程
--help 显示帮助信息
--version 显示版本显示
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 作业格式
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行


k| --sort 属性  对属性排序
    k %mem    对mem使用率排序   
-o 用户自定义格式。
     pid 、comm(cmd) 、%cpu 、%mem 、state 、tty 、euser、user(有效用户) 、ruser(真实用户)、euser(==user为生效用户),psr为cpu使用数量
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
    ps -C f1.sh  列出f1.sh的信息        
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数

显示优先级
    ni:nice值
    pri:priority  优先级
    psr:processor CPU编号
    rtprio:实时优先级
    示例: 
        ps axo pid,cmd,psr,ni,pri,rtprio  (rtprio超出99的不显示) 

4166m金沙 4

nice [OPTION] [COMMAND [ARG]...]
nice -n --20 ping 127.0.0.1 修改ping的nice优先级为-20

查看:

ps axo pid,comm,ni

1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。

常用组合:-ef
    -e:显示所有进程
    -f:显示完整格式程序信息
常用组合:-eFH
    -F:显示更完整格式的进程信息
    -H:以进程层级格式显示进程相关信息
常用组合:自定义(参数‘o’在最后)
    ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm k %mem
    psaxo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,cmd k %cpu  
    ps -C f1.sh o pid cmd user ruser %cpu psr ni 
        查看f1.sh命令的pid等信息,user为有效用户,ruser为真实用户 psr为cpu的使用

4166m金沙 5

4166m金沙 6

USER    用户名
UID     用户ID(User ID)
PID     进程ID(Process ID)
PPID    父进程的进程ID(Parent Process id)
SID     会话ID(Session id)
%CPU    进程的cpu占用率
%MEM    进程的内存占用率
VSZ     系统所允许进程使用的虚存的大小(Virtual Size)
RSS     进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY     与进程关联的终端(tty)
STAT    进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行  Runnable (on run queue),正在运行或在运行队列中等待。
S 睡眠  Sleeping休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲  Idle
Z 僵死  Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断  Uninterruptible sleep (ususally IO)    收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止 Terminate进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页  has no resident pages  没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先级进程 低优先序的进程
L 内存锁页  Lock有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组 
START  进程启动时间和日期
TIME   进程使用的总cpu时间
COMMAND  正在执行的命令行命令
NI     优先级(Nice)
PRI    进程优先级编号(Priority)
WCHAN  进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS  与进程相关的数字标识

htop

4166m金沙 7

相比top,它的替代品Htop则更为精致。维基百科是这样描述的:“用户经常会部署htop以免Unix
top不能提供关于系统进程的足够信息,比如说当你在尝试发现应用程序里的一个小的内存泄露问题,Htop一般也能作为一个系统监听器来使用。相比top,它提供了一个更方便的光标控制界面来向进程发送信号。”
(想了解更多细节猛戳这里)

 

pgrep

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

pgrep(选项)(参数) 
    选项 
        -o:仅显示找到的最小(起始)进程号;
        -n:仅显示找到的最大(结束)进程号; 
        -l:显示进程名称; 
        -g:指定进程组; 
        -t:指定开启进程的终端; 
        -u:指定进程的有效用户ID。 
        -U uid: real user,真正发起运行命令者
        -P pid:显示指定进程的子进程
        -a:显示完整格式的进程名
    参数 
        进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

示例:
    pgrep -au danran
    pgrep -aU danran 
    pgrep -at tty2   显示tty2终端的进程   
    pgrep -lt tty2 显示tty2终端的进程
    pgrep -P 5998 显示编号5998进程的信息  

Vmstat

4166m金沙 8

Vmstat是一款监控Linux系统性能数据的简易工具,这让它更合适使用在shell脚本中。使出你的正则表达式绝招,用vmstat和cron作业来做一些激动人心的事情吧。“后面的报告给出的是上一次系统重启之后的均值,另外一份报告给出的则是从前一个报告起间隔周期中的信息。其它的进程和内存报告是那个瞬态的情况”(猛戳这里获取更多信息)。

 

pidof:显示指定进程的编号,可判断该进程是否存在

ps

4166m金沙 9

ps命令展现的是正在运行中的进程列表。在这种情况下,我们用“-e”选项来显示每个进程,也就是所有正在运行的进程了(我把列表滚动到了前面,否则列名就看不到了)。这个命令有很多选项允许你去按需格式化输出。只要使用上述一点点的正则表达式技巧,你就能得到一个强大的工具了。猛戳这里获取更多信息。

 

uptime

uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

4166m金沙 10

image

14:34:55 //系统当前时间
up 2:45,  //主机已运行时间,时间越大,说明你的机器越稳定。
4 user  //用户连接数,是总连接数而不是用户数
load average   // 系统平均负载,统计最近1,5,15分钟的系统平均负载
    系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
    如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
    如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图