【ps】查看进程
# ps aux | less //显示所有运行中的进程
其中
-A: 显示所有进程
a:显示终端中包括其他用户的所有进程
x:显示无控制终端的进程
任务:查看系统中的每个进程。
# ps -A
# ps -e任务:查看非root运行的进程
# ps -U root -u root -N任务:查看用户vivek运行的进程
# ps -u vivek任务:top命令
top命令提供了运行中系统的动态实时视图。在命令提示行中输入top:
按q退出,按h进入帮助。
任务:显示进程的树状图。
pstree以树状显示正在运行的进程。树的根节点为pid或init。如果指定了用户名,进程树将以用户所拥有的进程作为根节点。
$ pstree
任务:使用ps列印进程树
# ps -ejH
# ps axjf任务:获得线程信息
输入下列命令:
# ps -eLf
# ps axms任务:获得安全信息
输入下列命令:
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM任务:将进程快照储存到文件中
输入下列命令:
# top -b -n1 > /tmp/process.log你也可以将结果通过邮件发给自己:
# top -b -n1 | mail -s 'Process snapshot' you@example.com任务:查找进程
使用pgrep命令。pgrep能查找当前正在运行的进程并列出符合条件的进程ID。例如显示firefox的进程ID:
$ pgrep firefox下面命令将显示进程名为sshd、所有者为root的进程。
$ pgrep -u root sshd
-----------------------------------------------------------------------------
【ps】Process State 查看进程
SysV风格:-
BSD风格:不加-
ps:默认显示前台进程
参数:
BSD风格
【a】:显示所有与终端有关的进程
【u】
【s】:显示与终端无关的进程
SysV风格
【-e】:所有进程
【-l】:相当于u
【-F】:相当于s
【-o】:显示指定字段
ps -o PROPERTY1,PROPERTY2
例如: ps -o pid,comm,ni
ps -axo pid,comm,ni
如果只指定字段,不指定显示那些进程,通常会显示ps的默认进程。
ps:默认显示前台进程
ps
-elF
-ef
-eF
--------------------------------字段介绍--------------------
[root@gdy 1]# ps aux | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2900 1448 ? Ss 17:39 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 17:39 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 17:39 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 17:39 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 17:39 0:00 [migration/0]
root 6 0.0 0.0 0 0 ? S 17:39 0:00 [watchdog/0]
root 7 0.0 0.0 0 0 ? S 17:39 0:01 [migration/1]
root 8 0.0 0.0 0 0 ? S 17:39 0:00 [migration/1]
root 9 0.0 0.0 0 0 ? S 17:39 0:00 [ksoftirqd/1]
[root@gdy 1]#
-----------------------------
USER:进程的用户,即谁发起的这个进程
PID:进程号
%CPU:占用cpu的百分比(自己进占据cpu的使用时间与cpu的使用时间的百分比)
%MEM:占用物理内存的百分比
VSZ:虚拟内存集
RSS:常住内存集
TTY:关联到那个终端,?表示与终端无关
STAT:进程状态
TIME:时间(运行时长)
COMMAND:命令,表示那个命令启动的该进程,如果用【[]】括起来表示是内核线程
------------------------------------字段介绍-------------------------------
[root@gdy 1]# ps -elF | head
F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 725 - 1448 1 17:39 ? 00:00:01 /sbin/init
1 S root 2 0 0 80 0 - 0 - 0 1 17:39 ? 00:00:00 [kthreadd]
1 S root 3 2 0 -40 - - 0 - 0 0 17:39 ? 00:00:00 [migration/0]
1 S root 4 2 0 80 0 - 0 - 0 0 17:39 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 -40 - - 0 - 0 0 17:39 ? 00:00:00 [migration/0]
5 S root 6 2 0 -40 - - 0 - 0 0 17:39 ? 00:00:00 [watchdog/0]
1 S root 7 2 0 -40 - - 0 - 0 1 17:39 ? 00:00:01 [migration/1]
1 S root 8 2 0 -40 - - 0 - 0 1 17:39 ? 00:00:00 [migration/1]
1 S root 9 2 0 80 0 - 0 - 0 1 17:39 ? 00:00:00 [ksoftirqd/1]
[root@gdy 1]#
---------------------------------------------------------------------------
PRI:优先级
NI:nice值
PSR:正在运行在那个CPU上
进程的分类:
与终端相关的进程
与终端无关的进程
进程状态:
D:不可中断的睡眠
R:运行或就绪
S:可中断的睡眠
T:停止
Z:僵死
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l:多线程进程
s:会话进程首进程
---------------------------------------------------
相关命令:
【pstree】显示进程树
【pgrep】按照grep查找显示进程
例如:
pgrep -u root bash //是root用户的并且是bash的进程
pgrep bash //显示所有bash进程
【pidof】指定进程名寻找其pid号
例如:
pidof /bin/bash//查看/bin/bash进程的id号
pidof sshd
【top】动态显示进程使用情况
【free】查看当前系统上物理内存和交换分区使用情况
【kill】结束进程
【pkill】根据进程名杀死进程,与pgrep类似
前台:占据了命令提示符
后台:启动之后,释放命令提示符,后续的操作在后台完成。
前台---》后台:
Ctrl+z 把正在前台的作业送往后台
COMMAND & 让命令在后台执行
【bg】让后台停止的作业继续运行
【jobs】查看后台的所有作业
作业号,不同于进程号
+:命令将默认操作的作业
-:命令将第二个默认被操作的作业。
【fg】将后台的作业调回前台
fg [%JOBID] //这里面的%可以省略
kill %JOBID:终止某作业//这里%不能省略
【vmstat】系统状态查看命令
【uptime】与top的第一行一样
/proc/meminfo 内存信息文件
/etc/cupinfo cpu信息文件
cat /proc/1/maps
可以查看当前进程1所占据的内存信息
-------------------------------附加---------------------------------------------
-o Format 以 Format 变量指定的格式显示信息。可以为 Format 变量指定多个字段说明符。Format 变量或者是一个由逗号分隔的字段说明符列表或是一个由“”(双引号)引起来的之间用逗号或一个或多个空格或两者分隔的说明符列表。
每个字段说明符有一个缺省头。通过为头附加一个=(等号),后跟用户定义的文本,可以覆盖缺省头。写字段的顺序采用命令行中列格式指定的方式。字段宽度由系统指定,它至少为缺省的或用户定义的头文本宽度。如果头文本为空,(例如如果指定 -o user=),字段宽度至少为缺省头文本宽度。如果所有头字段都为空,不写头行。
系统标识下列字段说明符:
【args】 说明正在执行的完整命令名。包含所有命令行参数,尽管可能发生截断。该字段的缺省头为 COMMAND。
【bnd】 表示进程或内核线程绑定到哪个(如果有)处理器。该字段的缺省头为 BND。
【class】 表示为该进程分配的工作负荷管理类。该字段的缺省头为 CLASS。
【comm】 表示正在执行的命令的短名称。不包含命令行参数。该字段的缺省头为 COMMAND。
【cpu】 确定进程调度优先级。每次系统时钟周期和发现进程或线程运行时增加进程或线程的 CPU 利用率。调度程序通过每秒除 2 将该值衰减。对于 sched_other 策略,大值表示一个 CPU 密集处理且造成更低的进程优先级而小值表示一个 I/O 密集处理且造成更高的优先级。
【etime】 表示进程启动后所用的时间。所用时间以下列格式显示:
[[ dd-]hh:]mm:ss
其中 dd 指定天数,hh 指定小时数,mm 指定分钟数及 ss 指定秒数。该字段的缺省头为 ELAPSED。
【group】 表示该进程的有效组标识。显示文本组标识。如果不能得到文本组标识,使用十进制表示。该字段的缺省头为 GROUP。
【nice】 表示进程细调值的十进制值。该字段的缺省头为 NI。
-o Format(续)
【pcpu】 表示使用的 CPU 时间占可用 CPU 时间的比例,以百分比表示。该字段的缺省头为 %CPU。
【pgid】 表示进程组标识的十进制值。该字段的缺省头为 PGID。
【pid】 表示进程标识的十进制值。该字段的缺省头为 PID。
【ppid】 表示父进程标识的十进制值。该字段的缺省头为 PPID。
【rgroup】 表示该进程的实际组标识。显示文本组标识。如果不能得到文本组标识,使用十进制表示。该字段的缺省头为 RGROUP。
【ruser】 表示该进程的实际用户标识。显示文本用户标识。如果不能得到文本用户标识,使用十进制表示。该字段的缺省头为 RUSER。
【scount】 表示内核线程的暂挂数。该字段的缺省头为 SC。
【sched】 表示内核线程的调度策略。该字段的缺省头为 SCH。
【tag】 表示工作负荷管理器应用程序标记。该字段的缺省头为 TAG。该标记为一个字符串,它不超过 30 个字符长且由 ps 显示时可能会截断。对于不设置标记的进程,该字段显示为一个 -(连字符)。
【tcpu】 总 CPU 时间。指示单个进程的总累积 CPU 时间。该字段的缺省头为 TCPU。
【tctime】 总连接时间。指示登录会话可会活动时的时间总量。这仅在会话引导进程中才有意义。该字段的缺省头为 TCTIME。
【tdiskio】 总磁盘 I/O。指示单个进程的 I/O 的总累积块数。该字段的缺省头为 TDISKIO。
-o Format(续)
【thcount】 表示该进程拥有的内核线程数。该字段的缺省头为 THCNT。
【THREAD】 表示下列字段:
用户名(uname 字段)
进程的进程及父进程标识(pid 和 ppid 字段)
线程的内核线程标识(tid 字段)
进程或内核线程的状态(S 字段)
进程或内核线程的 CPU 利用率(C 字段)
进程或内核线程的优先级(PRI 字段)
进程或内核线程的暂挂数( scount 字段)
进程或内核线程的等待通道( WCHAN 字段)
进程或内核线程的标志(F 字段)
进程的控制终端(tty 字段)
进程或内核线程绑定到的 CPU (bnd 字段)
正在由进程执行的命令(comm 字段)
使用 -o THREAD 标志实际上不显示线程,除非也指定 -m 标志。
【tid】 表示内核线程的线程标识。该字段的缺省头为 TID。
【time】 表示进程启动后的累计 CPU 时间。时间以下列格式显示:
[ dd-]hh:mm:ss
其中 dd 指定天数,hh 指定小时数,mm 指定分钟数及 ss 指定秒数。该字段的缺省头为 TIME。
【tty】 表示该进程的控制终端名。该字段的缺省头为 TT。
【user】 表示该进程的有效用户标识。显示文本用户标识。如果不能得到文本用户标识,使用十进制表示。该字段的缺省头为 USER。
【vsz】 使用十进制整数表示虚拟内存中进程的大小,以千字节为单位。该字段的缺省头为 VSZ。
-o Format(续)
否则,通过 Format 变量,可以显示指定格式的多个字段,包括字段描述符。如果在 Format 变量中使用字段描述符,它必须包含在双引号(" ")内。下表显示了字段描述符如何对应字段说明符:
字段 字段 缺省值
描述符 说明符 头
%a args COMMAND
%c comm COMMAND
%t etime ELAPSED
%G group GROUP
%n nice NI
%C pcpu %CPU
%r pgid PGID
%p pid PID
%P ppid PPID
%g rgroup RGROUP
%u ruser RUSER
%x time TIME
%y tty TTY
%U user USER
%z vsz VSZ