一、进程
1.程序和过程概念
2.线程和过程概念
二、查看过程信息命令
1、PS 查看静态过程统计信息命令
常用参数 相关字段的含义
STAT 状态
2、top 查看动态进程信息命令
相关字段的含义
top命令全屏操作界面快捷键:
3、pgrep 查看过程信息命令
4、pstree 过程信息以树形结构列出
5、jobs 命令
三、调度过程/终止过程
1、bg和fg 调度过程命令
2、终止进程
Ctrl C
kill、killall
pkill
四 、管理计划任务
一次性计划任务 at
2、crontab 设置周期性任务
crontab命令
/etc/crontab——系统任务配置文件
管理crontab计划任务命令
一、进程
1.程序和过程概念
简单地说,这个过程是在操作系统中运行的程序,是操作系统资源管理的最小单位。但这个过程是一个动态的实体,它是一个程序执行过程。过程和程序之间的区别在于 过程是动态的,程序是静态的,过程是操作中的程序,程序是硬盘上保存的可执行代码
-
可执行代码和数据保存在硬盘、光盘等介质中
-
静态存储在文件中的代码
-
再CPU程序代码在内存中运行
-
动态执行代码
-
父、子进程
-
每个程序可以创建一个或多个过程
-
2.线程和过程概念
每个过程至少包含一个线程,这些线程共享过程中的资源空间。当线程发生变化时,只会导致CPU执行过程发生变化,不会改变过程所拥有的资源。同样,一个程序至少包含一个过程。
每个过程都有自己的地址空间,比如内存,I/O,CPU,在同一个过程中 线程共享本过程中的地址空间。显然,这是不允许使用他人家庭过程中的地址空间的。由于过程的独立性,当一个过程崩溃时,它不会在保护模式下影响其他过程。
二、查看过程信息命令
1、PS 查看静态过程统计信息命令
常用参数 相关字段的含义
ps -aux
常用参数:
-a: 显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息
-u: 使用以用户为主的格式输出进程信息。
-x: 显示当前用户在所有终端下的进程信息
相关显示字段:
USER: 进程的用户
PID: 进程的ID
%CPU: 进程占用的CPU百分比
%MEM: 占用内存的百分比
VSZ: 该进程使用的虚拟内存量(KB)
RSS: 该进程占用的物理内存量(KB)
TTY: 启动进程的终端名。不是从终端启动的进程则显示为 ?
STAT: 该行程的状态:
- D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进 程处于跟踪 调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中
START: 该进程被触发启动时间
TIME: 该进程实际使用CPU运行的时间
COMMAND: 启动该进程的命令名称
STAT 状态
状态:
-D: 不可被唤醒的睡眠状态,通常用于 I/O 情况
-R: 该进程正在运行
-S: 该进程处于睡眠状态,可被唤醒 **
-T: 停止状态,可能是在后台暂停或进程处于出错状态。
-W: 内存交互状态(从2.6内核开始无效)
-X: 死掉的进程(应该不会出现)
-z: 僵尸进程。进程已经中止,但是部分程序还在内存当中。**
-<: 高优先级(以下状态在BSD格式中出现)
-N: 低优先级
-L: 被锁入内存
-s: 包含子进程 **
-l: 多线程(小写L)
-+: 位于后台
-C: 进程占用cpu的百分比
2、top 查看动态进程信息命令
相关字段含义
top - 19:28:18 当前系统时间
up 7:19 系统已经运行时间
2 users 当前登录用户数
Load average 系统平均负载,后面三个数字代表每1分钟,5分钟,15分钟的平均负载
Tasks: 进程总数
1 running: 正在运行的进程数
219 sleeping: 休眠的进程数
0 stopped: 中止的进程数
0 zombie: 僵死无相应的进程数
第三行:
us: 用户空间占用CPU百分比
sy: 内核空间占用CPU百分比
ni: 优先级调度占用CPU百分比
id: 空闲CPU百分比
wa: I/O等待占用
hi: 硬件终端占用
si: 软件中断占用
st: 虚拟化占用
total: 总内存空间
free: 空闲内存
used: 已用内存
buff/cache: 物理内存和交换内存的缓冲区总和
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命令全屏操作界面快捷键:
p: 按CPU排序
M: 按内存排序
T: 按时间排序
P: 进程IP,查看某个进程状态
N: 根据启动时间进行排序
数字键1: 显示每个内核的CPU使用率
u/U: 指定显示的用户
h: 可以获得top程序的在线帮助信息
q: 可以正常地退出top程序
注:若通过 top 排名工具发现某个进程CPU占用率非常高,需要终止该进程的运行,可以在 top操作界面中按k键,然后在列表上方将会出现""PLD to signal/kill [deLault pid = 3180]:”的提示信息,根据提示输入指定进程的 PID号并按 Enter键,出现"send pid 5597 signal [15/sigterm]"的二次确认的提示信息,然后按Enter进行确认。
3、pgrep 查看进程信息命令
- 根据特定条件查询进程PID信息
- -l:选项可同时输出对应的进程名以及PID
- -u:选项查询特定用户的进程
- -t:选项查询在特定终端运行的进程
4、pstree 以树形结构列出进程信息
pstree命令默认情况下只显示各进程的名称。
结合以下常用的参数使用:
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息
执行如下的“pstree -aup" 命令可以查看当前系统的进程树,包括各进程对应的PID号、用户名、完整命令等信息。从输出结果中可以看出,systemd进程确实是Linux操作系统中所有进程的”始祖“
例1
pstree -aup hmj
5、jobs 命令
常用的参数
-l: 选项可以同时显示该进程对应的PID号
三、调度进程/终止进程
1、bg和fg 调度进程命令
使用bg (BackGround,后台)命令,可以将后台中暂停执行(如按Ctrl+Z组合键挂起)的任务恢复运行,继续在后台执行操作;
使用fg命令(ForeGround,前台),可以将后台任务重新恢复到前台运行。
1、&符号
Linux 终端命令的末尾加上一个 &表示将这个任务放到后台去执行,不用等待命令结束,直接执行下一条命令
2、bg命令
通过jobs命令查询到的信息,可以通过bg命令将放入到后台的程序继续执行,但是不会显示到前台。
3、fg命令
通过jobs命令查询到的信息,通过fg命令将放入到后台的程序切換到前台执行
2、终止进程
Ctrl + C
- 中断正在执行的命令
kill、killall
- kill用于终止指定PID号的进程
- killall用于终止指定名称的所有进程
- -9选项用于强制终止
kill -l :可以显示所有级别对应的效果
常用的命令:
kill -9 (KILL):杀死一个进程。
killall :使用killall 命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用 killall命令将更加方便,效率更高。killall命令同样也有""9"选项。例如,执行如下的"killall1-9 vim"命令可将所有名为vim的进程都强行终止
pkill
- 根据特定条件终止相应的进程
- 常用命令选项 - -U:根据进程所属的用户名终止相应进程 - -t:根据进程所在的终端终止相应进程 - -l:选项可同时输出对应的进程名以及PID
pkill 使用 pkill命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与pgrep命令基本类似,如-U”(指定用户)、"-t”(指定终端)等选项,使用起来非常方便。
常用命令选项
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
-l:选项可同时输出对应的进程名以及PID
四 、计划任务管理
在Linux 操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务〈如定期备份、定期采集监测数据)。CentoS系统中默认已安装了at、cronie 软件包,通过 atd和 crond 这两个系统服务实现一次性、周期性计划任务的功能,并分别通过 at、crontab 命令进行计划任务设置
,前提是对应的系统服务atd必须已经运行。需要注意的是,计划执行任的时间、日期必须安排在当前系统的时刻之后,否则将无法正确设置计划任务。 设置一次性计划任务时,在 at命令行中依次指定计划执行任务的时间、日期作为参数 (若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带"at>"提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按ctrl+D 组合键提交任务所设置的命令操作将在计划的时间点被依次执行。
date 显示当前系统时间日期
at 16:23 2021-08-16
at>pgrep -U root | wc -l > /tmp/ps.root :任务设置完毕后按ctrl+d组合键提交
对于已经设置还未执行(未到时间点)的计划任务,可以通过atq命令进行查询。但已执行过的at任务将不会再出现在列表中。
atq
若要删除指定编号的的at任务,可以通过atrm命令。删除后的at任务将不会被执行,并且不会显示atq命令的显示结果中,但已经执行过的任务无法删除。具体操作命令如下。
atrm 2 :删除第2条计划任务
2、crontab 周期性任务设置
crontab命令
- 按照预先设置的时间周期(分、时、日、月、周)重复执行用户指定的命令操作
- 属于周期性计划任务
- 主要设置文件
- 全局配置文件,位于文件:/etc/crontab
- 系统默认的设置,位于目录:/etc/cron.*/
- 用户定义的设置,位于文件:/var/spool/cron/用户名
/etc/crontab文件中设置的是维护Linux操作系统所需的任务,Linux 操作系统及相关程序在安装时可自动设置,不建议用户手动修改此文件。例如,该文件中包括设置Shell环境、可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录。执行如下的"cat/etc/crontab"命令可以查看/etc/crontab文件的具体内容
管理crontab计划任务命令
编辑计划任务
crontab -e 【-u 用户名】
查看计划任务
crontab -l 【-u 用户名】
删除计划任务
crontab -r 【-u 用户名】
例:
crontab -e :开启计划任务
编辑页面:
* * * * * /usr/bin/echo “123123” >> /opt/ :分时日月周+绝对路径命令 保存退出
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 表示间隔的时间频率
例: