进程查看和进程管理

敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述进程查看和进程管理相关的知识,希望能为你提供帮助。
程序和进程的关系 程序:保存在硬盘,光盘等介质中的可执行的代码和数据
文件中静态保存的代码
进程:在CPU和内存中运行的程序代码
动态执行的代码
父、子进程:每个程序可以创建一个或者多个进程
查看进进程信息ps
ps命令
查看静态的进程统计信息
psaux
之后会如图所示:

进程查看和进程管理

文章图片

方法一:
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

计划任务管理(一次性计划任务)
at20:302021.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执行一次命令

    推荐阅读