当前位置: 首页 > news >正文

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 

相关文章:

  • 【linux进程信号】信号的产生
  • HTML静态网页成品作业(HTML+CSS)——阜阳剪纸介绍设计制作(1个页面)
  • 修改MonkeyDev默认配置适配Xcode15
  • 如何在小程序中绑定身份证
  • uniapp让输入框保持聚焦状态,不会失去焦点
  • 今日份总结
  • [力扣100] 55.跳跃游戏
  • JAVA基础-数据结构一(线性表、链表、栈、队列)
  • element-ui plus v2.60 终于修复了 radio checkbox 取值不明确的问题,label value 值
  • 2023年第三届中国高校大数据挑战赛(第一场)B题思路
  • 使用Spring的AOP
  • 使用Windows API实现一个简单的串口助手
  • 学习JAVA的第十八天(基础)
  • 信息系统项目管理师--成本管理
  • 重要通告 | 公司更名为“浙江实在智能科技有限公司”
  • 收藏网友的 源程序下载网
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 5、React组件事件详解
  • Apache Pulsar 2.1 重磅发布
  • ESLint简单操作
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spring Boot MyBatis配置多种数据库
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Nginx实现动静分离
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $(function(){})与(function($){....})(jQuery)的区别
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2)MFC+openGL单文档框架glFrame
  • (30)数组元素和与数字和的绝对差
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (solr系列:一)使用tomcat部署solr服务
  • (六)Hibernate的二级缓存
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (五)关系数据库标准语言SQL
  • (转)visual stdio 书签功能介绍
  • ./和../以及/和~之间的区别
  • .gitignore
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET轻量级ORM组件Dapper葵花宝典
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • ??eclipse的安装配置问题!??
  • @requestBody写与不写的情况
  • [ C++ ] STL---仿函数与priority_queue
  • [.net]官方水晶报表的使用以演示下载
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [ARC066F]Contest with Drinks Hard
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce
  • [ITIL学习笔记]之事件管理(2)
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍