查询进程
ps命令的参数选项及说明
- -a 显示所有终端下执行的进程
- a 显示与终端相关的所有进程,包含每个进程的完整路径
- x 显示与终端无关的所有进程
- u 显示进程的用户信息
- -u 显示指定用户相关的进程信息
- -e 显示所有进程
- -f 额外显示UID、PPID、C与STIME栏位
- f 显示进程树
- -H 显示进程树
- -l 以详细的格式来显示进程的状况
- -o 自定义输出指定的字段,以退号分隔
- -sot key key表示为指定字段排序,默认升序,+key升序,key降序
查询正在运行的进程信息
ps -ef
输出信息中各列的说明如下。
- UID:进程被该UID所拥有。
- PID:进程的标识号。
- PPID:进程的父进程的标识号。
- C:CPU使用的资源百分比。
- STIME:进程开始的时间。
- TTY:该进程是在哪个终端机上面运作,若与终端机无关,则显示“?”,另外,ttyl-tty6是本机上面的登入者进程,若为pts/0等,则表示为由网络连接进主机的进程。
- TIME:进程所使用的总的CPU时间。
- CMD:正在执行的命令行。
eg:查询归属于用户colin115的进程
ps -ef | grep colin115
ps -lu colin115
查询进程ID(适合只记得部分进程字段)
pgrep 查找进程
eg:查询进程名中含有re的进程
pgrep -l re
以完整的格式显示所有的进程
ps -ajx
显示进程信息,并实时更新
top
列出所有打开的文件:lsof
查看端口占用的进程状态:
lsof -i:3306
查看谁正在使用某个文件
lsof /filepath/file
通过某个进程号显示该进程打开的文件
lsof -p 1
列出所有的网络连接
lsof -i
列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80
查看用户username的进程所打开的文件
$lsof -u username
查询init进程当前打开的文件
$lsof -c init
查询指定目录下被进程开启的文件(使用+D 递归目录):
$lsof +d mydir1/
终止进程
杀死指定PID的进程 (PID为Process ID)
kill PID
杀死相关进程
kill -9 3434
[ctrl]+z 將前台任务丟到后台中暂停
jobs 查看后台的工作状态
fg %jobnumber 将后台的任务拿到前台来处理
bg %jobnumber 将任务放到后台中去处理
杀死job工作 (job为job number,jobs命令查看)
$kill %job
进程监控
输入top命令后,进入到交互界面;接着输入字符命令后显示相应的进程状态:
对于进程,平时我们最常想知道的就是哪些进程占用CPU最多,占用内存最多。以下两个命令就可以满足要求:
P:根据CPU使用百分比大小进行排序。
M:根据驻留内存大小进行排序。
i:使top不显示任何闲置或者僵死进程。
使用命令pmap,来输出进程内存的状况,可以用来分析线程堆栈;
pamp PID