进程查看和进程管理
Posted kiroct
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程查看和进程管理相关的知识,希望对你有一定的参考价值。
程序和进程的关系
程序:
保存在硬盘,光盘等介质中的可执行的代码和数据
文件中静态保存的代码
进程:
在CPU和内存中运行的程序代码
动态执行的代码
父、子进程:每个程序可以创建一个或者多个进程
查看进进程信息ps
ps命令
查看静态的进程统计信息
ps aux
之后会如图所示:
方法一:
ps aux
a:显示终端上的所有进程,包括其他用户的进程
u: 列出进程的用户
x:表示列出所有用户的进程
解释:
user : 用户
pid:进程号
%CPU:cpu的占用率
%MEM:内存占用率
VSZ:该进程占用的虚拟内存
RSS:该进程占用的物理内存
TTY:启动进程的终端名。不从终端启动的进程会显示“?”
!! STAT:该进程的状态:D-不可中断的休眠状态 R:正在运行的状态 S:处于休眠状态 ,可被唤醒 T:停止状态 ,可能是在后台暂停或者处于追踪调试状态 Z:僵尸进程,进程已经终止,但是部分程序还在内存中
START:该进程被触发启动时间
TIME:该进程实际使用CPU的运行时间
COMMAND:进程的启动命令
补充:*
1、如何查看当前命令有多少行?
ps aux | wc -l
2、何如查看所有线程
ps -aT显示所有线程
方法二:
ps -elf
-e:显示显示终端上的所有进程
-l:长格式显示进程信息
-f:使用完整格式显示进程信息
-a:显示进程所有PID
-T:查看线程信息
F:内核分配给进程的系统标记
!S:进程的状态
!UID:启动这些进程的用户
!PID:进程的进程ID
PPID:父进程的进程号
!C:进程生命周期中的CPU利用率
PRI:进程的优先级(越小越优先)
NI:谦让度值用来参与决定优先级(了解即可)
ADDR:进程的内存地址
SZ:假如进程被换出,所需要的交换空间的大致大小
WCHAN:如果进程正在睡眠,显示睡眠中的系统函数名
STIME:进程启动时间的系统时间
TTY:进程启动时的终端设备
TIME:运行进程需要的累计cpu时间
!CMD:进程的启动命令
僵尸进程:
一个进程结束了,但是如果该进程的父进程先结束,那么这个进程就不会变成僵尸进程,因为每个进程结束时候,系统会扫描当前系统中所运行的所有进程,看看有没有哪个进程是刚刚结束的这个进程的子进程,如果是,那么init来接管它。成为他的父进程,子进程退出后init会回收其占用的相关资源
但是当子进程先比父进程结束,而父进程又没有去回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程
查看动态的进程排名信息
top
(备注:按ctl+c 退出、或者按q)
交互按键
P ;对CPU使用率进行排序
M :对内存使用率进行排序
N :对启动时间进行排序
c:切换命令的完整格式
h :获得在线帮助
k:杀死某个进程 (后面加上PID进程号)
q:退出top程序
top -H ;显示所有进程
top -H -p [PID] ;显示特定线程中的进程
补充:
使用top后,按1,会显示每个cpu的使用情况
top -H ;查看当前的线程情况
查看CPU的负载情况:
1、top
2、w
3、uptime
使用top指令后会如图所示显示以下信息:
第一行是任务队列信息
第二行是进程信息:
Tasks ;总进程数量
running; 正在运行的进程数量
sleeping:休眠的进程数量
stopped ;终止的进程数量
zombie:僵死的进程数量
第三行是 CPU的信息
us ;用户占用
sy:内核占用
ni:优先级调度占用
id:空闲cpu
wa;io等待占用
hi:硬件终端占用
si:软件中断占用
st:虚拟化占用
第四行为内存的信息:
total总内存空间
ferr;空闲内存
used;已使用内存空间
buff/cache:物理内存和交换内存的缓冲区总和
查看进程信息pgrep
pgrep命令
根据特定条件查询进程PID
pgrep -l "log" ;查看包含log字符串的相关进程
pgrep -l -U lsp -t tty2 ;-U表示指定用户lsp,此外-t是指定终端tty2 (此外:大写U与小写u使用没区别)
查看进程树
pstree命令
以树状结构列出进程信息
1、
pstree -aup
注释:
-a :显示完整信息
-u:列出对应用户名
-p:列出对应的PID号
2、查看特定用户的进程树
pstree -ap jinyuplsp ;查看用户“jinyuplsp”的特定进程树
进程启动的方式
手动启动:
前台启动:用户输入命令,直接执行程序
后台启动:在命令的结尾加一个“&”符号(此时输出的信息包括后台任务序号、PID号)
进程的前后调度
ctrl+Z:把当前的进程挂起,暂停进程并挂入后台
jobs -l :查看处于后台的任务列表
fg命令:
把后台进程恢复到前台执行,可以指定任务序号
终止运行的进程
ctrl +C:中断正在执行的命令
kill、killsll命令:
kill用于指定中断特定的PID号进程
killall:用于指定终止相关名称的进程(只要包含这个
名称的都得被终止!)
-9:用于强制终止
pkill:根据特定的条件终止相应的进程
常用选项:
-U:根据进程所属的用户名终止相应程序
-t:根据进程所在的终端终止相应进程
补充:如何创建一个高占用cpu的进程
while true; do echo ok ; done
计划任务管理(一次性计划任务)
at 20:30 2021.11.18
at> pgrep -U root | wc -l >tmp/ps.root
(最后按CTRL+D提交任务)
补充:
1、如果at 20:30
(后面没有日期的话默认为当天)
2、atq查看未执行的任务列表
3、atrm X :删除第几条需要做的任务(你得先通过atq查看)
计划任务管理crontab
crontab命令
按照预先设置的时间周期(分钟、小时、天、月、周),重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件:
1、全局配置文件,位于/etc/crontab
2、系统默认的设置,位于 /etc/cron.*/
3、用户定义的设置,位于文件:/var/spool/cron/用户名文件
1、编辑计划任务
crontab -e -u 用户名
或者
crontab -e :此时针对当前用户
2、查看计划任务
crontab -l -u 用户名
3、删除计划任务
crontab -r -u 用户名
总结:如果没有-u 用户名,那么表示为当前用户
任务配置的格式:
分 时 日 月 周 命令
0-59 0-23 1-31 1-12 0-7(0与7都表示周日!)
时间数值的特殊表示方法:
- 表示该范围内的任意时间
, 表示间隔的多个不连续的时间点 - 表示一个连续的时间范围
/ 指定间隔的时间频率
案例:
1、每5分钟定时执行一次规则
/5 命令
2、每天上午7点执行:
0 7
3、每天定时执行一次规则
0 0
4、每周定时执行一套规则
0 0 1
5、每月定时执行一次规则
0 0 1
6、每年定时执行一次规则
0 0 1 1
7、其他举例(1s为执行的命令)
5 1s 每小时的第五分钟执行一次命令
30 5 1s 每天的五点三十执行一次任务
30 7 8 1s 每月的8号7点三十执行任务一次
30 5 8 6 1s每年的6月8号执行一次命令
30 6 0 1s 持续每个周日的6点半,执行一次命令
30 3 10,20 1s 每月的10号和20号的3:30执行一次命令
25 8-11 每天的8-11点的25分,执行一次命令
/15 1s 每15分钟执行一次命令
30 6 / 10 * 1s:每个月里,每隔10天的6:30执行一次命令
以上是关于进程查看和进程管理的主要内容,如果未能解决你的问题,请参考以下文章