16.1.2 Linux 的多用户多任务环境

news2024/11/24 14:52:35

在 Linux 下面执行一个指令时,系统会将相关的权限、属性、程序码与数据等均载入内存, 并给予这个单元一个程序识别码 (PID),最终该指令可以进行的任务则与这个 PID 的权限有关。根据这个说明,我们就可以简单的了解,为什么 Linux 这么多用户,但是却每个人都可以拥有自己的环境了吧。

多人环境:

什么是“多用户多任务”?在Linux系统上具有多种不同的账号,每种帐号都有都有其特殊的权限,只有一个人具有至高无上的权力,那就是 root (系统管理员)。除了 root 之外,其他人都必须要受一些限制的。

多任务行为:

目前的 CPU 速度可高达几个 GHz。 这代表 CPU 每秒钟可以运行 109 这么多次指令。我们的 Linux 可以让 CPU 在各个工作间进行切换, 也就是说,其实每个工作都仅占去 CPU 的几个指令次数,所以 CPU 每秒就能够在各个程序之间进行切换。

CPU 切换程序的工作,与这些工作进入到 CPU 运行的调度 (CPU 调度,非 crontab 调度)会影响到系统的整体性能! 目前 Linux 使用的多任务切换行为是非常棒的一个机制,几乎可以将 PC 的性能整个压榨出来。

多重登陆环境的七个基本终端窗口:

在 Linux 当中,默认提供了六个文字界面登陆窗口,以及一个图形界面,你可以使用 [Alt]+[F1].....[F7] 来切换不同的终端机界面,而且每个终端机界面的登陆者还可以不同人。Linux 默认会启动六个终端机登陆环境的程序,所以我们就会有六个终端机接口。

16.2 工作管理

这个工作管理 (job control) 是用在 bash 环境下的,也就是说:“当我们登陆系统取得 bashshell 之后,在单一终端机接口下同时进行多个工作的行为管理 ”。

16.2.1 什么是工作管理?

由于假设我们只有一个终端接口,因此在可以出现提示字符让你操作的环境就称为前景(foreground),至于其他工作就可以让你放入背景 (background) 去暂停或运行。要注意的是,放入背景的工作想要运行时, 他必须不能够与使用者互动。举例来说, vim 绝对不可能在背景里面执行 (running) 的,因为没有数据无法运行,而且放入背景的工作是不可以使用 [ctrl]+c 来终止的。

总之,要进行 bash 的 job control 必须要注意到的限制是:

这些工作所触发的程序必须来自于你 shell 的子程序(只管理自己的 bash);

前景:你可以控制与下达指令的这个环境称为前景的工作 (foreground);

背景:可以自行运行的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 调用该工作;

背景中“执行”的程序不能等待 terminal/shell 的输入(input)

16.2.2 job control的管理

如前所述,bash 只能够管理自己的工作而不能管理其他 bash 的工作,所以即使你是 root 也不能够将别人的 bash 下面的 job 给他拿过来执行。此外,又分前景与背景,然后在背景里面的工作状态又可以分为“暂停 (stop)”与“运行中 (running)”。实际进行 job 控制的指令有下面这些:

直接将指令丢到背景中“执行”的 &

如果想要同时进行多个工作, 那么可以将某些工作直接丢到背景环境当中,让我们可以继续操作前景的工作。如何将工作丢到背景中?最简单的方法就是利用“ & ”。举个简单的例子,我们要将 /etc/ 整个备份成为 /tmp/etc.tar.gz 且不想要等待,那么可以这样做:

在输入一个指令后,在该指令的最后面加上一个“ & ”代表将该指令丢到背景中, 此时 bash 会给予这个指令一个“工作号码(job number)”,就是那个 [1]。至于后面那个 14432 则是该指令所触发的“ PID ”。而且,有趣的是,我们可以继续操作 bash。如果你输入几个指令后,突然出现这个数据:

就代表 [1] 这个工作已经完成 (Done) ,该工作的指令则是接在后面那一串命令行。 另外,这个 & 代表:“将工作丢到背景中去执行”。 注意到那个“执行”的字眼!此外,这样的情况最大的好处是: 不怕被 [ctrl]+c 中断。此外,将工作丢到背景当中要特别注意数据的流向。包括上面的讯息就有出现错误讯息,导致我的前景被影响。 虽然只要按下 [enter] 就会出现提示字符。但如果我将刚刚那个指令改成:

在背景当中执行的指令,如果有 stdout 及 stderr 时,他的数据依旧是输出到屏幕上面的, 所以,我们会无法看到提示字符,当然也就无法完好的掌握前景工作。同时由于是背景工作的 tar , 此时你怎么按下 [ctrl]+c 也无法停止。所以,最佳的状况就是利用数据流重导向, 将输出数据传送至某个文件中。举例来说,我可以这样做:

这样,输出的信息都给他传送到 /tmp/log.txt 当中,当然就不会影响到我们前景的作业了。

工作号码 (job number) 只与你这个 bash 环境有关,但是他既然是个指令触发的,所以当然一定是一个程序, 因此你会观察到有 job number 也搭配一个 PID。

将“目前”的工作丢到背景中“暂停”:[ctrl]-z

想个情况:如果我正在使用 vim ,却发现我有个文件不知道放在哪里,需要到 bash 环境下进行搜寻,此时是否要结束 vim 呢?不需要,只要暂时将 vim 给他丢到背景当中等待即可。 例如以下的案例:

在 vim 的一般模式下,按下 [ctrl] 及 z 这两个按键,屏幕上会出现 [1] ,表示这是第一个工作, 而那个 + 代表最近一个被丢进背景的工作,且目前在背景下默认会被取用的那个工作(与 fg 这个指令有关 )!而那个 Stopped 则代表目前这个工作的状态。在默认的情况下,使用 [ctrl]-z 丢到背景当中的工作都是“暂停”的状态。

观察目前的背景工作状态: jobs

如果想要知道目前有多少的工作在背景当中,就用 jobs 这个指令。一般来说,直接下达jobs 即可! 不过,如果你还想要知道该 job number 的 PID 号码,可以加上 -l 这个参数。+ 代表默认的取用工作。 所以说:“目前我有两个工作在背景当中,两个工作都是暂停的, 而如果我仅输入 fg 时,那么那个 [2] 会被拿到前景当中来处理”。

其实 + 代表最近被放到背景的工作号码, - 代表最近最后第二个被放置到背景中的工作号码。 而超过最后第三个以后的工作,就不会有 +/- 符号存在了。

将背景工作拿到前景来处理:fg

刚刚提到的都是将工作丢到背景当中去执行的,那么有没有可以将背景工作拿到前景来处理的?就是fg。举例来说,我们想要将上头范例当中的工作拿出来处理时:

经过 fg 指令就能够将背景工作拿到前景来处理。不过比较有趣的是最后一个显示的结果,我们会发现 + 出现在第一个工作后! 怎么会这样啊?这是因为你刚刚利用 fg %1 将第一号工作捉到前景后又放回背景,此时最后一个被放入背景的将变成 vi 那个指令动作, 所以当然[1] 后面就会出现 + 了。另外,如果输入“ fg - ” 则代表将 - 号的那个工作号码拿出来,上面就是 [2]- 那个工作号码。

让工作在背景下的状态变成运行中: bg

管理背景当中的工作: kill

我们可以让一个已经在背景当中的工作继续工作,也可以让该工作以 fg 拿到前景来, 那么,如果想要将该工作直接移除呢?或者是将该工作重新启动呢?这个时候就得需要给予该工作一个讯号 (signal),kill这个指令就起作用了。

-9 这个 signal 通常是用在“强制删除一个不正常的工作”时所使用的, -15 则是以正常步骤结束一项工作(15也是默认值),两者之间并不相同。举上面的例子来说,我用 vim 的时候,不是会产生一个 .filename.swp 的文件吗? 那么,当使用 -15 这个 signal时, vim 会尝试以正常的步骤来结束掉该 vi 的工作, 所以 .filename.swp 会主动的被移除。但若是使用 -9 这个 signal 时,由于该 vim 工作会被强制移除掉,因此, .filename.swp 就会继续存在文件系统当中。

不过,毕竟正常的作法中,你应该先使用 fg 来取回前景控制权,然后再离开 vim 才对。因此,以上面的范例二为例,其实 kill 确实无法使用 -15 正常的结束掉 vim 的动作。通常使用 -9 是因为某些程序你真的不知道怎么通过正常手段去终止他,这才用到 -9 的。

kill搭配 signal 所详列的信息 (用 man 7 signal 去查阅相关数据) 可以让您有效的管理工作与程序 (Process),此外,那个 killall 也是同样的用法。使用kill-l可以得到signal number 与名称的对应。

另外, kill 后面接的数字默认会是 PID ,如果想要管理 bash 的工作控制,就得要加上 %数字了。

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

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

相关文章

ESD培训和咨询的相关服务

ESD(Electrostatic Discharge,静电放电)是指在两个物体之间发生的电荷平衡或不平衡,导致静电能量的释放。静电放电可能会对敏感的电子设备、芯片和电子元件产生损坏,因此对于需要处理电子设备的行业来说,ES…

MSP432自主开发笔记6:定时器多通道捕获多条编码器线脉冲数

所用开发板:MSP432P401R 今日在此更新一下编码器测速的定时器捕获写法,之前学习时竟然忘记更新了~~ 本文讲如何用定时器的通道来 捕获编码器的脉冲信号数量,不提供速度路程的计算方式, 文章提供源码,测试工程下载&a…

手动实现 Spring 底层机制【初始化 IOC容器+依赖注入+BeanPostProcessor 机制+AOP】之实现任务阶段 5- bean 后置处理器

😀前言 手动实现 Spring 底层机制【初始化 IOC容器依赖注入BeanPostProcessor 机制AOP】的第五篇具体实现了任务阶段 5- bean 后置处理器 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希…

ModaHub魔搭社区:从OpenAI实践看分工必要性,核心关注工作流相关的基础软件工具栈

从OpenAI实践看分工必要性,核心关注工作流相关的基础软件工具栈 参考海外OpenAI的率先尝试,工作流分工、点工具加持助力成功。一方面,OpenAI在《GPT-4 Technical Report》论文中[1]中披露了参与GPT 4开发的人员分工,共249人,角色分工明确,预训练、强化学习和对齐、部署等…

时间序列去趋势化和傅里叶变换

在计算傅里叶变换之前对信号去趋势是一种常见的做法,特别是在处理时间序列时。在这篇文章中,我将从数学和视觉上展示信号去趋势是如何影响傅里叶变换的。 这篇文章的目的是让介绍理解什么是常数和线性去趋势,为什么我们使用它们,…

CRM系统如何搭建?流程是什么样的?

CRM系统可以提高企业的销售效率和客户满意度,从而增加企业的收入和利润。但是,要想成功地上线CRM系统,需要经过一系列的步骤和流程,下面说说,企业如何上线CRM系统?CRM系统搭建流程。 1、需求分析 需求分析…

记一次物理机安装centos7遇到的问题

首先制作U盘镜像(之前装windows的大白菜之类的就没用了) 用的这个UltraISO制作U盘镜像 然后从U盘启动开始安装, 问题一 安装时报错 dracut-pre-udev[351]:modprobe :ERROR:could not insert ‘floppy’ dracut-pre-udev[351]:modprobe…

Nacos源码 (3) 注册中心

本文将从一个服务注册示例入手,通过阅读客户端、服务端源码,分析服务注册、服务发现原理。 使用的2.0.2的版本。 返回目录 客户端 创建NacosNamingService对象 NacosNamingService nacosNamingService new NacosNamingService(NACOS_HOST);NacosNami…

华为OD机试 - 最长的连续子序列 (Java 2022Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》…

ISIS技术(第三十七课)

1 分享一下华为官网上的一张地图 官网地址:https://support.huawei.com/hedex/hdx.do?docid=EDOC1000105967&id=ZH-CN_CONCEPT_0000001501534705 2 路由的分类 -直连路由 直接连接的路由,且配置了IP地址之后(在同一网段内),就是直连路由。 -非直连路由 -静态路由…

如何在金属制品业运用IPD?

金属制品行业是指以金属材料为原料,通过加工、制造、加工等工艺制造出各种金属制品的企业和产业。这些金属制品包括但不限于机械设备、工具、建筑材料、家具、电子产品、交通运输设备等。金属制品加工业是机械装备行业的一个子行业,包括结构性金属制品制…

SpringBoot对一个URL通过method(GET、POST、PUT、DELETE)实现增删改查操作

目录 1. rest风格基础2. 开启方法3. 实战练习 1. rest风格基础 我们都知道GET、POST、PUT、DELETE分别对应查、增、改、删除 虽然Postman这些工具可以直接发送GET、POST、PUT、DELETE请求。但是RequestMapping并不支持PUT和DELETE请求操作。需要我们手动开启 2. 开启方法 P…

ModaHub魔搭社区:Milvus Cloud素材集合帖,等你查收

Hi~Milvus Cloud 的各位朋友,这是一期 Milvus Cloud 素材弹药库的集中汇总帖。随着向量数据库的火爆,越来越多的伙伴开始关注到向量数据库并开始使用 Milvus Cloud 。 考虑到目前信息获取的渠道多且分散,我们专门为大家整理了一期 Milvus Cloud 信息集合帖,让大家可以在快…

iPhone苹果手机触屏失灵无法关机,如何强制重启

参考:https://zhuanlan.zhihu.com/p/615223121 1,只轻按一下音量上键后快速松开 2,只轻按一下音量下键后快速松开 3,只按住右侧电源键长按不松手,直到手机关机。

Tomcat的多实例和动静分离

目录 一、多实例 二、 nginxtomcat的负载均衡和动静分离 三、Tomcat 客户端->四层代理->七层代理->tomcat服务器 实验: 问题总结: tomcat日志文件:/usr/local/tomcat/logs/catalina.out 一、多实例 在一台服务器上有多个tomc…

python——案例19:九九乘法表

案例19:九九乘法表for i in range(1,10): #i是行,j是列for j in range(1,i1): #确保内循环中的列小于等于列print(%d*%d%2ld%(i,j,i*j),end ) #计算方法,并且确保内容连续print()

2023.8.14论文阅读

文章目录 ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation摘要本文方法实验结果 DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection摘要本文方法实验结果 ESPNet: Efficient Spatial Pyramid of Dilated Convo…

【不限于联想Y9000P电脑关盖再打开时黑屏的解决办法】

不限于联想Y9000P电脑关盖再打开时黑屏的解决办法 问题的前言问题的出现问题拟解决 问题的前言 事情发生在昨天,更新了Win11系统后: 最惹人注目的三处地方就是: 1.可以查看时间的秒数了; 2.右键展示的内容变窄了; 3.按…

JimuReport积木报表 v1.6.0版本发布—免费的可视化报表

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…

腾讯会议:云上协奏,远程韶华

腾讯会议的原理及历史 摘要 本论文介绍了腾讯会议的原理和历史。腾讯会议是一款基于云计算和通信技术的在线会议平台,由腾讯公司推出。通过分析腾讯会议的工作原理和演进历史,我们可以深入了解该平台是如何实现高效、便捷、安全的远程协作和沟通的。 1. 引言 近年来,随着…