Linux作业调度和服务管理

目录

作业调度

调整进程的优先级

服务管理

systemd管理服务操作

systemd管理target(一点点)


作业调度的本质仍然是进程,之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包括root),但是仍然可以看到作业对应的进程。

  1. 前台进程

    运行在用户眼前的进程就是前台进程,当用户眼前运行一个前台进程时,如果想运行其他进程,必须关闭当前前台进程,或者将该前台进程放到后台(backgrand process)运行

  2. 后台进程

    后台进程不会影响用户当前shell运行其他进程。

    并不是所有的进程都能作为后台进程运行在后台的。(比如说top命令)

一个进程什么情况可以放在后台进程

  1. 运行时间较长,用户不想在前台等待,该进程可以运行结束

  2. 服务(service)进程,用户想永远让其处于运行状态

作业调度

& 在命令行的结尾加上一个&,就能够使前台进程变为后台进程

可以通过ps命令进行查看,但是无法判断使前台进程还是后台进程

jobs命令可以查看后台进程

 [root@bogon ~]# cat &[1] 2906[root@bogon ~]# jobs [1]+  Stopped                 cat

jobs命令是一个阉割版本的ps,只能查看当前shell运行的后台进程。通过jobs来管理后台进程。 jobs功能有限,管理范围有限。 jobs管理后台进程,也是使用kill命令,只不过,kill命令本身也可以向job id发送相应的信号。 kill + %[后台进程号]就可以杀死后台进程

 [root@bogon ~]# cat &[1] 2923[root@bogon ~]# jobs[1]+  Stopped                 cat[root@bogon ~]# kill %1[1]+  Terminated              cat[root@bogon ~]# jobs 

前台进程和后台进程之间的转换 当前台进程运行时,可以使用ctrl+c停止该进程,也可以使用ctrl+z将该进程放到后台,注意,当一个进程由前台切换到后台时(ctrl+z),那么该进程的状态就会变成stop,如果你想继续运行该进程,需要使用kill命令发送让该进程继续运行的信号。

 bg %[进程号] : 将前台进程放在后台运行fg %[进程号] : 将后台进程放在前台

调整进程的优先级

最大允许4个进程同时使用100%的cpu,假如说有5个进程需要运行,且该5个进程都需要占用100%的cpu,如果你觉得哪个进程更需要快速运行结束,那么就调整这个进程的优先级。

[root@bogon ~]# nice -n -20 cat /dev/zero /dev/null &
[1] 3077
[root@bogon ~]# nice -n -10 cat /dev/zero /dev/null &
[2] 3079
[root@bogon ~]# top
top - 16:33:15 up  5:24,  2 users,  load average: 0.51, 0.17, 0.06
Tasks: 291 total,   3 running, 288 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us, 31.1 sy,  0.0 ni, 63.5 id,  0.0 wa,  2.1 hi,  2.9 si,  0.0 st
MiB Mem :   1748.7 total,    176.2 free,    984.0 used,    588.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.    585.6 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND3077 root       0 -20  221096   1016    928 S   3.9   0.1   0:01.33 cat        3079 root      10 -10  221096   1020    932 S   1.6   0.1   0:00.52 cat
[root@bogon ~]# renice -n -15 3079
3079 (process ID) old priority -10, new priority -15
[root@bogon ~]# top
top - 16:34:35 up  5:26,  2 users,  load average: 0.90, 0.36, 0.14
Tasks: 291 total,   3 running, 288 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us, 16.4 sy,  0.0 ni, 80.7 id,  0.0 wa,  1.1 hi,  1.5 si,  0.0 st
MiB Mem :   1748.7 total,    176.7 free,    983.4 used,    588.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.    586.1 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND3004 root      20   0   19336   7284   4960 R  31.3   0.4   1:16.80 sshd3077 root       0 -20  221096   1016    928 S   2.0   0.1   0:04.36 cat3079 root       5 -15  221096   1020    932 S   1.0   0.1   0:02.38 cat 
[root@bogon ~]# killall cat /dev/zero /dev/null &
[3] 3084

PR与NI的差为20,PR最大为20,最小为0,

  • nice -n NI值 进程号 : 调整进程的优先级
  • renice -n NI值 进程号 : 调整正在运行中的进程优先级

服务管理

服务就是进程,进程不一定是服务

服务是具备一定功能的进程,但是有些进程并不具备服务的特征,所以服务一定是进程,但是进程不一定是服务。

服务也是进程,就意味着服务也享受着之前学习过的进程的概念。Linux里面的第一个进程,是整个系统的父进程。

在RHEL6版本之前,包括RHEL6,采用的第一个进程叫做init。第一个进程非常重要,因为第一个进程要负责后面所有其他进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行。

init有问题,通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢。

在RHEL7版本,采用第一个进程叫做systemd。该进程相比如init来说,采用并行方式启动后续进程,并行启动就意味着速度快。

systemd管理服务操作

systemd管理service

1、查看服务信息

[root@bogon ~]# systemctl status service

2、停止服务

[root@bogon ~]# systemctl stop service

3 、启动服务

[root@bogon ~]# systemctl start service

4、重新启动服务

[root@bogon ~]# systemctl restart service

5、开机自启

[root@bogon ~]# systemctl enable service

6、开机不自启

[root@bogon ~]# systemctl disable service

7、判断服务是否开启

[root@bogon ~]# systemctl is-active service
active
[root@bogon ~]# systemctl is-active service
inactive

8、判断开机自启是否开启

[root@bogon ~]# systemctl is-enabled service
enabled
[root@bogon ~]# systemctl is-enabled service
disabled

9、重新加载配置文件

[root@bogon ~]# systemctl daemon-reload 

systemd管理target(一点点)

target是由服务组成的一类启动目标,systemd可以设置启动目标,如果systemd指定了一个target作为启动目录,那么下次系统启动的时候就会启动target里面的所有服务。

multi-user.target就是字符界面的Linux系统

graphical.target就是图形界面的Linux系统

1、临时切换到字符界面

[root@bogon ~]# systemctl isolate multi-user.target 

2、临时切换到图形界面

[root@bogon ~]# systemctl isolate graphical.target 

3、查看下次开机加载那个target

[root@bogon ~]# systemctl get-default 

4、修改下次开机启动的target

[root@bogon ~]# systemctl set-default multi-user.target 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12 数据库安全和管理

文章目录 数据库安全和管理表的复制数据库备份MySQL远程连接添加用户和授权 数据库安全和管理 表的复制 表能根据实际需求复制数据复制表时不会把KEY属性复制过来 语法 create table 表名 select 查询命令;create table student select name,age,score from class where sc…

像SpringBoot一样使用Flask - 5.统一处理(日志、异常、响应报文)

接上文《像SpringBoot一样使用Flask - 4.拦截器》,通过拦截器处理一些日志,异常、还有统一的响应报文。 统一的目的就是为了让前后端调用请求不会因为各自习惯而随意编写,增加技术人员快速上手及代码的可阅读性。 一、定义一个返回类。是不是…

ZigBee技术与实践教程(持续更新笔记)

1.安全性 802.15.4 在数据传输过程中提供了三级安全性。 (1)第一级实际是无安全性方式,对于某种应用,如果安全性并不重要或者上一层已经提供了安全性保护,器件就可以采用这种方式来转移数据。 (2&#x…

(已解决)报错:Could not load the Qt platform plugin “xcb“

完整报错信息 QObject::moveToThread: Current thread (0x6a879f0) is not the object’s thread (0x61bb590). Cannot move to target thread (0x6a879f0)qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “” even though it was found. This application…

深入了解 Python 的 compile() 函数

在 Python 中,compile() 是一个内置函数,用于将字符串形式的 Python 代码编译为可执行的代码对象,或者将 AST(抽象语法树)对象编译为代码对象。本文将深入探讨 compile() 函数的用法、参数和返回值,以及其在…

【Java】使用`LinkedList`类来实现一个队列,并通过继承`AbstractQueue`或者实现`Queue`接口来实现自定义队列

使用LinkedList类来实现一个队列,并通过继承AbstractQueue或者实现Queue接口来实现自定义队列。 以下是一个简单的示例,其中队列的大小与另一个List的容量保持一致: import java.util.LinkedList; import java.util.List; import java.util…

网络安全运营的工作内容(附资料下载)

【推荐】最新网络安全运营方案和实践合集(共80多份).zip 网络安全运营的工作内容是一个多层次、多维度的体系,涵盖了多个关键领域以确保网络环境的稳定和安全。以下是一些主要的工作内容: 安全策略制定与实施: 制定网…

【前端Vue】Vue从0基础到大神完整教程第1篇:vue基本概念,vue-cli的使用【附代码文档】

Vue从0基础到大神学习完整教程完整教程(附代码资料)主要内容讲述:vue基本概念,vue-cli的使用,vue的插值表达式,{{ gaga }},{{ if (obj.age > 18 ) { } }},vue指令,综合…

20行代码搞定PDF表格转为Excel表

1.环境准备 安装好python并且配置好环境安装pdfplumber、xlwt库使用Vscode或者PyCharm等编辑器 在pycharm中如果报红,可以鼠标点击报红的库,altenter进行安装 2.代码部分 import pdfplumber import xlwt # 读取源pdf文件 pdf pdfplumber.open("…

2024-2030年再生混凝土市场供给规模及投资策略战略规划报告

2024-2030年再生混凝土市场供给规模及投资策略战略规划报告 《报告编号》: BG475174 《出版时间》: 2024年3月 《出版机构》: 中智正业研究院 《交付方式》: EMIL电子版或特快专递 《报告价格》:【纸质版】: 6500元 【电子版】: 6800元 【纸质电子】: 7000元 《 免费售后 服务…

图像处理ASIC设计方法 笔记8 卷积计算芯片的结构

(一) P81 卷积芯片内部模板框图 该设计有两个数据通路:图像数据和模板数据。 图像数据是经过帧控制、实时图SPRAM(写控制、 SPRAM读控制、数据读控制)、计算单元; 模板数据是经过模板SPRAM、计算单元。 4.5.4运算单元像素寄存器控制 存储SPRAM写入的64bit数据,输出为…

Unity2023.1.19_DOTS_JobSystem

Unity2023.1.19_DOTS_JobSystem 上篇我们知道了DOTS是包含Entity Component System,Job System,Burst compiler三者的。接下来看下JobSystem的工作原理和具体实现。 简介: 官方介绍说:JobSystem允许您编写简单而安全的多线程代…

C++篇 语 句

到目前为止,我们只见过两种语句: return 语句和表达式语句。根据语句对执行顺 序的影响,C 语言其余语句大多属于以下 3 大类。 选择语句: if 语句和 switch 语句。循环语句: while 语句, do...while 语句和…

XSS漏洞-存储型漏洞案例

一、环境 在github上找DVWA的靶机环境 DVWA存储库 二、复现 先将其安全等级改为低 然后点击存储型的xss,先随便写几条看看现象 可以看到我们写的都展示在了下面的框中 看看源码,分析在存储时的漏洞 我们可以看到,在对数据插入的时候&am…

01_04_JavaWEB01_HTMLCSS

一 HTML入门 参考尚硅谷再总结复习 1.1 HTML&CSS&JavaScript的作用 HTML 主要用于网页主体结构的搭建 CSS 主要用于页面元素美化 JavaScript 主要用于页面元素的动态处理 1.2 什么是HTML HTML是Hyper Text Markup Language的缩写。意思是超文本标记语言。它的作用是搭…

筛选出等于1的式子

然后统计和归类 归类分行归类方法 算术符号归类 数字大小排序算术符号归类 import randomdef generate_expression(num_range, num_count, operators):nums random.sample(range(num_range[0], num_range[1]1), num_count)ops random.choices(operators, knum_count-1)expre…

ChatGPT 结合实际地图实现问答式地图检索功能基于Function calling

ChatGPT 结合实际地图实现问答式地图检索功能基于Function calling ChatGPT结合实际业务,主要是研发多函数调用(Function Calling)功能模块,将自定义函数通过ChatGPT 问答结果,实现对应函数执行,再次将结果…

List(CS61B学习记录)

问题引入 上图中,赋给b海象的weight会改变a海象的weight,但x的赋值又不会改变y的赋值 Bits 要解释上图的问题,我们应该从Java的底层入手 相同的二进制编码,却因为数据类型不同,输出不同的值 变量的声明 基本类型…

强引用、软引用、弱引用、幻象引用 —— Java的四种引用类型解析

强引用、软引用、弱引用、幻象引用 —— Java的四种引用类型解析 在Java中,对象的生命周期并不总是由我们直接控制。除了我们常见的强引用外,Java还提供了软引用、弱引用和幻象引用这三种引用类型,它们对对象生命周期的影响各不相同。理解这…

一步到位!快速精通Git工作流及实战技巧详解

Git是一个分布式版本控制系统。 1、git的应用场景 1.备份 小明负责的模块就要完成了,就在即将release之前的一瞬间,电脑突然蓝屏。硬盘光荣牺牲!几个月来的努力付之东流。 场景二:代码还原 这个项目中需要一个很复杂的功能&…