进程和计划任务管理(3)

简介: 内核的功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等。1 程序1.1 什么是程序?是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。用于描述进程要完成的功能,是控制进程执行的指令集。保存在硬盘、光盘等介质中的可执行代码和数据。静态保存的代码。


5)bg 任务序号,将一个在后台暂停的任务,变成继续执行。

[root@localhost ~]# dd if=/dev/zero of=/data/aa/f1 bs=1G count=10    //执行后,使用ctrl+z将该进程挂起
 ^Z
 [1]+  已停止               dd if=/dev/zero of=/data/aa/f1 bs=1G count=10
 [root@localhost ~]# jobs          //查看后台任务列表,任务是停止状态
 [1]+  已停止               dd if=/dev/zero of=/data/aa/f1 bs=1G count=10
 [root@localhost ~]# bg 1          //让暂停的后台任务,变成继续执行
 [1]+ dd if=/dev/zero of=/data/aa/f1 bs=1G count=10 &
 [root@localhost ~]# jobs          //查看任务列表,进程是运行状态
 [1]+  运行中               dd if=/dev/zero of=/data/aa/f1 bs=1G count=10 &
复制代码


网络异常,图片无法展示
|


6 进程的优先级设置


每个CPU在一个时间点上只能处理一个进程,通过时间分片技术,来同时运行多个进程。每个进程都有相应的优先级,优先级决定它何时运行和接收多少 CPU 时间。

在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice。数值越小,优先级越高,该进程越优先被 CPU 处理。

不过,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。

PRI 和 NI 的关系如下:

PRI (最终值) = PRI (原始值) + NI
复制代码


网络异常,图片无法展示
|


修改 NI 值时有几个注意事项:

  • NI 范围是 -20~19。
  • 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
  • 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
  • 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。

6.1 启动具有不同nice级别的进程——nice命令

启动进程时,进程通常会继承父进程的nice级别,默认为0。

可以在启动程序时,加上nice命令来设置程序运行的优先级。

nice命令:

nice -n 优先级 命令
复制代码


示例:

在启动程序时,设置程序的nice级别为 -5。

[root@localhost ~]# nice -n -5 dd if=/dev/zero of=/data01/f1 bs=500M count=20 &  //启动程序时,设置nice级别为-5
 [1] 89002
 [root@localhost ~]# top -p 89002
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


6.2 更改现有进程的nice级别——renice命令

renice命令格式:

renice -n 优先级 -p PID    //修改现有进程的nice级别
复制代码


示例:

sshd进程的当前nice级别为0,使用renice命令修改为-10。

[root@localhost ~]# top -p 68219             //查看68219进程的nice级别,为0
 [root@localhost ~]# renice -n -10 -p 68219   //将68219进程的nice级别修改为-10
 68219 (进程 ID) 旧优先级为 0,新优先级为 -10
 [root@localhost ~]# top -p 68219             //修改后的nice级别为-10
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


7 结束进程


7.1 kill命令

kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

命令格式:

kill [信号] PID 
 #kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。
Linux 定义了几十种不同类型的信号,可以使用 kill -l 命令查看所有信号及其编号。
复制代码


常用信号:

信号编号 信号名 含义
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3 QUIT 退出。键盘退出使用 "Ctrl+\ "。
9 KILL 杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是 kill 命令的默认信号。
18 CONT 继续。
19 STOP 暂停。


示例:

[root@localhost data]# sleep 400 &        //将程序放到后台执行,PID118477
 [1] 118477
 [root@localhost data]# jobs               //查看后台任务列表,进程在运行中
 [1]+  运行中               sleep 400 &
 [root@localhost data]# kill -9 118477     //杀死PID为118477的进程
 [root@localhost data]# jobs               //查看后台任务列表,进程已被杀死
 [1]+  已杀死               sleep 400
复制代码


网络异常,图片无法展示
|


7.2 killall命令

killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。

命令格式:

killall [选项] [信号] 进程名
复制代码


常用选项:

  • -i:交互式,询问是否要杀死某个进程。
  • -I:忽略进程名的大小写。

示例:

[root@localhost ~]#killall -i sshd    //以交互方式杀死sshd
复制代码


7.3 pkill命令

当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,该命令的基本格式如下:

命令格式:

pkill [信号] 进程名
复制代码


pkill命令踢出登陆用户:

pkill [-U 用户名] 进程名
 pkill [-t 终端号] 进程名
 -U:根据进程所属的用户名终止相应进程
 -t:根据进程所在的终端终止相应进程
复制代码


示例:

[root@localhost ~]# pgrep -l -u nancy     //查看nancy用户的进程,并显示进程名
 57564 bash
 [root@localhost ~]# pkill -9 -U nancy     //杀死nancy用户的进程
 [root@localhost ~]# pgrep -l -u nancy     //查看nancy用户的进程,已无数据
复制代码


网络异常,图片无法展示
|


8 计划任务管理


8.1 at一次性任务设置

at 工具介绍:

  1. 由包 at 提供
  2. 依赖与atd服务,需要启动才能实现at任务
  3. at队列存放在/var/spool/at目录中,ubuntu存放在/var/spool/cron/atjobs目录下
  4. 执行任务时PATH变量的值和当前定义任务的用户身份一致

at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,具体规则如下:

  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
  • 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
  • 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。

系统中默认只有 /etc/at.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用 at 命令。不过,如果我们打算控制用户的 at 命令权限,那么只需把用户写入 /etc/at.deny 文件即可。

at 设置任务

at [选项]  [时间]
 at [HH:MM]  [yyyy-mm-dd]
 #设置具体任务后,按 ctrl+d 提交 。
 #若设置具体任务时,想要退格重写,按ctrl+backspace进行退格。
复制代码


查询和删除at任务:

atq      //查看at任务列表
 atrm [工作号]  //删除指定的at任务
复制代码


时间格式说明:

格式 用法
HH:MM 比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。
Midnight(midnight) 代表 12:00 AM(也就是 00:00)。
Noon(noon) 代表 12:00 PM(相当于 12:00)。
Teatime(teatime) 代表 4:00 PM(相当于 16:00)。
英文月名 日期 年份 比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。
MMDDYY、MM/DD/YY、MM.DD.YY 比如 011518 表示 2018 年 1 月 15 号。
now+时间 以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行。


常用时间格式:

HH:MM     //在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
 02:00     //表示在今天2点执行任务,若2点已过,则在明天2点执行
 HH:MM YYYY-MM-DD     //规定在某年某月的某一天的特殊时刻进行该项任务
 02:00 2022-06-30     //在2022年6月30日执行该项任务
 HH:MM[am|pm] [Month] [Date]     //指定上午或下午
 06pm March 17                   //3月17日下午6点执行
 HH:MM[am|pm] + number [minutes|hours|days|weeks]    //在某个时间点再加几个时间后才进行该项任务
 now+5min                                            //5分钟后执行该项任务
 02pm+3days                                          //在3天后的下午2点执行该项任务
复制代码


相关文章
|
2月前
|
调度 Windows Perl
进程和计划任务管理
进程和计划任务管理
18 0
|
6月前
|
分布式计算 Hadoop
hadoop进程启停管理
hadoop进程启停管理
43 0
|
20天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
104 2
|
2月前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
84 0
|
2月前
|
存储 调度
进程的奥德赛:并发世界中的核心概念与动态管理
进程的奥德赛:并发世界中的核心概念与动态管理
38 2
|
7月前
|
监控 Java Shell
Shell命令管理进程
  Linux除了是一种多用户操作系统之外,还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视系统的使用情况以及在必要时停止(或杀死)进程。
|
7月前
|
存储 Linux 虚拟化
Linux6.1中为什么用Radix树替换位图(bitmap)来管理进程pid
在过去的几十年中,Linux内核为了有效地管理进程,采用了位图(bitmap)数据结构来记录和跟踪进程的PID。我们知道Linux支持的最大进程数量为65535个,那么用位图来表示的话只需要16位bit就够了,这大大节约了内存空间,随着系统规模的扩大和复杂性增加,尤其是云计算、容器等新兴虚拟化技术大爆发的时代中,操作系统经常会在短时间内快速创建或者销毁大量进程,在这种场景下位图的全面查找时性能问题就逐渐暴露出来了。为了解决这些问题,Linux内核逐渐采用radix树(radix-tree)来替代位图,对进程PID进行管理,这个替换的思路就是用空间换时间。
|
8月前
|
调度
进程和计划任务管理
进程和计划任务管理
72 0
进程和计划任务管理
|
20小时前
|
监控 Linux Shell