公司网站开发策略和基本步骤/哈尔滨电话本黄页
shell命令及运行原理
我们使用Linux时,并不是直接访问操作系统,为什么不是直接访问操作系统呢?
如果用户直接访问操作系统,不仅使用难度大,而且不安全,容易把系统文件损坏。
那么我们通常是如何访问操作系统的呢?
我们一般是通过shell外壳程序来访问操作系统的。(图形化界面和指令操作都是操作系统提供的一种外壳程序)
shell外壳的主要功能:
1.将用户的命令进行解析,翻译给操作系统来处理
2.将操作系统的处理结果通过内核进行解析、然后翻译给使用者。
(外壳程序做命令行解析并不是自己做,它主要是接受用户的需求,通过派生子进程的方式,让子进程进行命令行解析以及程序的相关执行。)
简单来说,shell是一种命令行解释器
有时shell会在操作系统不知情的情况下,直接拒绝用户的严重非法请求,以此来保护操作系统。有时,当shell被我们强制要求做一些自己办不成的事,它仍会去尝试。
操作系统有权利拒绝我们做一些指令(例如我们没权限却仍要执行某些操作)。
在Linux中我们主要是使用命令行操作,在Windows中我们主要是使用图形化界面。
我,银行卡,ATM机
我:用户
银行卡:shell外壳程序
ATM机:操作系统
外壳程序(操作系统外壳)存在的意义:
1.做用户与操作系统交互的中间软件层(交互)
2.可以在一定程度起到保护操作系统的作用(不一定是直接保护)
echo $BASH 查看外壳
媒婆:shell
王婆:bash
bash是shell的一种。shell是对bash的统称。
如花:操作系统
张三:用户
王婆:shell外壳程序
权限
Linux是一个多用户的操作系统,可以同时存在多个用户。
root:只有一个,具有Linux下的最高权限
普通用户:可以有多个,但要受权限的约束
权限的核心:用户类别+事物(文件)属性
权限分为对人操作、对角色和文件操作
权限=人+事物属性(r读w写x执行)事物的属性决定其相关权限。
文件类型及权限 用户的拥有者/所属组/other 文件大小 创建/最近修改时间 文件名
1表示为链接文件。
Linux中,不以文件后缀来区分文件类型
文件类型有:
d:目录
-:普通文件
p:管道文件
b:块设备。最典型的块设备就是磁盘设备
c:字符设备。最典型的字符设备就是键盘或显示器
gcc不是Linux系统,它是Linux上的一个软件,它对后缀是有要求的
人:root或其他被添加的用户
拥有者:文件属于谁
所属组:文件属于哪一个组
other:不属于上面两种的任何一个,就是other
rwx分别表示权限读、写、执行
那么如何改权限呢?
改人或改属性都可以。
1.改属性
u/g/o/a:拥有者/所属组/other/全部
chmod u/g/o/a +/- r/w/x filename
即使删除了拥有者的所有权限,拥有者照样可以给自己对该文件加权限。
2.改拥有者、所属组
chown、chgrp
进入一个目录,需要什么权限?x
查看目录下面的文件列表:r
要在目录下创建文件或目录:w
需要超级用户才能直接改拥有者和所属组
Linux默认:一个目录被创建,起始权限是777,一个普通文件被创建,起始权限是666
umask是权限掩码,凡是在umask中出现的权限,都不应该在最终权限中出现。umask最开始那个0先不谈
最终权限=起始权限&(~umask)
如果别人在我的目录下创建了文件,即使我们没有该文件的任何权限(即我们不能对它读写执行),但我们还是可以删掉它的。
我们设置权限用来限制互相之间的读、写、执行,但是我们限制不了别人删除文件。因为这不取决于文件的属性,而是取决于该文件所在目录对于该用户的权限。我们只要将目录对于他们的权限去掉,就可以不用担心别人删掉我们的文件了。
所以我们担心的是与别人在系统某一特定路径特定目录里共同维护文件时,发生互相删除的事情。这种情况下,我们虽然可以不让别人看,但是阻止不了别人删我们的文件。(即大家所有用户都在一个共同的路径下,且对该目录都具有读写执行权限的情况。)
系统中的tmp目录就是系统中存在的所有用户共享的目录,几乎包含所有用户形成的临时文件
我们想要实现有多个用户共享一个目录,且需要在该目录下进行读、写、创建、删除文件的情况,只能让他们自己删除自己的文件,不能删除别人的文件,使用粘滞位就可以。
最后一位为t,这个t是x的一种特殊情况。设置了之后,就只能自己删除自己的文件了。
注意,粘滞位只能给目录设置,且其他用户是不能去掉你的目录的粘滞位的。粘滞位一般是谁设置,谁取消(root)
当一个目录被设置为粘滞位,则该目录下的文件只能由
1.超级管理员删除
2.该目录的所有者删除
3.该文件的所有者删除
进入一个目录,需要什么权限?x
查看目录下面的文件列表:r
要在目录下创建文件或目录:w
写一个简易的shell
第十九节1:45:00-2:48:00 + 第二十节
为什么要程序替换?
程序替换和应用场景有关,我们有时候必须要求子进程执行新的程序
(第二十节 0:00:00 - 2:18:00 一段很重要的复习)
复习
myshell的优化
shell的环境变量是从哪来的呢?环境变量是写在配置文件中的,shell启动的时候,通过读取配置文件来获得起始环境变量
相关文章:

二、Linux中权限、shell命令及运行原理
shell命令及运行原理 我们使用Linux时,并不是直接访问操作系统,为什么不是直接访问操作系统呢? 如果用户直接访问操作系统,不仅使用难度大,而且不安全,容易把系统文件损坏。 那么我们通常是如何访问操作系统…...

【RabbitMQ上手——单实例安装5种简单模式实现通讯过程】
【RabbitMQ入门-单实例安装&5种简单模式实现通讯过程】 一、环境说明二、安装RabbitMQ三、用户权限及Virtual Host设置四、5种简单模式实现通讯过程的实现五、小结 一、环境说明 安装环境:虚拟机VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本:…...

python+pytest接口自动化之HTTP协议基础
HTTP协议简介 HTTP 即 HyperText Transfer Protocol(超文本传输协议),是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型…...

【技巧】如何保护PowerPoint不被改动?
PPT,也就是PowerPoint,是很多小伙伴在工作生活中经常用到的图形演示文稿软件。 做好PPT后,担心自己不小心改动了或者不想他人随意更改,我们可以如何保护PPT呢?下面小编就来分享两个常用的方法: 1. 将PPT改…...

【APITable】教程:创建并运行一个自建小程序
1.进入APITable,在想要创建小程序的看板页面点击右上角的【小程序】,进入小程序编辑页面。 2.创建一个新的小程序区。 点击【 添加小程序】 点击创建小程序,选择模板,输入名字。 3.确定后进入小程序部署引导页面。 4.打开Xshell 7…...

使用MyBatis操作数据库
hi,大家好,今天为大家带来MyBatis操作数据库的知识 文章目录 🐷1.根据MyBatis操作数据库🧊1.1查询操作🍇1.1.1无参查询🍇1.1.2有参查询 🧊1.2删除操作🧊1.3修改操作🧊1.4增加操作🧊…...

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--功能实现[五]
文章目录 SSM--功能实现实现功能09-带条件查询分页显示列表需求分析/图解思路分析代码实现测试分页条件查询带条件分页查询显示效果 实现功能10-添加家居表单前端校验需求分析/图解思路分析代码实现完成测试测试页面效果 实现功能11-添加家居表单后端校验需求分析/图解思路分析…...

Qt应用程序窗体最大化失效问题的解决方法
记录一个在Qt开发过程中遇到的问题: 【问题描述】在showEvent中调用showMaximized(),应用程序窗体仍然无法最大化。 【定位分析】在Qt应用程序中,如果窗体最大化失效,可能是因为在窗体的showEvent事件中使用了showMaximized()方…...

python怎么判断变量的数据类型
在编程的世界里,了解各种数据类型是非常重要的。在Python中,有着丰富的数据类型用于存储和处理不同类型的数据。掌握这些数据类型的定义和作用,我们能够更好地在程序中管理和操作数据,提高代码的效率和可读性。 Python中常见的数据…...

FastAPI 构建 API 高性能的 web 框架(二)
上一篇 FastAPI 构建 API 高性能的 web 框架(一)是把LLM模型使用Fastapi的一些例子,本篇简单来看一下FastAPI的一些细节。 有中文官方文档:fastapi中文文档 假如你想将应用程序部署到生产环境,你可能要执行以下操作&a…...

如何实现 Java SpringBoot 自动验证入参数据的有效性
Java SpringBoot 通过javax.validation.constraints下的注解,实现入参数据自动验证 如果碰到 NotEmpty 否则不生效,注意看下 RequestBody 前面是否加上了Valid Validation常用注解汇总 Constraint详细信息Null被注释的元素必须为 nullNotNull被注释的元…...

golang学习随记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 go学习快捷键及快速生成代码片段go基础循环流程控制关键字切片,拷贝函数闭包 defer语句格式化输出go语言随机数rand.seed() 包管理并发编程goroutinecha…...

【PCL-6】PCL基于凹凸型的分割算法(LCCP)
凹凸型分割算法适用于颜色类似、棱角分明的物体场景分割。LCCP方法不依赖点云颜色,只使用空间信息和法线信息。 算法流程: 1、基于超体聚类的过分割; 2、在超体聚类的基础上再聚类。 算法思路: 1、基于CC和SC判断凹凸性&…...

多进程并发服务器
文章目录 思路问题多进程并发回环服务器代码客户端代码 思路 每当一个客户端连接服务器后,创建一个子进程负责与该客户端通信,客户端断开连接之后,服务器回收子进程资源。 问题 问题1:父进程阻塞在等待连接(accept())处…...

2021秋招总结
2021 秋招总结 作为星球第一批准备秋招的人,经过这几个月的面试之后,感觉也算是有一些小小的经验了吧,就做一个简单的记录,希望能够为星球中准备秋招的伙伴们提供一些参考吧~ 序 4月初加入星球,到9月底,一…...

Linux6.34 Kubernetes yaml文件详解
文章目录 计算机系统5G云计算第三章 LINUX Kubernetes yaml文件详解一、yaml文件概述1.查看 api 资源版本标签2.写一个yaml文件demo 计算机系统 5G云计算 第三章 LINUX Kubernetes yaml文件详解 一、yaml文件概述 Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式…...

防火墙笔记
什么是防火墙 在计算机网络中是指设置在可信任的内部网络和不可信任的外部网络之间的屏障,通过强化边界控制保障内容安全,同时不妨碍内部对外部的访问。 20世纪80年代,最早的防火墙几乎与路由器同时出现,第一代防火墙主要基于包过…...

使用代码下载开源的大模型文件示例以及中文微调llama资源汇总:
一、下载示例 from huggingface_hub import snapshot_downloadrepo_id "THUDM/chatglm2-6b" local_dir ./chatglm2-6b/ cache_dir local_dir "/cache" while True:try:snapshot_download(cache_dircache_dir,local_dirlocal_dir,repo_idrepo_id,loca…...

Wav2vec2 论文阅读看到的一些问题
Wav2vec2 论文阅读看到的一些问题 这里只是简单的思考一下论文的一些问题,不是论文解读。 Q1. 为什么wav2vec依旧需要Transformer来做推理,而不直接使用VQ生成的内容? A1. Transformer在更长的序列上有更好的编码效果,例如论文也写…...

爬虫学习记录(持续更新)
一、问题记录 1.使用webdriver报错AttributeError: str object has no attribute capabilities 解决:目前使用的selenium版本是4.11.2,可以不必设置driver.exe的路径,selenium可以自己处理浏览器和驱动程序,因此,使用…...

libevent源码学习1---创建event
libevent源码学习1—创建event Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的非阻塞网络库。安装请参考ubuntu下载安装libevent event_base 使用 libevent 函数之前需要分配一个或者多个 event_base 结构体。每个 event_base 结构体持有一个…...

Python类的设计
Python类的设计 # 定义一个闹钟类 class Clock:__cureen_keyNone # 私有成员不能改变和使用def __init__(self, id, price): # 类对象是立即自动执行self.id idself.price pricedef ring(self):import winsound # 内置声音方法winsound.Beep(2000,3000)clock1 Clock(…...

微信小程序的项目解构
视频链接 黑马程序员前端微信小程序开发教程,微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)_哔哩哔哩_bilibili 接口文档 https://www.escook.cn/docs-uni-shop/mds/1.start.html 1:微信小程序宿主环境 1:常见的宿…...

【Archaius技术专题】「Netflix原生态」动态化配置服务之微服务配置组件变色龙
前提介绍 如果要设计开发一套微服务基础架构,参数化配置是一个非常重要的点,而Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以说是比其他客户端具备更多生产级特性,也更灵活。*在NetflixOSS微服务技术栈…...

python条件分支和循环语句
python中没有{}的写法,一般时通过缩进的方式来确定分支和循环需要执行的代码块。 if 需要判断的条件表达式:条件成立时的动作 elif 需要判断的条件表达式:条件成立时的动作 else:动作for 变量 in 迭代对象:动作 示例: while 退出条件:动作...

工具推荐:Wireshark网络协议分析工具(对比tcpdump)
文章首发地址 Wireshark是一款开源的网络协议分析工具,可以捕获网络数据包并对其进行详细的分析和解释。下面是Wireshark的详细介绍: Wireshark 工作原理 Wireshark通过捕获网络接口上的数据包,将其转换为可读的格式,并在界面…...

[OnWork.Tools]系列 04-快捷启动
简介 主要功能是将常用的软件拖动到软件中,实现快速点击启动,结合软件设置中的设置的快捷键,可以快速呼出对应的面板,使用快捷键快速启动应用 拖拽内容 拖拽快捷方式到面板,双击快速打开 拖拽文件方式到面板,双击快速打开 拖拽文件夹到面板双击快速打开 拖拽项目调整顺序 右…...

如何将项目挂后台运行?【nohup和tmux】
挂后台运行,防止霸屏。 线上的程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息。 一.nohup--挂后台运行的命令 //nohup--英文全称no hang up,可以后台运行指定命令 //hello.log是指将日志输出到hello.log文件 …...

什么是进程、线程、协程
什么是进程? 我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序…...

Python爬虫——selenium_访问元素信息
from selenium import webdriver# 创建浏览器对象 path files/chromedriver.exe browser webdriver.Chrome(path)# 访问地址 url https://www.baidu.com browser.get(url)input browser.find_element_by_id(su)获取元素属性 .get_attribute(class)print(input.get_attribu…...