linux系统进程查看及管理工具
对于服务器来说重要的IO 设备
磁盘
网络
pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall…..
pstree命令:
pstree-display a tree of processes -p 显示进程树进程的pid [root@localhost ~]# pstree systemd─┬─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─abrt-watch-log ├─abrtd ├─alsactl ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─bluetoothd ├─chronyd ├─crond ├─cupsd ├─dbus-daemon ├─gssproxy───5*[{gssproxy}] ├─login───bash ├─lsmd ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─polkitd───5*[{polkitd}] ├─rngd ├─rsyslogd───2*[{rsyslogd}] ├─smartd ├─sshd───sshd───bash───pstree ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] └─wpa_supplicant
ps
给当前系统进程做一个快照。直显示命令执行那一刻的状态。 /proc/:内核中的状态信息 内核参数: 可设置其值从而调整内核运行特征的参数 状态变量:其用于输出内核中统计信息或状态信息,仅用于参看。 参数:模拟成文件系统类型; 进程: /proc/ 都有一个与其进程号相同的目录。 进程启动的方式 系统奇多过程中自动启动:与终端无关的进程 用户通过终端启动:无终端相关的进程
ps有三种风格的选项
有必须带-
有的必须不能带-
有的必须–
常用方式
a与终端相关的进程 x与终端无关的进程 u与用户相关的进程 o 指定要显示的内容 [ ] 内核启动的线程 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND VSZ: Virtual memory SiZe,虚拟内存集,线性内存 RSS: ReSidentSize, 常驻内存集 STAT:进程状态 R:running S: interruptables leeping 可中断的 D: uninterruptable sleeping 不可中断的 T: stopped Z: zombie +: 前台进程 l: 多线程进程 N:低优先级进程 <: 高优先级进程 s: session leader,会话(子进程)发起者 TIME:该进程累计占用cpu的时间
pgrep/pkill
进程搜索
按预定义的模式:pgrep pgrep[options] patter -u uid: effective user,生效者 -U uid: real user,真正发起运行命令者 -t terminal: 与指定终端相关的进程 -l: 显示进程名 -a: 显示完整格式的进程名 -P pid: 显示父进程为此处指定的进程的进程列表 pgrep -t pts/0 l 显示pts/0终端运行的进程, l 显示进程名称 pgrep -t pts/0 -a 显示的更详细,命令的参数都显示出来。 pgrep -P 24944 -a 24979 passwd 显示24944的子进程,pid是24979 名称 passwd
pidof
/sbin/pidof
按确切的程序名称:
$ pidof bash 显示系统中运行的bash进程。例如开其了多个终端,就会有多个进程。
系统工具
uptime 显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、15分钟的平均负载,一般不会超过1) 系统平均负载: 指在特定时间间隔内运行队列中的平均进程数。 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。 如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。 [root@localhost]# uptime -p up 6 hours, 48 minutes
进程管理工具
top
实时跟踪,动态先显示内存cpu情况
top - 23:53:18 up 7:33, 3 users, load average: 0.05, 0.06, 0.06 ##相当于uptime Tasks: 364 total, 2 running, 362 sleeping, 0 stopped, 0 zombie ##进程信息 %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st###cpu信息 KiB Mem : 1001332 total, 113420 free, 168424 used, 719488 buff/cache ##内存信息 KiB Swap: 2098172 total, 2098172 free, 0 used. 611316 avail Mem ##内存信息 上面的信息可以关闭显示。 top:有许多内置命令: 排序: P:以占据的CPU百分比,%CPU M:占据内存百分比,%MEM T:累积占据CPU时长,TIME+ 首部信息显示: uptime信息:l命令 tasks及cpu信息:t命令 centos7切换显示方式或关闭。 cpu分别显示:1 (数字) memory信息:m命令 退出命令:q 修改刷新时间间隔:s 默认是三秒 不建议刷新间隔太小,会给系统改造成负担 终止指定进程:k centos7会给出个默认的pid cup使用率最高的。可以手动指定pid 选择pid 然后 Kill PID 1684 with signal [15]:默认发送15号信号。 保存文件:W 存到用户的家目录下 默认名字 .toprc 执行top后 输入上面相应指令集可以操作。 栏位信息简介 us:用户空间 sy:内核空间 ni:调整nice时间 id:空闲 wa:等待IO时间 hi:硬中断 si:软中断(模式切换) st:虚拟机偷走的时间 PID (Process Id):任务的进程IDPPID (Parent Process Pid):父任务的进程IDRUSER (Real User Name):任务的所有者真实名称UID (User Id):任务所有者IDUSER (User Name):任务所有者名称GROUP (Group Name):任务所有者群组名TTY (Controlling Tty):终端PR (Priority):优先级%CPU (CPU usage):CPU使用率 %MEM (Memory usage (RES)):内存使用率 S (Process Status):进程状态 TIME+ (CPU Time, hundredths):CPU时间,精确到秒 top [OPENTION] -d #: 指定刷新时间间隔,默认为3秒 -b: 以批次方式 一般情况屏幕显示不全,-b 一屏的往下翻,循环。 -n #: 显示多少批次 刷新次数完毕退出,默认是一直刷新,但是时间间隔可以指定-d。 -p cpu使用率排序 (默认) top -d 5 -n 3 每隔5秒刷新一次,刷新3次
htop命令:需从Fedora-EPEL源安装
默认带菜单,带颜色。f1-f10快捷键
http://172.16.0.1/fedora-epel/7/x86_64 选项: -d #: 指定延迟时间; -u UserName: 仅显示指定用户的进程; -s COLUME: 以指定字段进行排序; 子命令:执行htop以后执行的子命令 s: 跟踪选定进程的系统调用; l: 显示选定进程打开的文件列表; a:将选定的进程绑定至某指定CPU核心; t: 显示进程树
内存工具
vmstat命令:虚拟内存信息 vmstat[options] [delay [count]] vmstat 2 5 2秒刷新一次,刷新5次 默认刷新一次 [root@localhost ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 8 126136 1596 711028 0 0 13 16 37 40 0 0 99 0 0 显示完毕就退出
显示内容
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, 进程切换速率 cpu: us:Timespent running non-kernel code. sy: Time spent running kernel code id: Time spent idle. Linux 2.5.41前,包括IO-wait time. wa: Time spent waiting for IO. 2.5.41前,包括in idle. st: Time stolen from a virtual machine. 2.6.11前, unknown. 选项: -s: 显示内存的统计数据 [root@localhost ~]# vmstat -s 1001332 K total memory 162076 K used memory 316484 K active memory 236640 K inactive memory 126664 K free memory 1596 K buffer memory 710996 K swap cache 2098172 K total swap 8 K used swap 2098164 K free swap 4521 non-nice user cpu ticks 695 nice user cpu ticks 10009 system cpu ticks 2950649 idle cpu ticks 3636 IO-wait cpu ticks 0 IRQ cpu ticks 160 softirq cpu ticks 0 stolen cpu ticks 371505 pages paged in 458693 pages paged out 0 pages swapped in 2 pages swapped out 1086138 interrupts 1188701 CPU context switches 1471940397 boot time 47448 forks
pmap
pmap命令:进程的内存映射 report memory map of a process pmap[options] pid[...] -x: 显示详细格式的信息; #pmap 1 另外一种实现: # cat /proc/PID/maps pmap PID -x [root@localhost ~]# pmap 47188 -x 47188: -bash Address Kbytes RSS Dirty Mode Mapping 0000000000400000 884 648 0 r-x-- bash 00000000006dc000 4 4 4 r---- bash 00000000006dd000 36 36 36 rw--- bash 00000000006e6000 24 24 24 rw--- [ anon ] 0000000001f1b000 1456 1328 1328 rw--- [ anon ] 00007f1d2f25f000 103580 52 0 r---- locale-archive 00007f1d35786000 44 20 0 r-x-- libnss_files-2.17.so 00007f1d35791000 2044 0 0 ----- libnss_files-2.17.so 00007f1d35990000 4 4 4 r---- libnss_files-2.17.so 00007f1d35991000 4 4 4 rw--- libnss_files-2.17.so 00007f1d35992000 24 0 0 rw--- [ anon ] 00007f1d35998000 1752 660 0 r-x-- libc-2.17.so 00007f1d35b4e000 2048 0 0 ----- libc-2.17.so 00007f1d35d4e000 16 16 16 r---- libc-2.17.so 00007f1d35d52000 8 8 8 rw--- libc-2.17.so 00007f1d35d54000 20 20 20 rw--- [ anon ] 00007f1d35d59000 12 8 0 r-x-- libdl-2.17.so 00007f1d35d5c000 2044 0 0 ----- libdl-2.17.so 00007f1d35f5b000 4 4 4 r---- libdl-2.17.so 00007f1d35f5c000 4 4 4 rw--- libdl-2.17.so 00007f1d35f5d000 148 124 0 r-x-- libtinfo.so.5.9 00007f1d35f82000 2048 0 0 ----- libtinfo.so.5.9 00007f1d36182000 16 16 16 r---- libtinfo.so.5.9 00007f1d36186000 4 4 4 rw--- libtinfo.so.5.9 00007f1d36187000 132 116 0 r-x-- ld-2.17.so 00007f1d3638f000 12 12 12 rw--- [ anon ] 00007f1d3639e000 4 4 4 rw--- [ anon ] 00007f1d3639f000 28 24 0 r--s- gconv-modules.cache 00007f1d363a6000 8 8 8 rw--- [ anon ] 00007f1d363a8000 4 4 4 r---- ld-2.17.so 00007f1d363a9000 4 4 4 rw--- ld-2.17.so 00007f1d363aa000 4 4 4 rw--- [ anon ] 00007fff60224000 132 24 24 rw--- [ stack ] 00007fff602a7000 8 4 0 r-x-- [ anon ] ffffffffff600000 4 0 0 r-x-- [ anon ] ---------------- ------- ------- ------- total kB 116596 3188 1532
系统监控工具
glances
glances命令:EPEL源 交直观的现实系统状态,cpu 内存 进程 文件系统 网络 等状态 glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output] 内建命令: a Sort processes automatically l Show/hide logs c Sort processes by CPU% b Bytes or bits for network I/O m Sort processes by MEM% w Delete warning logs p Sort processes by name x Delete warning and critical logs iSort processes by I/O rate 1 Global CPU or per-CPU stats d Show/hide disk I/O stats h Show/hide this help screen f Show/hide file system stats t View network I/O as combination n Show/hide network stats u View cumulative network I/O s Show/hide sensors stats q Quit (Esc and Ctrl-C also work) y Show/hide hddtempstats 常用选项: -b: 以Byte为单位显示网卡数据速率 -d: 关闭磁盘I/O模块 -f /path/to/somefile: 设定输入文件位置 -o {HTML|CSV}:输出格式 -m: 禁用mount模块 -n: 禁用网络模块 -t #: 延迟时间间隔 -1:每个CPU的相关数据单独显示 C/S模式下运行glances命令 服务模式: glances -s -B IPADDR IPADDR: 指明监听的本机哪个地址 客户端模式: glances -c IPADDR IPADDR:要连入的服务器端地址
dstat
dstat命令:系统资源统计 dstat[-afv] [options..] [delay [count]] -c: 显示cpu相关信息 -C #,#,...,total -d: 显示disk相关信息 -D total,sda,sdb,... -g:显示page相关统计数据 -m: 显示memory相关统计数据 -n: 显示network相关统计数据 -p: 显示process相关统计数据 -r: 显示io请求相关的统计数据 -s: 显示swapped相关的统计数据 --tcp --udp --unix --raw --socket --ipc --top-cpu:显示最占用CPU的进程 --top-io: 显示最占用io的进程 --top-mem: 显示最占用内存的进程 --top-latency: 显示延迟最大的进程 PLUGINS While anyone can create their own dstat plugins (and contribute them) dstat ships with a number of plugins already that extend its capabilities greatly. Here is an overview of the plugins dstat ships with: 电源 风扇 mysql wifi 报文 网络 磁盘 cpu........
进程管理工具
kill
kill命令: 向进程发送控制信号,以实现对进程管理 显示当前系统可用信号:kill -l 常用信号:man 7 signal 1) SIGHUP: 无须关闭进程而让其重读配置文件 systemctl reload SERVICENAME 等同于SIGHUP 2) SIGINT: 中止正在运行的进程;相当于Ctrl+c 9) SIGKILL: 杀死正在运行的进程 不管进程处于何种操作,强行中断并杀死。 15) SIGTERM:终止正在运行的进程(默认选项),通常是个后台进程。 等待进程自己结束必要操作后,杀死进程。 18) SIGCONT: 继续 有些程序放到后台还是会自己运行的例如cp(不是停止状态)。 19) SIGSTOP: 停止,打开vim后 ctrl + z将vim送到后台。 该进程就处于停止状态。 打开vim后 ctrl + z将vim送到后台。 该进程就处于停止状态 fg 将其送回前台继续运行。 指定信号的方法: (1) 信号的数字标识;1, 2, 9 (2) 信号完整名称;SIGHUP (3) 信号的简写名称;HUP 按PID:kill [-SIGNAL] pid… 按名称:kill all[-SIGNAL] comm… killall httpd 按模式:pkill[options] pattern -SIGNAL -u uid: effective user,生效者 -U uid: real user,真正发起运行命令者 -t terminal: 与指定终端相关的进程 -l: 显示进程名 -a: 显示完整格式的进程名 -P pid: 显示父进程为此处指定的进程的进程列表
原创文章,作者:yyw,如若转载,请注明出处:http://www.178linux.com/44962