查看进程状态
ps:Process State
支持两种风格
sysV风格:-
BSD风格:
a:所有与终端有关的进程
u:以用户为主的进程状态
x:所有与终端无关的进程
<code>[root@localhost ~]</code><code># ps aux #BSD风格</code>
<code>USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND</code>
<code>root 8228 0.0 0.3 251964 5932 ? Sl 2016 3:39 </code><code>/sbin/rsyslogd</code> <code>-i </code><code>/var/run/syslogd</code><code>.pid -c 5</code>
<code>root 8315 0.0 0.0 93132 884 ? S<sl 2016 4:03 auditd</code>
<code>root 8389 0.0 0.0 21108 492 ? Ss 2016 0:00 </code><code>/usr/sbin/atd</code>
<code>rpc 8507 0.0 0.0 18980 916 ? Ss 2016 0:04 rpcbind -w</code>
<code>root 8562 0.0 0.1 188972 3364 ? Ss 2016 0:00 cupsd -C </code><code>/etc/cups/cupsd</code><code>.conf</code>
<code>root 8820 0.0 0.1 182888 2392 ? Ss 2016 0:00 </code><code>/usr/sbin/abrtd</code>
<code>root 8840 0.0 0.1 180740 3028 ? Ss 2016 0:00 abrt-dump-oops -d </code><code>/var/spool/abrt</code> <code>-rwx </code><code>/var/log/messages</code>
<code>rpcuser 19518 0.0 0.0 23352 1388 ? Ss 2016 0:00 rpc.statd</code>
<code>root 20127 0.0 0.0 11228 1512 ? S< 2016 0:00 </code><code>/sbin/udevd</code> <code>-d</code>
<code>root 20128 0.0 0.0 11092 1116 ? S< 2016 0:00 </code><code>/sbin/udevd</code> <code>-d</code>
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的状态码)
TIME 运行时间(占用cpu时长)
COMMAND 发起的命令,带[]的进程表示为内核线程
ps进程状态:
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵死
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l:多线程进程
s:会话进程的父进程
<code>[root@localhost ~]</code><code># ps -elf #sysV风格</code>
<code>F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD</code>
<code>5 S root 8228 1 0 80 0 - 62991 poll_s 2016 ? 00:03:39 </code><code>/sbin/rsyslogd</code> <code>-i </code><code>/var/run/syslogd</code><code>.pid -c 5</code>
<code>5 S root 8315 1 0 76 -4 - 23283 ep_pol 2016 ? 00:04:03 auditd</code>
<code>5 S root 8389 1 0 80 0 - 5277 hrtime 2016 ? 00:00:00 </code><code>/usr/sbin/atd</code>
<code>5 S rpc 8507 1 0 80 0 - 4745 poll_s 2016 ? 00:00:04 rpcbind -w</code>
<code>4 S root 8562 1 0 80 0 - 47243 ep_pol 2016 ? 00:00:00 cupsd -C </code><code>/etc/cups/cupsd</code><code>.conf</code>
<code>1 S root 8820 1 0 80 0 - 45722 poll_s 2016 ? 00:00:00 </code><code>/usr/sbin/abrtd</code>
<code>0 S root 8840 1 0 80 0 - 45185 inotif 2016 ? 00:00:00 abrt-dump-oops -d </code><code>/var/spool/abrt</code> <code>-rwx </code><code>/var/log/messages</code>
<code>5 S rpcuser 19518 1 0 80 0 - 5838 poll_s 2016 ? 00:00:00 rpc.statd</code>
<code>5 S root 20127 4992 0 78 -2 - 2807 poll_s 2016 ? 00:00:00 </code><code>/sbin/udevd</code> <code>-d</code>
<code>5 S root 20128 4992 0 78 -2 - 2773 poll_s 2016 ? 00:00:00 </code><code>/sbin/udevd</code> <code>-d</code>
pgrep:
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示。常用于脚本获取id号
-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号;
-l:显示进程名称; -P:指定父进程号;
-g:指定进程组;
-t:指定开启进程的终端;
-u:指定进程的有效用户ID。
pidof:根据进程名称,查找相关id的pid号
top:动态查询主机性能
<code>[root@localhost ~]</code><code># top</code>
<code>top</code> <code>- 19:28:41 up 26 days, 7:04, 1 user, load average: 0.07, 0.02, 0.00</code>
<code>Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie</code>
<code>Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%</code><code>id</code><code>, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st</code>
<code>Mem: 1914492k total, 1890628k used, 23864k </code><code>free</code><code>, 182376k buffers</code>
<code>Swap: 1048568k total, 156k used, 1048412k </code><code>free</code><code>, 1460496k cached</code>
<code> </code><code>PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND </code>
<code> </code><code>2507 root 20 0 98.4m 3868 2928 S 0.3 0.2 0:00.02 sshd </code>
<code> </code><code>2509 root 20 0 15032 1220 940 R 0.3 0.1 0:00.01 </code><code>top</code>
<code> </code><code>1 root 20 0 19348 1440 1200 S 0.0 0.1 0:34.45 init </code>
<code> </code><code>2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd </code>
<code> </code><code>3 root RT 0 0 0 0 S 0.0 0.0 0:00.50 migration</code><code>/0</code>
<code> </code><code>4 root 20 0 0 0 0 S 0.0 0.0 0:00.97 ksoftirqd</code><code>/0</code>
<code>top</code> <code>- 19:28:41 :当前时间</code>
<code>up 26 days, 7:04:表示主机运行时长为26天7小时4分</code>
<code>1 user:登录用户数</code>
<code>load average: 0.07, 0.02, 0.00:平均1分钟、5分钟、15分钟的队列长度平均值,越小表示cpu负载越低</code>
<code>Tasks: 94 total:进程总数</code>
<code>1 running: 1个处于运行的,根据cpu核数</code>
<code>93 sleeping:93个睡眠状态的</code>
<code>0 stopped, 0 zombie:0个停止的进程,0个僵死进程</code>
<code>Cpu(s):cpu负载情况,按1键展示所有cpu负载</code>
<code>0.0%us:用户空间的用户进程占用的百分比</code>
<code>0.0%sy:内核空间的用户进程占用的百分比</code>
<code>0.0%ni:调整</code><code>nice</code><code>值后影响的百分比</code>
<code>100.0%</code><code>id</code><code>:空闲的cpu百分比</code>
<code>0.0%wa:等待io占用的百分比</code>
<code>0.0%hi:硬件中断占用的</code>
<code>0.0%si:软中断占用的</code>
<code>0.0%st:被偷走的cpu</code>
<code>Mem:内存使用信息</code>
<code>total:总内存数</code>
<code>used:以使用内存</code>
<code>free</code><code>:空闲内存</code>
<code>buffers:buffers数</code>
<code>Swap:交换空间使用情况。和Mem行一致</code>
<code>PID:进程pid</code>
<code>USER:运行用户</code>
<code>PR:进程优先级,RT表示实时优先级</code>
<code>NI:</code><code>nice</code><code>值</code>
<code>VIRT:虚拟内存集</code>
<code>RES:常驻内存集</code>
<code>SHR:共享内存集</code>
<code>S:状态</code>
<code>%CPU:占用cpu百分比</code>
<code>%Mem:占用内存百分比</code>
<code>TIME:进程在cpu运行时长</code>
<code>COMMAND:进程命令</code>
top常用的交互命令,在top命令界面敲下面的命令
M:根据驻留内存大小进行排序
P:根据CPU使用百分比排序
T:根据累计时间进行排序
l:是否显示平均负载和启动时间,即top第一行
t:是否显示进程的cpu状态相关信息,即top第二行
m:是否显示内存相关信息,即top第三行
c:是否显示完整的命令行信息
q:退出top
k:终止某个进程
-d:指定延迟时长
-b:整屏模式
-n #:共显示多少屏
进程间通信方式(IPC:inter process communication)
共享内存
信号:signal
samaphore
kill:终止进程运行
-l:查看所有kill信号
1、SINGHUP:让进程不需重启,就可重读配置文件,让新配置文件生效
2、SIGINT:终断一个前台进程
9、SIGKILL:杀死一个进程
15、SIGTERM:终止一个进程,在关闭打开文件后终止进程,默认信号,即kill 进程号
<code>[root@localhost ~]</code><code># kill -l</code>
<code> </code><code>1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP</code>
<code> </code><code>6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1</code>
<code>11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM</code>
<code>16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP</code>
<code>21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ</code>
<code>26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR</code>
<code>31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3</code>
<code>38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8</code>
<code>43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13</code>
<code>48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12</code>
<code>53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7</code>
<code>58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2</code>
<code>63) SIGRTMAX-1 64) SIGRTMAX </code>
kill PID
killall COMMAND
前台进程:占据命令提示符
后台作业:启动之后释放命令提示符,操作在后台完成
前台-->后台
Ctrl+z:把正在前天的作业送往后台,默认进入后台为Stopped状态
COMMAND &:让命令在后台执行
bg:让后台的停止作业继续运行.
bg JOBID:使用方法
fg:让后台的作业调回到前台运行
fg JOBID:使用方法
kill %JOBID:终止某作业
jobs:查看后台所有作业,作业号不同于进程号。
+:命令将默认操作的作业
-:命令将第二个默认操作的作业
vmstat:系统状态查看命令
vmstat 1:每隔1秒钟显示一次
vmstat 1 5:每隔1秒钟显示一次,但只显示一次
<code>[root@localhost ~]</code><code># vmstat </code>
<code>procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----</code>
<code> </code><code>r b swpd </code><code>free</code> <code>buff cache si so bi bo </code><code>in</code> <code>cs us sy </code><code>id</code> <code>wa st</code>
<code> </code><code>0 0 156 24756 182376 1461016 0 0 0 4 6 2 0 0 99 0 0</code>
procs:进程相关
r:运行队列长度
b:阻塞队列长度
memory:内存相关信息
swpd:交换大小
free:空闲大小
buff:缓冲区大小
cache:缓存区大小
swap:在vmstat运行期间交换空间相关
si:物理内存到swap空间交换的页面
so:swap空间到物理内存交换的页面
bi:磁盘块调入到物理内存中
bo:物理内存调入到磁盘块中
system
in:中断的个数
cs:vmstat运行周期上下文切换的次数
cpu
us:用户空间占用的百分比
sy:内核空间占用的百分比
id:空闲百分比
wa:等待io占用百分比
uptime:查看系统登录时间和系统负载
本文转自 亮公子 51CTO博客,原文链接:http://blog.51cto.com/iyull/1890213