Linux系统及shell脚本(部分)| 青训营笔记

35 阅读4分钟

linux系统 计算机硬件:控制器 运算器 存储器单元 输入 输出 计算机操作系统(管理计算机资源 提供用户接口 Power up--BIOS--自检--Bootloader--os --UEFI--Bootloader--os

版本:内核版本(作者本人维护) 发行版本(内核+常用软件 Debian系列--Debian和Ubuntu Red Hat系列--Centos,Fedoras和RHEL Slackkware系列--SUSE 国产系列--龙芯 鲲鹏 飞腾

领域:it服务器 嵌入式和智能设备 个人办公桌面 学术研究和软件研发

结构: 基本组成:内核 shell 文件系统 应用程序 体系结构:用户空间(应用程序)和内核空间(系统调用 内核 平台架构相关代码)

进程管理: 进程是正在执行的一个程序或命令 进程有自己的地址空间,占用一定的系统资源 一个CPU核同一时间只能运行一个进程 进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一标识

多程序运行:进程调度(按某种策略或规则选择进程占用CPU进行运行的过程) 原则:一个cpu核只能运行一个进程 每个进程有近乎相等的执行时间 对于逻辑CPU而言进程调度使用轮询的方式执行,但轮询完成则回到第一个进程反复 进程执行消耗时间和进程量成正比

文件系统:操作系统中负责管理持久数据的子系统,负责把用户的文件存在磁盘硬件中,持久化的保存文件 文件系统是采用树状的目录结构,最上层是/(根)文件 实现对用户提供统一的接口:虚拟文件系统(VFS)对应用层提供一个标准的文件操作接口,对文件系统提供一个标准的文件接入接口 文件基本操作: ls:查看文件夹下内容 mkdir demo:创建文件夹 mv demo /home:移动demo文件夹到/home rm -r demo:删除demo文件夹 touch file.txt:创建空文件 cp file.txt file_bak.txt:复制文件

用户权限: 用户账户:普通用户账号:在系统中进行普通作业 超级用户账号:在系统中对普通用户和整个系统进行管理 组账户:标准组:可以容纳多个用户 私有组:只有用户自己 查看用户信息: w查询当前登陆用户信息 groups:查看当前用户所属的组 id xxx:查看用户的uid信息

文件权限: 所有者:文件的所有者 所在组:文件所有者所在的组 其他人:除所有者即所在组之外的人 文件权限:读(R)写(W)执行(X) d rwx r-x r-x 文件类型 所有者 所在组 其他人

软件包的管理: 软件包:通常指一个应用程序 管理: 底层工具:处理安装和删除软件包文件DPKG RPM 上层工具:数据搜索和依赖解析APT YUM DNF

Debian APT常见命令: 列出所有可更新的软件清单命令: apt update 安装指定的软件命令: apt install <package_ name> 安装多个软件包: apt install <package_ 1> <package 2> 更新指定的软件命令: apt update <package name> 删除软件包命令: apt remove <package_ name> 查找软件包命令: apt search 列出所有已安装的包: apt list --installed

shell编程

shell是命令行解释器和编程语言 语法和命令 1.变量 自定义变量(默认字符串变量)(=) 环境变量(export declare -x) 系统环境变量(启动加载) 声明为整型:let x=y或者declare -i x=y declare选项变量:-(给变量设定类型属性)+(取消变量的类型属性)-a(将变量声明为数组)-i(将变量声明为整数型)-x(将变量声明为环境变量)-r(将变量声明为只读变量)-p(显示指定变量的被声明的类型)

2.系统环境变量:前加美金的符号 0:当前shell名称或脚本名称 #:传入脚本的参数数量 *:传入脚本的所以参数 ?:上条命令执行的状态码 PS1:命令提示符 HOME:用户主文件夹 PATH:全局命令的搜索路径 3.运算符 ”“:部分引用 ‘‘:完全引用,原样输出 反引号:执行命令 (())算数运算 ()执行命令 ||:a执行完且返回值非0 则继续执行b &&:a执行完返回值为0 则继续执行b :a和b串行执行 &:让命令在后台运行 可与nohup一起使用 3.管道 |作用为将前一个命令的结果传递给后面的命令 要求:右侧命令必须接受标准输入 比如grap ls等不能直接使用 可以使用xargs预处理 注意:管道命令仅仅处理stdout 对于stderr会予以忽略 可以苏勇set -o pipefail设置shell遇到管道错误推出

Linux和shell息息相关,但是shell太难了!!!光是看一个视频无法完全学习到shell脚本的编程,与python做脚本不同,python有大量的信息库,写脚本比shell写脚本简单太多,但是Linux的使用又需要shell的使用,需要自己在其他时间完成shell的学习!!