如何按名称或PID查找一个进程?如何按端口号查找一个进程?如何查看一个进程的CPU和内存、文件句柄使用情况?如何查看CPU利用率高的TOP10进程清单?如何根据PID强制终止进程?
如何按名称或PID查找一个进程?如何按端口号查找一个进程?如何查看一个进程的CPU和内存、文件句柄使用情况?如何查看CPU利用率高的TOP10进程清单?
进程介绍
进程状态的字母代表
在使用命令查出进程的信息后,进程的 STAT 头代表进程的当前状态。
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
有关命令介绍
lsof
lsof - list open files
列出打开的文件
netstat
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
打印网络连接、路由表、接口统计信息、伪装连接和
多播会员
grep
grep, egrep, fgrep - print lines matching a pattern
打印匹配模式的字符
|
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l
&
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&&
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'
||
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"
进程命令介绍
命令 ps
用标准语法查看系统上的每一个进程
ps -e
ps -ef
ps -eF
ps -ely
使用BSD语法查看系统上的每个进程
ps ax
ps axu
-a:显示所有进程(包括其他用户的进程)
-u:用户以及其他详细信息
-x:显示没有控制终端的进程
ps 命令参数介绍
-e: Select all processes. Identical to -A.
-a:显示所有进程(包括其他用户的进程)
-u:用户以及其他详细信息
-x:显示没有控制终端的进程
如何按名称或PID查找一个进程
#名称
ps -ef|grep tomcat
#PID
ps -ef|grep 17850
如何按端口号查找一个进程
lsof -i:3306
netstat -nlp|grep :3306
netstat:
-n: Show numerical addresses instead of trying to determine symbolic host, port or user names.
显示数字地址,而不是试图确定符号主机、端口或用户名
-p: Show the PID and name of the program to which each socket belongs
显示每个套接字所属的程序的PID和名称
-l:Show only listening sockets
只显示监听套接字
ps -ef|grep 3306
如何查看一个进程的CPU和内存、文件句柄使用情况
查看一个进程的CPU和内存
top -p 17850
文件句柄
在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle)
lsof -p 【PID】查看进程PID打开的文件句柄详细信息(lsof -p 17850)
lsof -p 17850|wc -l 查看进程pid打开文件句柄的数量
lsof |wc -l 查看所有进程的文件打开数
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如 cwd、txt等
TYPE:文件类型,如 DIR、REG、IPV4、FIEO等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
如何查看CPU利用率高的TOP10进程清单
#CPU
top:使用top命令然后按下M(大写)
#内存
以此类推查看内存按下P
只看前十
#cpu
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
#内存
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。
接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。
sort -rn -k +3该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k +3则是针对第3列的内容进行排序,再使用head命令获取默认前10行数据。(其中的|表示管道操作)
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
如何根据PID强制终止进程
kill -Signal pid
signal是发送给进程的信号, 可以使用 kill -l 列出所有的信号值
默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 pid (kill -9 1234)
kill -9 发送SIGKILL信号给进程,SIGKILL是发送给一个进程来导致它立即终止的信号
TERM(或数字9)表示“无条件终止”;
kill - 9 表示强制杀死该进程