Linux - 进程
目录
简介
进程优先级是 0-139 共 140 个优先级,数字越小优先级越高,高优先级能获取更多的 CPU 资源优先执行这个任务。0-99:系统分配优先级,用户不可操控,100-139:nice 值,用户可操控的调整只能用 -20-19,root 用户可随意调整 -20-19 之间的值。
ps(process status)
查看运行命令那一刻的进程状态。
Usage:ps [options]
Options:
- a,显示和终端有关的进程,在某个终端中输入的命令。
- u,显示和进程用户的信息
- x,显示和终端无关的进程,内核等进程
- -e,显示所有进程信息
- -l,显示进程长格式
- -F,显示进程完整信息
不加选项显示与终端有关的进程,ps命令有两种风格的使用方法,第一种是BSD:ps -aux
,第二种是 systemV:ps -elF
。
ps -aux 数据内容解释
- USER,此由那个用户运行的
- PID,进程ID号,存放在/proc下,CentOS7中进程ID为1的是systemd,6中ID为1的进程是init,id为1的进程是所有进程的父进程。
- %CPU,占用CPU百分比
- %MEM,占用内存(Memory)百分比
- VSZ,虚拟内存集(计算进程占据物理内存,其中共享库被计算在内)
- RSS,常驻内存集(进程不能被交换出去的数据)
- TTY,运行在那个终端上
STAT,进程状态
- D,不可终端睡眠
- S,可中断睡眠状态
- R,运行状态
- T,停止状态
- Z,僵尸状态
- s,session leader(会话领导者)
- <,优先级较高的进程(用户不可控)
- N,优先级较低的进程(用户可控进程)
- l,多线程进程
- L,在内存中锁定分页
- +,前台进程组中的进程
- START,进程启动时间
- TIME,该进程在 CPU 实际运行时长
- COMMAND,进程命令 name
ps -elF 数据内容解释
- PRI,系统分配的优先级,用户不可更改
- NI,nice 值
如果要调整正在运行中进程的nice值
renice [nice_num] PID
以指定的优先级运行命令
nice -n nice_num COMMAND
top
每 3 秒显示进程动态信息
top - 15:53:58 up 57 min, 3 users, load average: 0.00, 0.01, 0.04
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 500152 total, 175252 free, 101132 used, 223768 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 358424 avail Mem
第一行:当前系统时间,系统运行时长,登录系统用户个数,过去1分,5分,15分平均负载(只查看负载可以用uptime)。
第二行:进程总数 正在运行进程数 睡眠进程数 停止状态进程数 僵尸进程数
第三行:CPU相关信息:us(用户进程所占CPU百分比) sy(系统进程占CPU百分比) ni(nice占CPU百分比) id(空闲进程占CPU百分比) hi(硬件中断占CPU百分比) si(软件中断占CPU百分比) st(被hypervisor偷走的占CPU百分比)
第四行:物理内存信息
第五行:交换分区内存信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PR,优先级
- NI,nice值
- VIRT,虚拟内存
- RES,常驻内存
- SHR,共享内存
- S,状态
- %CPU,CPU占用率
- %MEM,内存占用率
- TIME+,CPU运行进程的时间
top 交互式命令:
- 1,可查看每个CPU信息
- M,按内存百分比排序
- P,按CPU百分比排序
- T,按进程运行时长排序
- c,是否显示COMMAND完整路径
- l,是否显示第一行
- t,是否显示第二行和第三行
- m,是否显示内存相关信息
- k,杀死某个进程(输入PID)
- q,退出top命令
pstree
查看进程树父子关系
pgrep
查看进程PID号
pgrep process_name
pidof process_name
kill & pkill
杀死某个进程,向进程传递某个信号,信号是进程之间的通信(IPC),也可以跨系统通信。
kill -l 查看信号列表:
- 1 SIGHUP,不停止服务情况下,重新读取配置文件并应用。
- 2 SIGINT,Ctrl+c中断某个进程
- 9 SIGKILL,强制杀死某个进程
- 15 SIGTERM,终止某个进程(默认使用的信号)
使用
kill -SIG_NAME PID
也可杀死整个进程树,杀死父进程子进程也会被杀死。
killall -SIG_NAME PID
pkill [options] <pattern>
按照名称杀死进程。
常见几种用法
杀掉已登录终端,-t 匹配终端 -9 发送强制结束信号。
pkill -t -9 pts/2
按照进程名称杀掉
pkill python3
前台进程:李四用终端执行的进程,就是当你运行一个命令不能再执行其他命令这就是前台进程。
后台进程:执行命令不利用终端执行的进程
- &,启动时直接调入后台运行 例子:
cp sxx.txt /root/ &
- Ctrl+z,把进程调入后台停止运行,可以用
bg
把所有进程调入后台继续运行。 - jobs,查看进程作业序号,[1] 是作业号,+ 下一次要执行的作业1,- 下一次要执行的作业 2。
- kill,%Jobnumber 杀死指定后台作业,例子:
kill %1
。 - fg,把后台进程调入前台运行,例子:
fg Jobnumber
lsof
lsof(List Open Files)用来查看进程是由那些文件中打开。
Usage:lsof [u][+d]
Options:
- -u,来指定查看那个用户
- -n,禁止解析 IP
- +d,指定查看某个目录下已经被打开的文件。
最简单用法就是看某个进程打开了哪些文件。这里需要说明,最好要 root 运行才能看的全,普通用户查到的信息是很少的。
ubuntu@TeamServer:~$ sudo lsof
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 108820 ubuntu cwd DIR 202,1 4096 256459 /home/ubuntu/CobaltStrike4.5-cat
bash 108820 ubuntu rtd DIR 202,1 4096 2 /
bash 108820 ubuntu txt REG 202,1 1183448 5522 /usr/bin/bash
bash 108820 ubuntu DEL REG 202,1 2920 /usr/lib/x86_64-linux-gnu/ld-2.31.so
bash 108820 ubuntu mem REG 202,1 252 7486 /usr/lib/locale/C.UTF-8/LC_IDENTIFICATION
java 415315 415318 ParGC\x20 root 3r REG 202,1 142638235 1024382 /usr/lib/jvm/java-11-openjdk-amd64/lib/modules (deleted)
java 415315 415318 ParGC\x20 root 4r REG 202,1 53615 29779 /usr/share/java/java-atk-wrapper.jar
java 415315 415318 ParGC\x20 root 5r REG 202,1 34967268 263285 /home/ubuntu/CobaltStrike4.5-cat/cat_server.jar
java 415315 415318 ParGC\x20 root 6u sock 0,9 0t0 14131159 protocol: TCPv6
java 415315 415318 ParGC\x20 root 7r REG 202,1 53615 29779 /usr/share/java/java-atk-wrapper.jar
......
常用于查看端口被那些程序占用 lsof -i:端口号
。
先查端口,发现 8091。
ubuntu@TeamServer:~$ ss -lntp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:8091 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:1080 *:*
LISTEN 0 128 *:1081 *:*
LISTEN 0 128 [::1]:6010 [::]:*
LISTEN 0 32 *:443 *:*
LISTEN 0 32 [::ffff:127.0.0.1]:59103 *:*
LISTEN 0 128 [::]:22 [::]:*
通过 8091 确认是 huanginxg 这个应用占用的,对应 PID 2421137。这里有个缺陷是 COMMAND 对于太长的命令会截断显示,最好根据 PID 去 /proc 查运行参数,只查应用名就直接 ps 查即可。
ubuntu@TeamServer:~$ sudo lsof -i:8091 -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
huanxiang 2421137 root 3u IPv4 25199418 0t0 TCP *:8091 (LISTEN)
huanxiang 2421137 root 7u IPv4 28809910 0t0 TCP 172.26.7.83:8091->223.104.41.168:48707 (ESTABLISHED)
huanxiang 2421137 root 9u IPv4 28811665 0t0 TCP 172.26.7.83:8091->223.104.41.168:48729 (ESTABLISHED)
huanxiang 2421137 root 11u IPv4 28812442 0t0 TCP 172.26.7.83:8091->223.104.41.168:24163 (ESTABLISHED)
huanxiang 2421137 root 12u IPv4 28812484 0t0 TCP 172.26.7.83:8091->223.104.41.168:49420 (ESTABLISHED)
huanxiang 2421137 root 13u IPv4 28812429 0t0 TCP 172.26.7.83:8091->223.104.41.168:24162 (ESTABLISHED)
huanxiang 2421137 root 15u IPv4 28819427 0t0 TCP 172.26.7.83:8091->223.104.41.168:25636 (ESTABLISHED)
huanxiang 2421137 root 42u IPv4 28816172 0t0 TCP 172.26.7.83:8091->223.104.41.168:25628 (ESTABLISHED)
huanxiang 2421137 root 44u IPv4 28814480 0t0 TCP 172.26.7.83:8091->223.104.41.168:49467 (ESTABLISHED)
huanxiang 2421137 root 59u IPv4 28816263 0t0 TCP 172.26.7.83:8091->223.104.41.168:25631 (ESTABLISHED)
最近更新:
发布时间: