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

猜你喜欢

转载自blog.csdn.net/S1124654/article/details/129346428