Linux进程和计划任务管理

182 阅读7分钟

前言

程序是一组指令及参数的集合,指令按照既定的逻辑控制计算机运行。进程则是运行着的程序,是操作系统执行的基本单位。线程则是为了节省资源而可以在同一个进程中共享资源的一个执行单位。

查看进程信息

ps

1. ps -aux(查看静态的进程统计信息)

  • a:显示终端上的所有进程,包括其他用户的进程
  • u:表示列出进程的用户
  • x:显示所有终端的进程 1659931801530.jpg
  • USER:进程的用户
  • PID:进程的ID
  • %CPU:进程占用的CPU百分比
  • %MEM:占用内存的百分比
  • VSZ:该进程使用的虚拟内存量(kb)
  • PSS:该进程占用的物理内存量(kb)
  • TTY:启动进程的终端名。不是从终端启动的进程显示为?
  • STAT:该进程的状态(D:不可中断的休眠状态;R:正在运行状态;S:处于可被唤醒的休眠状态;T:停止状态;Z:僵尸进程。进程已经中止,但是部分程序还在内存当中)
  • START:该进程被触动启定时间
  • TIME:该进程实际使用CPU运行的时间
  • COMMAND:进程的启动命令

2. ps -elf(已长格式显示进程中的进程信息)

  • -e:显示进程内所有进程信息
  • -l:使用长格式显示进程信息
  • -f:使用完整的格式显示进程信息
  • -a:显示所有进程pid
  • -T:查看线程信息 Snipaste_2022-08-10_16-34-28.png

各列的解释:

  • F:内核分配给进程的系统标记。
  • S:进程的状态。
  • UID:启动这些进程的用户。
  • PID:进程的进程ID。
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
  • C:进程生命周期中的CPU利用率。
  • PRI:进程的优先级(越大的数字代表越低的优先级)。
  • NI:谦让度值用来参与决定优先级。
  • ADDR:进程的内存地址。
  • SZ:假如进程被换出,所需交换空间的大致大小。
  • WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
  • STIME:进程启动时的系统时间。
  • TTY:进程启动时的终端设备。
  • TIME:运行进程需要的累计CPU时间。
  • CMD:进程的启动命令。

3. ps -aT (显示所有线程)

Snipaste_2022-08-10_16-35-11.png total总交换空间 free空闲交换空间 used已用交换空间 avail Mem可用物理空间

进程信息区各列解释:

PID:进程id USER:进程所有者的用户名 PR:优先级 NI:谦让度值。负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存总量,单位kb RES:进程使用的物理内存大小,单位kb SHR:共享内存大小,单位kb S:进程状态 %CPU:上次更新到现在的CPU时间占用百分比 %MEM:进程使用的物理内存百分比 TIME+:进程使用的CPU时间总计,单位1/100秒 COMMAND:命令名/命令行

top

top(查看进程信息)

top命令:top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。在 top 命令中按 f,可以修改显示的列,按对应字母来开启/关闭列,大写字母表示开启,小写字母表示关闭。带 * 号的是默认列。Linux 中的 top 命令就像是 Windows 中的任务管理器。它会以列表的形式展示出系统的当前状态以及进程信息,并且定时刷新,同时也支持一些交互性的操作。

Snipaste_2022-08-10_16-43-37.png

Snipaste_2022-08-10_16-57-32.png

  • top – 16:55:41 #当前系统时间
  • Up 7:05 #系统已经运行时间
  • 1 users #当前登录用户
  • Load average 0.00, 0.01, 0.05 #系统平均负载,后面三个数字代表每1分钟,5分钟,15分钟的平均负载

Snipaste_2022-08-10_16-57-44.png

  • Tasks: 150 total 进程总数
  • 2 running 正在运行的进程数
  • 148 sleeping 睡眠的进程数
  • 0 stopped 睡眠的进程数
  • 0 zombie 僵尸进程数

Snipaste_2022-08-10_16-58-00.png

  • 0.0 us 用户空间占用CPU百分比 查看CPU使用率
  • 0.0 sy 内核空间占用CPU百分比
  • 0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
  • 100.0 id 空闲CPU百分比
  • 0.0 wa 等待输入输出的CPU时间百分比
  • 0.0 hi 硬中断消耗时间 硬中断占用
  • 0.0 si 软中断消耗时间 软中断占用
  • 0.0 st 虚拟化占用

Snipaste_2022-08-10_16-58-11.png

  • 20319012 total 物理内存总量
  • 1318236 free 空闲内存总量
  • 325456 used 已使用的物理内存总量
  • 388220 buff/cache用作内核缓存的内存量

Snipaste_2022-08-10_16-58-22.png

  • 4194300 total 交换区总量
  • 4194300 free 空闲交换区总量
  • 0 used 已使用的交换区总量
  • 1488228 avail Mem 缓冲的交换区总量

在top动态交互界面使用按键可以进行交互

Snipaste_2022-08-10_17-10-31.png

  • P键:根据CPU使用百分比大小进行排序
  • M键:根据驻留内存大小进行排序
  • N键:根据启动时间进行排序
  • c键:切换显示命令名称和完整命令行
  • h键:可以获得 top程序的在线帮助信息
  • k键:根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
  • q键:退出 top 程序
  • 1键:显示cpu个数和状态

top -H:显示所有线程

Snipaste_2022-08-10_16-53-14.png top -H -p :显示特定进程中的线程

Snipaste_2022-08-10_16-51-06.png

pgrep

pgrep :根据特定条件查询进程PID信息

  • -l:选项可同时输出对应的进程名以及PID
  • -u:选项查询特定用户的进程
  • -t:选项查询在特定终端运行的进程

Snipaste_2022-08-10_17-20-08.png

pstree

pstree:以树形结构列出进程信息

  • -a:显示完整信息
  • -u:列出对应用户名
  • -p:列出对应的PID号

Snipaste_2022-08-10_17-28-20.png

进程的启动方式

启动

手工启动

  • 前台启动:用户输入命令,直接执行程序
  • 后台启动:在命令行尾加入"&"符号

调度启动

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

Ctrl+Z组合键 将当前进程挂起,即调入后台并停止执行

jobs [-l] 查看处于后台的任务列表

fg命令 将后台进程恢复到前台运行,可指定任务序号

Snipaste_2022-08-10_17-38-44.png

终止进程的运行

  1. Ctrl+C组合键 中断正在执行的命令

Snipaste_2022-08-10_17-43-19.png

  1. kill用于终止指定PID号的进程 (-9选项用于强制终止)

kill这个命令发送信号给进程

  • -15 SIGTERM 告诉进程需要被关闭请自行停止运行并退出;进程也可以拒绝结束

  • -9 SIGKILL 表示进程要被终止,需要立即退出,这个信号不能被忽略和捕获的 发送信号给进程

Snipaste_2022-08-10_18-02-55.png

  1. killall用于终止指定名称相关的所有进程

  2. pkill命令根据特定条件终止相应的进程

常用命令

  • -u根据进程所属用户名终止进程
  • -t 根据进程所在终端终止进程

计划任务管理

at

一次性计划任务做什么:1、定期备份web数据库;2、定期采集检测数据;3、查找5天以外的数据数据删除

  • at用于规定在一个指定的时间执行一个指定任务
  • at定制计划 ctrl d 提交任务
  • atq查看未执行任务列表
  • atrm 加任务号 删除任务

Snipaste_2022-08-10_18-35-49.png Snipaste_2022-08-10_18-15-49.png

crontab

crontab 是用来让使用者在固定时间或固定间隔执行程序之用 。属于周期性计划任务

主要设置文件

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

管理crontab计划任务

  • 编辑计划任务 crontab -e [-u 用户名]
  • 查看计划任务 crontab -l[-u 用户名]
  • 删除计划任务 crontab -r [-u 用户名]

Snipaste_2022-08-10_19-15-38.png 时间数值的特殊表示方法

  • *表示该范围内的任意时间
  • ,表示间隔的多个不连续时间点
  • -表示一个连续的时间范围
  • / 指定间隔的时间频率

Snipaste_2022-08-10_19-18-58.png Snipaste_2022-08-10_18-54-12.png 应用示例

0 1 * * 1-5周一到周五每天1:00
45 8 * * 1,3,5每周一,三,五的8点45分
0 8-18/2 */3 * *每3天的8点到18点之间每2小时
0 * */3 **每3天

结束语:在Linux中查杀进程并常用管理计划任务来提高效率