进程和计划任务的管理

程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态的集合,而进程是在CPU及内存中处于动态执行状态的计算机程序,在Linux系统中,每个程序启动后可以创建一个或多个进程。

文章目录

  • 进程和计划任务的管理
  • 程序和进程的关系
  • 查看和控制进程
    • 查看进程
      • ps命令——查看静态的进程统计信息
      • top命令——查看进程动态信息
      • pstree——查看进程树
  • 进程的启动方式
    • 启动进程
      • 手工启动
      • 调度启动
    • 改变进程的运行方式
    • 查看后台进程 jobs 命令
    • 将后台的进程恢复运行 fg 命令
    • 终止进程执行
    • at一次性任务设置
    • 计划任务管理crontab

程序和进程的关系

程序

  • 保存在硬盘、光盘等介质中的可执行代码和数据
  • 静态保存的代码

进程

  • 在CPU及内存中运行的程序代码
  • 动态执行的代码
  • 父、子进程
    每个程序可以创建一个或多个进程

查看和控制进程

查看进程

ps命令——查看静态的进程统计信息

ps命令是Linux系统中最为常用的进程查看工具,主要用于显示包含挡圈运行的
各个进程完整信息的静态快照。

a:显示当前终端下所有进程信息,包含其他用户进程。与“x”选项结合时显示系统中所有进程信息
u:使用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息

-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
注意:有一部分是不带“-”前缀的。习惯上将上述选项组合在一起使用,如执行“ps aux”“ps -elf”

[root@localhost ~]#  ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  2.2  0.3 193796  6968 ?        Ss   17:20   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    17:20   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    17:20   0:00 [ksoftirqd/0]USER:启动该进程的用户账号的名称
PID :该进程在系统中的数字ID,在当前系统中是唯一的         ###kill -9 PID号
TTY :表明该进程在哪个终端上运行,“?”表示不需要终端
STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵尸)、<(高优先级)、 N(低优先级)、s(父进程)、+(前台进程)、对于僵尸进程要手动关闭
START:启动该进程的时间
TIME:该进程占用的CPU时间
COMMAND:启动该进程的命令名称
%CPU:占用CPU百分比
%MEM:占用内存百分比
VSZ: 占用虚拟机内存大小(swap)RSS: 占用物理内存的大小(物理内存)

[root@localhost ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 48449 ep_pol 17:20 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root 2 0 0 80 0 - 0 kthrea 17:20 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 17:20 ? 00:00:00 [ksoftirqd/0]

显示当前用户会话打开的进程

[root@localhost ~]# psPID TTY          TIME CMD7884 pts/0    00:00:00 bash7997 pts/0    00:00:00 ps

过滤bash进程信息,用grep

[root@localhost ~]# ps aux |grep bash
root       6217  0.0  0.0 115304   952 ?        S    17:20   0:00 /bin/bash /usr/sbin/ksmtuned
root       7884  0.0  0.1 116652  3292 pts/0    Ss   17:20   0:00 -bash
root       8007  0.0  0.0 112728   984 pts/0    S+   17:29   0:00 grep --color=auto bash

top命令——查看进程动态信息

在当前终端以全屏交互的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下没三秒刷新一次,其作用基本类似于Windows系统中的“任务管理器”
最上面可以看见CPU占用率最高的进程
M:以内存大小排序
c:以CPU占用排序
h:top程序在线帮助信息
q:退出

[root@localhost ~]# top
top - 17:31:01 up 10 min,  1 user,  load average: 0.00, 0.01, 0.01
Tasks: 181 total,   1 running, 180 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863252 total,  1044572 free,   405076 used,   413604 buff/cache
KiB Swap:  2098172 total,  2098172 free,        0 used.  1240680 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8039 root 20 0 162136 2404 1596 R 0.7 0.1 0:00.05 top

 ctrl+C  终止进程ctrl+Z  挂起进程

开头的部分显示了系统任务(Tasks),CPU占用,内存占用(Mem),交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。

  • 系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数;sleeping。休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数
  • CUP占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的CPU百分比,主要是看%id部分
  • 内存占用(Mem)信息:total,总内存空间;used,已用内存空间;free,空闲内存空间;buffers,缓存区域
  • 交换空间(Swap)占用:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间

pgrep命令——查询进程信息
当使用ps命令查询某个进程的PID信息时,往往需要结合grep命令对输出结果进行过滤,很不方便,pgrep命令正是用来查询特定进程信息的专用工具,pgrep命令可以根据进程的名称,运行该进程的用户,进程所在的终端等多重属性查询特定进程的PID号,通过pgrep命令可以指定进程的一部分名称进行查询
-l 可以同时输出对应的进程名
-U 选项查询特定用户的进程

查询进程名中包含“log”的进程及其PID号

[root@localhost ~]# pgrep -l "log"
2978 xfs-log/sda3
5217 xfs-log/sda1
6134 abrt-watch-log
6135 abrt-watch-log
6207 systemd-logind
6752 rsyslogd[root@localhost /]# pgrep -l -U zhangsan
8284 sshd
8286 bash
8340 vim

pstree——查看进程树

pstree命令以属性结构列出进程信息,可以更直观的判断各进程的相互关系(父,子进程)
pstree命令默认情况下只显示各进程的名称
-p 列出对应的PID号
-u 列出对应的用户名
-a 列出完整的命令信息

安装pstree命令

[root@localhost /]# yum -y install psmisc

以树形结构列出进程信息

[root@localhost /]# pstree -aup
systemd,1 --switched-root --system --deserialize 22├─ModemManager,6127│   ├─{ModemManager},6144│   └─{ModemManager},6203├─NetworkManager,6253 --no-daemon│   ├─{NetworkManager},6261│   └─{NetworkManager},6264├─VGAuthService,6156 -s├─abrt-watch-log,6134 -F BUG: WARNING: at WARNING: CPU: INFO: possible recursive locking detected ernel BUG at list_del corruption list_add corruption do_IRQ: stack overflow: ...├─abrt-watch-log,6135 -F Backtrace /var/log/Xorg.0.log -- /usr/bin/abrt-dump-xorg -xD├─abrtd,6133 -d -s├─accounts-daemon,6126│   ├─{accounts-daemon},6146│   └─{accounts-daemon},6204
...省略部分信息

进程的启动方式

启动进程

Linux系统中可以用户手工启动进程按预定计划调度启动新的进程

手工启动

进程在前台运行时,用户必须等到该进程执行结束并退出后才能继续输入其他命令。运行耗时较长的操作可进入后台运行,进程在后台运行时,用户可以继续在当前终端输入其他命令,无需等待该进程结束。
前台启动:用户输入命令,直接执行程序
后台启动:在命令末尾加入“&”符号

使用cp查看在后台运行复制镜像文件进程

[root@localhost /]# cp /dev/cdrom /opt &
8913

输出信息中包括后台任务序号、PID号

调度启动

有些任务非常费时,适合在相对空闲的时间进行,我们便可以使用调度安排启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务

改变进程的运行方式

挂起当前进程 Ctrl+Z 组合键

将当前进程挂起,即调入后台并停止执行(对于速度缓慢,会耽误其他操作的进程使用)

查看后台进程 jobs 命令

查看处于后台的任务列表。
结合“-l”选项可以同时显示出该进程对应的PID号
输出结果中,每一行记录对应一个后台进程的状态信息,行首的数字代表该进程在后台的任务编号。
若当前终端没有后台进程,将不会显示任何信息

将后台的进程恢复运行 fg 命令

将后台进程恢复到前台运行,可以指定任务序号
bg(BackGround)命令可以将后台中暂停执行的任务恢复运行,继续在后台执行操作
fg(ForeGround)命令可以将后台任务恢复到前台运行
除非后台任务只有一个,否则bg和fg命令都需要指定后台进程的任务编号作为参数

终止进程执行

平常可以使用Ctrl + C组合键强制中断

Ctrl + C组合键无法中止后,可以使用专门的进程中止工具 kill,killall,pkill

Ctrl+C组合键
中断正在执行的命令
kill、killall命令

  • kill用于终止指定PID号的进程
  • killall用于终止指定名称的所有进程
  • -9选项用于强制终止
    kill命令需要使用进程的PID号作为参数
    若进程无法响应,可结合“-9”选项强行中止进程。强行中止进程可能会到时部分数据丢失,谨慎使用
    killall命令通过进程名来中止进程,可终止指定名称所有进程(可理解为终止进程树)
    killall命令同样有“-9”选项,强制终止进程

pkill命令终止进程
根据特定条件终止相应的进程
常用命令选项:

-U:根据进程所属的用户名终止相应的进程
-t:根据进程所在的终端终止相应的进程

at一次性任务设置

CentOS7系统中的计划任务是由at、cronie软件包提供,通过atd和crond这两个系统服务实现一次性,周期性的计划任务功能,并分别通过at,crontab命令进行计划任务设置
开启系统服务atd是at命令设置的计划任务的前提条件

at [HH:MM] [yyyy-mm-dd]

at命令使用顺序
查看时间→设置时间→输入命令→Ctrl + D提交任务
date:查看当前时间。设置任务,时间不可在当前时间之前
命令输入完成后按 Ctrl + D组合键提交任务即可

[root@localhost ~]# date        //查看当前时间
2020年 6月 4日 星期四 05:45:58 CST

[root@localhost ~]# at 05:48 2020-6-4
at> pgrep -U root |wc -l > /tmp/ps.root
at> //按Ctrl + D组合键提交任务
job 1 at Wed Nov 13 05:48:00 2020
[root@localhost ~]# cat /tmp/ps.root //查看任务完成情况
175

atq 命令,查看待执行任务的列表
对于已经设置,但并未执行的任务,可通过atq命令查看。(已经执行的任务不会出现)
atq查看的任务列表,每个任务的序号不会变动,即便1-5个序号任务已经执行完毕,显示出的第六个未执行任务的序号也是6,而不会变成1。

atrm 命令,删除指定编号的at任务

atrm命令用来删除指定编号的at任务,编号可以通过atq查看。
删除后的at任务不会出现在atq显示结果中。

计划任务管理crontab

crontab命令
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件

  • 全局配置文件,位于文件:/etc/crontab
  • 系统默认的设置,位于目录:/etc/cron.*/
  • 用户定义的设置,位于文件:/var/spool/cron/用户名
字段 说明
分钟 取值为从0到59之间的任意整数
小时 取值为从0到23之间的任意整数
日期 取值为从1到31之间的任意整数
月份 取值为从1到12之间的任意整数
星期 取值为从0到7之间的任意整数,0或7代表星期日
命令 要执行的命令或程序脚本

时间数值的特殊表示方法

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

应用示例

  • 0 17 * *1-5 周一到周五么米天17:00
  • 30 8 * * 1,3,5 每周一、三、五的8点30分
  • 0 8-18/2 * * * 8点到18点之间没2小时
  • 0 * */3 * * 每3天

Linux进程和计划任务的管理相关推荐

  1. 【AWSL】之Linux进程和计划任务管理(ps、top、pgrep、pstree、pkill、at、crontab)

    序言 这里我主要介绍Linux进程与计划任务 进程与计划任务 序言 一 .查看进程 1.程序和进程的关系 2.查看进程信息ps及top.pgrep.pstree ①ps命令 ②.top命令 ③.pgr ...

  2. Linux进程和计划任务管理(详细图例)

    Linux进程和计划任务管理 一.进程和进程的关系 二.查看进程信息--ps 2.1 方法一:ps aux 2.2 方法二:ps -elf 三.查看进程信息--top 3.1 top命令 3.2 to ...

  3. linux 监控进程调度,linux进程启动调度监控和管理

    linux进程启动调度监控和管理 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.90 积分 实验一:Linux进程管理姓名韩师燕学号201109 ...

  4. Linux进程与计划任务

    Linux进程与计划任务 linux进程及作业管理 进程 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等特权操作 模式切换(理想状态):70%CPU时间用户模式+30%CPU ...

  5. linux进程和计划任务管理!

    linux进程和计划任务管理 一.查看进程和控制进程 1.程序和进程的关系 (1)程序 (2)进程 1)进程的生命周期 2)进程的几个状态 2.查看进程命令ps ps -aux ps -ef top命 ...

  6. linux管理进程和计划任务,Linux进程和计划任务管理

    本章结构 #查看进程 #控制进程 #at一次性任务设置 #crontab周期性任务设置 程序和进程的关系 #程序 保存在硬盘.光盘等介质中的可执行代码和数据 静态保存的代码 #进程 在cpu及内存中运 ...

  7. linux进程和计划任务

    一.linux系统进程 在linux系统中,操作系统是通过进程去完成一个一个的任务,进程是管理事务的基本单元.进程拥有自己独立的处理环境(如:当前需要用到哪些环境变量,程序运行的目录在哪,当前是哪个用 ...

  8. linux进程与计划任务管理

    进程与计划任务管理 程序和进程的关系 程序 保存在硬盘.光盘等介质的可执行代码和数据 静态保存的代码 进程 在cpu及内存中运行的程序代码 动态执行的代码 父.子进程(每个程序可以创建一个或多个进程) ...

  9. Linux 进程和计划任务管理

    文章目录 1. 前言 2. 进程 2.1 什么是进程 2.2 程序和进程的关系 2.3 进程,线程和协程 2.4 进程常用管理命令 (1) ps (2) top (3) pgrep (4) pstre ...

最新文章

  1. 答疑:U盘突然无法识别了,数据还能恢复吗
  2. inux时间问题两篇
  3. 新人与三年经验的交互设计师有多大的差距?
  4. WebSocket客户端断开连接后,服务器端的处理机制
  5. 【渝粤教育】广东开放大学 网络市场与预测 形成性考核 (23)
  6. Postgresql 远程连接配置
  7. UE4 异步资源加载
  8. 【less-11】基于SQLI的POST字符型SQL注入
  9. Spark Streaming ReceiverTracker架构设计
  10. 日工资,月工资,加班费,个人所得税,年终奖计算方法
  11. 打开计算机管理iis,iis管理器怎么打开?Win7打开iis管理器的操作方法
  12. 百度如流智能工作平台2.0发布 聚焦智能组织
  13. Linux可以打开cdr文件吗,CDR是什么格式
  14. iOS动画之大雪纷飞
  15. Python自动化运维 - day9 - 进程与线程
  16. HBuilderX网站打包APP
  17. hdmi网线延长器稳定吗_Chromecast HDMI延长器的重点是什么? 我需要吗?
  18. Python打印详细报错日志,获取报错信息位置行数
  19. NeuroSLAM 论文解析
  20. DiDi for Android协议分析

热门文章

  1. Python可视化常用方法和常见问题解决方案
  2. 【学习总结】激光雷达与相机外参标定:原理与代码1
  3. php 仿微信朋友圈,HTML5仿微信聊天界面和朋友圈代码
  4. R语言plotly可视化:plotly可视化回归面(plane)、使用mesh3d和add_surface实现三维回归曲面
  5. 计算机管理员英语怎么说,电脑管理员英文是什么?管理员英文怎么写?
  6. ArcGIS基础实验操作100例--实验3旋转矢量要素
  7. 选择私有云解决方案,需要考虑哪些要素
  8. drawboard pdf拆分文件_Drawboard PDF(pfd处理软件)V5.5.20.1 最新版
  9. 使用eCharts实现中国地图的散点图
  10. 接口规范、容错处理规则、aph备份数据规则