进程和计划任务管理(简单易懂型)

400 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

进程和线程

查看静态的进程和统计信息

线程和进程的区别

  • 定义不一样,进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程
  • 一个线程只可以属于一个进程,但一个进程能包含多个线程
  • 线程无地址空间,它包含在进程的地址空间里
  • 线程的开销或代价比进程的小

静态查看

ps命令

常用选项

  • a:显示当前终端下的所有进程信息,包括其他用户的进程,包括其他用户的进程。
  • u:使用以用户为主的格式输出进程信息
  • x:显示当前用户在终端下的进程信息
  • e:显示系统内的所有进程信息
  • l:使用长格式显示进程信息
  • k|--sort属性:对属性排序,属性前加-表示降序排列。

ps -aux

  • -a :显示终端上的所有进程,包括其他用户的进程

  • -u:表示列出进程的用户名

  • -x:显示所有终端的额进程 image.png 五种进程状态

  • d 不可中断的休眠状态

  • z 僵尸进程状态

  • r 运行状态

  • s 可中断的休眠状态

  • T 停止状态

ps -aT :显示所有线程 以及pid号

ps -elf

image.png

  • -e 显示系统内所有进程信息

  • -l 以长格式显示进程信息

  • -f 以完整形式显示进程信息

  • -a 显示所有的进程pid

  • -T:查看线程信息

动态查看

动态查看动态进程排名信息

top 命令

-d:指定每两次屏幕信息刷新之间的时间间隔。

-p:通过指定监控进程ID来仅仅监控某个进程的状态。

-q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

-S:指定累计模式。

-s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

-i:使top不显示任何闲置或者僵死进程。

-c:显示整个命令行而不只是显示命令名。

image.png

进入top界面

image.png

[root@localhost ~]#top -d 5     #每五秒刷新一下

top 界面进行交互的命令

  • c键 完整命令

  • p键 加进程号 可用中止进程

  • M键:根据驻留内存大小进行排序

  • N键:根据启动时间进行排序

  • H键:可以获得top程序的在线帮助信息

  • 按q或者ctrl + c 中止top命令

top -H: 显示所有线程,以及pid号

image.png

平均负载

image.png 负载值大于等于CPU数量的时候是饱和状态

平均负载是系统平均活跃进程数

如果大于等于CPU数百分之七八十的时候,说明很忙碌

大于CPU数的时候说明负荷了,需要考虑加CPU了

pgrep

查看进程信息(进程名,用户,终端)查进程

pgrep -l 显示完整的进程名

image.png

pgrep -U 产看指定用户进程

image.png

pgrep -t 查看指定终端 image.png

#### pstree

以树状结构查看进程

pstree -aup

-a 显示完整信息

-u 列出对应用户名

-p 列出对应PID号

image.png 以树形结构列出树形信息

进程的启动方式

手工启动

  • 前台启动:用户输入命令,直接执行程序(可能会占用前台终端)
  • 后台启动:在命令行尾加入“$"符号

进程的前后台调度

  • ctrl+Z 组合键(将当前进程挂起,即调入后台并停止执行)
  • jobs命令
    • jobs -l
    • 查看处于后台的任务列表
  • fg命令
    • 将后台进程恢复到前台运行,可指定任务序号
    • fg<序号> ctrl +Z 将进程挂起 image.png

jobs -l 查看处于后台的进程 image.png fg 1 将后台程序恢复到前台 image.png

调度启动

  • 使用at命令,设置一次性计划任务
  • 使用crontab命令,设置周期性任务

at

一次性任务

at : 10:35 2022-5-12 at 指定时间编辑任务

image.png ctrl + D 提交任务

image.png

crontab

  • 周期性计划任务

  • 按照预先设置的时间周期重复执行用户指定的命令操作

  • 主要设置文件

    全局配置文件,位于文件:/etc/crontab
    系统默认的位置,位于文件:/etc/cron.*/
    用户定义的位置,位于文件: /var/spool/cron/ 用户名
    

    systemctl start crond 开启crond服务

image.png crondtab -e -u 指定用户编辑计划任务

  • -e 编辑计划任务
  • -l 查看计划任务
  • -r 清空计划任务(慎用,清空所有计划任务)

crontab任务配置的格式

image.png

例子 每周一早上7:50自动清空FTP服务器 “/var/ftp/pub”中数据

image.png

image.png

中止进程的运行

  • ctrl + C 组合键
    • 中止前台进程的运行
  • kill , killal命令 kill用于中止指定PID号的进程(默认后面跟 15 kill 15) killal用于指定名称相关的所有进程(有可能会误杀)(杀的更干净) -9选项用于强制终止

kill

kill 和 kill -9 的区别 有时候kill 需要杀一个进程 ,但是杀不动, 就需要kill -9 强杀 kill -15代表信号是SIGTERM,告诉你进程需要被关闭,请自动停止并推出 kill -9代表信号是SIGKILL,表示进程被中止,需要立即退出,并且不能被忽略

  • kill [pid号]

image.png

  • killall [进程名字]
  • kill -9 强杀(慎用)

pkill

pkill [进程名] 根据进程去杀

pkill -U <用户> -t<终端>

  • 根据指定条件中止相应的进程
  • 常用命令选项
    • -U:根据进程所属的用户名中止相应进程
    • -t:根据进程所在的终端中止相应程序

pkill -9 -U <用户>

image.png

总结

  • 查看进程(ps,top, pgrep,ptree)
  • 进程控制(启动进程,调度进程,终止进程)
  • at命令设置一次性计划任务
  • crontab设置周期性计划任务