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

Linux入门篇-作业(jobs)调度(本质仍然是进程)

简介

之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。
①前台进程(front process
运行在用户眼前的进程就是前台进程,当用户眼前运行一个前台进程时,如果想运行其他进程,必须关
闭当前前台进程,或者将该前台进程放到后台(backgrand process)运行。
②后台进程
后台进程不会影响用户当前shell运行其他进程。
并不是所有的进程都能作为后台进程运行在后台的。(比如说top命令)
如何判断一个进程到底应不应该放在后台运行呢?
1.运行时间较长,用户不想在前台等待,该进程可以运行结束
2.服务(service)进程,用户想永远让其处于运行状态
[root@RHCSA-EXAM ~]# cat &
[1] 11825
[root@RHCSA-EXAM ~]#
[1]+ Stopped cat
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# jobs
[1]+ Stopped cat
jobs命令是一个阉割版本的ps,只能查看当前shell运行的后台进程。通过jobs来管理后台进程。
jobs功能有限,管理范围有限。
jobs管理后台进程,也是使用kill命令,只不过,kill命令本身也可以向job id发送相应的信号。
[root@RHCSA-EXAM ~]# jobs
[1]+ Stopped cat
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# kill %1
[root@RHCSA-EXAM ~]#
[1]+ Terminated cat
[root@RHCSA-EXAM ~]# jobs
[root@RHCSA-EXAM ~]#
前台进程和后台进程之间的转换
当前台进程运行时,可以使用ctrl+c停止该进程,也可以使用ctrl+z将该进程放到后台,注意,当一
个进程由前台切换到后台时(ctrl+z),那么该进程的状态就会变成stop,如果你想继续运行该进
程,需要使用kill命令发送让该进程继续运行的信号。
[root@RHCSA-EXAM ~]# jobs
[1]+ Stopped dd if=/dev/zero of=/root/50G bs=1M count=50000
[root@RHCSA-EXAM ~]# bg %1
[1]+ dd if=/dev/zero of=/root/50G bs=1M count=50000 &
[root@RHCSA-EXAM ~]# jobs调整进程的优先级
[1]+ Running dd if=/dev/zero of=/root/50G bs=1M count=50000
&
[root@RHCSA-EXAM ~]# fg %1
dd if=/dev/zero of=/root/50G bs=1M count=50000

调整进程的优先级

4 core,最大允许4个进程同时使用100%的cpu
假如说有5个进程需要运行,且该5个进程都需要占用100%的cpu,如果你觉得哪个进程更需要快速运行
结束,那么就调整这个进程的优先级。
①运行进程的时候就指定优先级
②调整一个已经运行进程的优先级
[root@RHCSA-EXAM ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 4
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2695 v2 @ 2.40GHz
Stepping: 4
CPU MHz: 2400.000
BogoMIPS: 4800.00
Virtualization: VT-x
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm
constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc
cpuid pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt
tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault
pti ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust smep
arat flush_l1d arch_capabilities
[root@RHCSA-EXAM ~]# nice -n 10 cat /dev/zero >> /dev/null &
[7] 17443
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# renice -n -30 17443
17443 (process ID) old priority 10, new priority -20
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
服务管理(不好讲)
服务就是进程,进程不一定是服务
服务是具备一定功能的进程,但是有些进程并不具备服务的特征,所以服务一定是进程,但是进程不一
定是服务。
服务也是进程,就意味着服务也享受着之前学习过的进程的概念。
Linux里面的第一个进程,是整个系统的父进程。
在RHEL6版本之前,包括RHEL6,采用的第一个进程叫做init。第一个进程非常重要,因为第一个进程
要负责后面所有其他进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行。
init有问题,通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢。
在RHEL7版本,采用第一个进程叫做systemd。该进程相比如init来说,采用并行方式启动后续进程,
并行启动就意味着速度快。
systemd管理服务操作
[root@RHCSA-EXAM ~]# renice -n -40 17443
17443 (process ID) old priority -20, new priority -20
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# killall cat

服务管理

服务就是进程,进程不一定是服务
服务是具备一定功能的进程,但是有些进程并不具备服务的特征,所以服务一定是进程,但是进程不一
定是服务。
服务也是进程,就意味着服务也享受着之前学习过的进程的概念。
Linux里面的第一个进程,是整个系统的父进程。
RHEL6版本之前,包括RHEL6,采用的第一个进程叫做init。第一个进程非常重要,因为第一个进程
要负责后面所有其他进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行。
init有问题,通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢。
RHEL7版本,采用第一个进程叫做systemd。该进程相比如init来说,采用并行方式启动后续进程,
并行启动就意味着速度快。

systemd管理服务操作 

基本上相对较新版本的Linux发行版都支持systemd管理网络服务,ubuntu16.04,rhel7,
suse,opensuse,debian。
systemd管理的内容不仅仅有service,systemd管理的单位是unit,service只是unit中的一
种。
[root@RHCSA-EXAM ~]# systemctl list-units
[root@RHCSA-EXAM ~]# systemctl list-unit-files
我们的课程涉及的unit,只有service和target
systemd管理service
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 09:17:42 CST; 13h ago
Docs: man:NetworkManager(8)
Main PID: 1073 (NetworkManager)
Tasks: 3 (limit: 26213)
Memory: 13.3M
CGroup: /system.slice/NetworkManager.service
└─1073 /usr/sbin/NetworkManager --no-daemon
systemctl status service
[root@RHCSA-EXAM ~]# systemctl status NetworkManager.service
查看服务的状态
[root@RHCSA-EXAM ~]# systemctl stop NetworkManager
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2020-04-22 22:42:05 CST; 7s ago
Docs: man:NetworkManager(8)
Process: 1073 ExecStart=/usr/sbin/NetworkManager --no-daemon
(code=exited, status=0/SUCCESS)
Main PID: 1073 (code=exited, status=0/SUCCESS)
[root@RHCSA-EXAM ~]# systemctl start NetworkManager
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:42:55 CST; 4s ago
Docs: man:NetworkManager(8)
Main PID: 29235 (NetworkManager)
Tasks: 4 (limit: 26213)
Memory: 8.0M
CGroup: /system.slice/NetworkManager.service
└─29235 /usr/sbin/NetworkManager --no-daemon
[root@RHCSA-EXAM ~]# systemctl restart NetworkManager
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:43:42 CST; 5s ago
Docs: man:NetworkManager(8)
Main PID: 29421 (NetworkManager)
Tasks: 4 (limit: 26213)
Memory: 4.4M
CGroup: /system.slice/NetworkManager.service
└─29421 /usr/sbin/NetworkManager --no-daemon
[root@RHCSA-EXAM ~]# systemctl disable NetworkManager
Removed /etc/systemd/system/multiuser.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManagerwait-online.service.
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
disabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:43:42 CST; 2min 57s
ago
Docs: man:NetworkManager(8)
Main PID: 29421 (NetworkManager)
Tasks: 3 (limit: 26213)
Memory: 4.3M
CGroup: /system.slice/NetworkManager.service
└─29421 /usr/sbin/NetworkManager --no-daemon
[root@RHCSA-EXAM ~]# systemctl enable NetworkManager
Created symlink /etc/systemd/system/dbusorg.freedesktop.NetworkManager.service →
/usr/lib/systemd/system/NetworkManager.service.
Created symlink /etc/systemd/system/multiuser.target.wants/NetworkManager.service →
/usr/lib/systemd/system/NetworkManager.service.
Created symlink /etc/systemd/system/dbus-org.freedesktop.nmdispatcher.service → /usr/lib/systemd/system/NetworkManagerdispatcher.service.
Created symlink /etc/systemd/system/networkonline.target.wants/NetworkManager-wait-online.service →
/usr/lib/systemd/system/NetworkManager-wait-online.service.
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service;
enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-22 22:43:42 CST; 3min 23s
ago
Docs: man:NetworkManager(8)
Main PID: 29421 (NetworkManager)
Tasks: 3 (limit: 26213)
Memory: 4.3M
CGroup: /system.slice/NetworkManager.service
└─29421 /usr/sbin/NetworkManager --no-daemon
systemd管理target
[root@RHCSA-EXAM ~]# systemctl is-active NetworkManager
active
[root@RHCSA-EXAM ~]# systemctl is-enabled NetworkManager
enabled
[root@RHCSA-EXAM ~]# systemctl stop NetworkManager
[root@RHCSA-EXAM ~]# systemctl disable NetworkManager
[root@RHCSA-EXAM ~]# systemctl is-active NetworkManager
inactive
[root@RHCSA-EXAM ~]# systemctl is-enabled NetworkManager
disabled

systemd管理target

需要了解的只是target的含义。target是由服务组成的一类启动目标,systemd可以设置启
动目标,如果systemd指定了一个target作为启动目录,那么下次系统启动的时候就会启动target里
面的所有服务。
我们需要了解的target有两个,一个是multi-user.target,一个是graphical.target。
multi-user.target就是字符界面的Linux系统
graphical.target就是图形界面的Linux系统
[root@RHCSA-EXAM ~]# systemctl isolate multi-user.target
临时切换到字符界面
如果你的系统安装了图形界面,你切换到字符界面,你按ctrl+alt+F1~F6
[root@RHCSA-EXAM ~]# systemctl isolate graphical.target
临时切换到图形界面
[root@RHCSA-EXAM ~]# systemctl get-default
graphical.target
查看下次开机启动加载哪个target
[root@RHCSA-EXAM ~]# systemctl set-default multi-user.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target →
/usr/lib/systemd/system/multi-user.target.
修改下次开机启动的target
[root@RHCSA-EXAM ~]#
[root@RHCSA-EXAM ~]# systemctl get-default
multi-user.target
[root@RHCSA-EXAM ~]# systemctl set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target →
/usr/lib/systemd/system/graphical.target.
[root@RHCSA-EXAM ~]# systemctl get-default
graphical.target

http://www.lryc.cn/news/31125.html

相关文章:

  • vue 监听 取消监听
  • 0103深度优先搜索和单点连通-无向图-数据结构和算法(Java)
  • 进销存管理系统
  • Sonar:VSCode配置SonarLint/SonarLint连接SonarQube
  • 陀螺仪小车(Forerake-Car)
  • Leetcode Day5 含有重复元素集合的组合+
  • Mac Book pro(M1)使用总结
  • QML集成JavaScript
  • 学习周报3.5
  • java基础学习篇
  • Go 语言基础语法及应用实践
  • C语言自定义类型---进阶
  • 85.链表总结
  • 【博学谷学习记录】超强总结,用心分享|狂野大数据课程【DataFrame的相关API】的总结分析
  • 粒子群优化最小二乘支持向量机SVM回归分析,pso-lssvm回归预测
  • lavis多模态开源框架学习--安装
  • 【IDEA】如何在Tomcat上创建部署第一个Web项目?
  • 程序员画流程图的工具Draw.io
  • CAPL脚本DBLookup函数动态访问CAN 报文的属性
  • 2022年显卡性能跑分排名表
  • mx-font
  • 基于S32K148快速调试TJA1101
  • 万字长文详解webpack知识图谱
  • 模板测试(Stencil Test)
  • 【Go语言学习】安装与配置
  • HCIP-5OSPF区域类型学习笔记
  • C语言再学习第三章
  • 【aiy篇】小目标检测综述
  • 常用Linux命令的基本使用
  • 对跳表的深入理解