1、pstree命令:显示进程树
[root@localhost ~]# pstree init─┬─auditd───{auditd} ├─crond ├─dbus-daemon───{dbus-daemon} ├─httpd───3*[httpd───26*[{httpd}]] ├─master─┬─pickup │ └─qmgr ├─6*[mingetty] ├─mysqld_safe───mysqld───20*[{mysqld}] ├─rsyslogd───3*[{rsyslogd}] ├─sshd───sshd───bash───pstree └─udevd───2*[udevd]
# Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
2、ps命令:显示进程的当前状态
命令格式:ps [ OPTION ] ...
(1)常用组合:aux
a: 与终端相关的进程;
u: 以用户为中心组织进程状态信息显示
x: 与终端无关的进程;
[root@localhost ~]# ps aux | head -8 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.0 19232 1512 ? Ss 07:32 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 07:32 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 07:32 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S 07:32 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 07:32 0:00 [stopper/0] root 6 0.0 0.0 0 0 ? S 07:32 0:00 [watchdog/0] root 7 0.0 0.0 0 0 ? S 07:32 0:00 [migration/1]
各字段解析:
VSZ: Virtual memory SiZe,虚拟内存集
RSS: ReSident Size, 常驻内存集
STAT:进程状态
R:running,运行中
S: interruptable sleeping,可中断睡眠
D: uninterruptable sleeping,不可中断睡眠
T: stopped,停止状态
Z: zombie,僵尸状态
+: 前台进程
l: 多线程进程
N:低优先级进程
<: 高优先级进程
s: session leader
(2)常用组合:-ef
-e: 显示所有进程
-f: 显示完整格式程序信息
(3)常用组合:-eFH
-F: 显示完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
ni: nice值
pri: priority,优先级
psr: processor, CPU
rtprio: 实时优先级
3、pgrep, pkill
pgrep [options] pattern:根据进程相关属性查找进程
pkill [options] pattern:发送信号(signal)到指定进程
options:
-u uid: effective user
-U uid: real user
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示其父进程为此处指定的进程的进程列表
4、pidof: 根据进程名获取其PID
[root@localhost ~]# pidof httpd 1455 1454 1453 1411
5、top and htop :显示进程相关信息
(1)top命令:
排序:
P:以占据的CPU百分比;
M:占据内存百分比;
T:累积占据CPU时长;
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
选项:
-d #: 指定刷新时间间隔,默认为3秒;
-b: 以批次方式;
-n #: 显示多少批次;
[root@localhost ~]# top -d 3 -b -n 2
(2)htop命令:
选项:
d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程;
-s COLOMN: 以指定字段进行排序;
命令:
s: 跟踪选定进程的系统调用;
l: 显示选定进程打开的文件列表;
a:将选定的进程绑定至某指定CPU核心;
t: 显示进程树
6、vmstat命令:虚拟内存状态信息显示
命令格式:vmstat [options] [delay [count]]
选项: -s: 显示内存的统计数据
各字段解析:
procs:
r:等待运行的进程的个数;
b:处于不可中断睡眠态的进程个数;(被阻塞的队列的长度);
memory:
swpd: 交换内存的使用总量;
free:空闲物理内存总量;
buffer:用于buffer的内存总量;
cache:用于cache的内存总量;
swap:
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap中的数据速率(kb/s)
io:
bi:从块设备读入数据到系统的速率;(kb/s)
bo: 保存数据至块设备的速率;
system:
in: interrupts, 中断速率;
cs: context switch, 进程切换速率;
cpu:
us:用户空间所占CPU使用时间比例
sy:内核空间所占比例
id:空闲时间所占比例
wa:等待IO时间所占比例
st:虚拟机偷盗CPU时间所占比例
7、glances命令:
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
i Sort 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 hddtemp stats
常用选项:
-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:要连入的服务器端地址)
8、dstat命令:生成系统资源统计信息工具
dstat [-afv] [options..] [delay [count]]
options:-c: 显示cpu相关信息;
-C #,#,...,total
-d: 显示disk相关信息;
-D total,sda,sdb,...
-g:显示page相关统计数据;
-m: 显示memory相关统计数据;
-n: 显示network相关统计数据;
-p: 显示process相关统计数据;
-r: 显示io请求相关的统计数据;
-s: 显示swapped相关的统计数据;
--tcp:显示tcp连接状态
(listen, established, syn, time_wait, close)
--udp:显示udp连接状态信息
--unix:unix域套接字状态信息
--raw:raw套接字状态信息
--socket:套接字状态信息
--ipc:ipc状态信息
--top-cpu:显示最占用CPU的进程;
--top-io: 显示最占用io的进程;
--top-mem: 显示最占用内存的进程;
--top-lantency: 显示延迟最大的进程;
例:延时为2,显示5次
9、sar:收集报告或保存系统活动信息
命令格式:sar [options] [-A] [ -o [ filename ]] t [n]
t:采样间隔
n:采样次数,默认值是1;
-o filename :将命令结果以二进制格式保存在文件中。
options :
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
[root@localhost ~]# sar-u -o sar.txt 2 3 Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015 _x86_64_ (1 CPU) 11:28:25 PM CPU %user %nice %system %iowait %steal %idle 11:28:27 PM all 0.50 0.00 1.98 0.99 0.00 96.53 11:28:29 PM all 0.00 0.00 1.51 1.51 0.00 96.98 11:28:31 PM all 0.00 0.00 1.50 1.50 0.00 97.00 Average: all 0.17 0.00 1.66 1.33 0.00 96.84
[root@localhost ~]# sar -r 2 3 Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015 _x86_64_ (1 CPU) 11:29:54 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 11:29:56 PM 1597996 308496 16.18 20496 162756 91560 3.10 11:29:58 PM 1597872 308620 16.19 20496 162756 91560 3.10 11:30:00 PM 1597872 308620 16.19 20496 162756 91560 3.10 Average: 1597913 308579 16.19 20496 162756 91560 3.10
[root@localhost ~]# sar -d -p 2 1 Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015 _x86_64_ (1 CPU) 11:34:28 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 11:34:30 PM sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:34:30 PM sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:34:30 PM sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
常用选项:
查看CPU: sar -u、 sar -q
查看内存:sar -B、sar -r、sar -W
查看I/O: sar -b、sar -u、sar -d -p
10、kill命令:向进程发送控制信号,以实现对进程管理
显示当前系统可用信号:
# kill -l
# man 7 signal
常用信号:
1) SIGHUP: 无须关闭进程而让其重读配置文件;
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c;
9) SIGKILL: 杀死正在运行的进程;
15) SIGTERM:终止正在运行的进程;
18) SIGCONT:
19) SIGSTOP:
指定信号的方法:
(1) 信号的数字标识;1, 2, 9
(2) 信号完整名称;SIGHUP
(3) 信号的简写名称;HUP
向进程发信号:
kill [-SIGNAL] PID...
终止“名称”之下的所有进程:
killall [-SIGNAL] Program
11、nice and renice:进程优先级调整
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120;
nice命令:
nice [OPTION] [COMMAND [ARG]...]
renice命令:
renice [-n] priority pid...
查看:
ps axo pid,comm,ni
[root@centos7 ~]# nice -n 5 httpd [root@centos7 ~]# ps -axo pid,comm,ni | grep httpd 6760 httpd 5 6762 httpd 5 6763 httpd 5 6764 httpd 5 [root@centos7 ~]# renice -n 0 `pidof httpd` 6760 (process ID) old priority 5, new priority 0 6762 (process ID) old priority 5, new priority 0 6763 (process ID) old priority 5, new priority 0 6764 (process ID) old priority 5, new priority 0
12、Linux的作业控制
前台作业:通过终端启动,且启动后一直占据终端;
后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);
让作业工作与后台
(1) 运行中的作业
Ctrl+z
(2) 尚未启动的作业
# COMMAND &
此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系:
# nohup COMMAND &
查看所有作业:
# jobs
作业控制:
# fg [[%]JOB_NUM]:把指定的后台作业调回前台;
# bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;
# kill [%JOB_NUM]:终止指定的作业,必须带%;