进程查看和进程管理

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执行一次命令

以上是关于进程查看和进程管理的主要内容,如果未能解决你的问题,请参考以下文章

进程和计划任务管理

怎么查看任务管理器进程来源

十进程管理——进程查看pstop

Linux进程和任务管理

Linux进程管理

Linux进程和计划任务管理