精华内容
下载资源
问答
  • linux操作系统源码分析,很经典的一部著作,如果想分析Liunx源码很适合!
  • Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.rar
  • Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.pdf
  • Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第2版)Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第2版)
  • Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理
  • Linux内核设计的艺术 图解Linux操作系统架构设计与实现原理.pdf
  • Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理 第2版
  • 《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理 第2版》PDF版本下载
  • Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理
  • Linux内核设计的艺术+图解Linux操作系统架构设计与实现原理
  • Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第二版)经典.pdf Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第二版)经典.pdf Linux内核设计的艺术:图解Linux操作系统架构设计与...
  • linux内核设计的技术,太艺术了,来看看第2版的图解linux操作系统架构设计与实现原理
  • linux内核设计的艺术图解linux操作系统架构设计与实现原理第2版, 完整版, 非预览版!!! 学习操作系统, 研究linux内核不可多得的好书! 图文并茂, 难度适中, 语言流畅! 作者都是大牛!
  • 这里比较详细地对Linux操作系统结构进行了分析,对嵌入式的学习会有一定的帮助!
  • 这个是Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.杨力祥的第2版,pdf文档+全中文注释的内核代码,超全,超经典
  • Linux操作系统基础

    万次阅读 多人点赞 2018-05-27 12:16:53
    Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机 Linux介绍 Linux出现于1991年,是...

    Linux简介

    Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机
    这里写图片描述

    Linux介绍

    Linux出现于1991年,是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成

    Linux特点

    多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界面,出色的速度性能
    开源

    CentOS

    • 主流:目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS
    • 免费:RedHat 和CentOS差别不大,基于Red Hat Linux 提供的可自由使用源代码的企业CentOS是一个级Linux发行版本
    • 更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RedHat 那样需要花钱购买支持服务!

    Linux目录结构

    这里写图片描述

    • bin (binaries)存放二进制可执行文件
    • sbin (super user binaries)存放二进制可执行文件,只有root才能访问
    • etc (etcetera)存放系统配置文件
    • usr (unix shared resources)用于存放共享的系统资源
    • home 存放用户文件的根目录
    • root 超级用户目录
    • dev (devices)用于存放设备文件
    • lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
    • mnt (mount)系统管理员安装临时文件系统的安装点
    • boot 存放用于系统引导时使用的各种文件
    • tmp (temporary)用于存放各种临时文件
    • var (variable)用于存放运行时需要改变数据的文件

    Linux常用命令

    命令格式:命令 -选项 参数

    如:ls  -la  /usr
    
    ls:显示文件和目录列表(list)
    

    常用参数:

    -l		(long)
    -a	(all)         注意隐藏文件、特殊目录.和..   
    -t		(time)
    

    Linux命令的分类

    内部命令:属于Shell解析器的一部分

    cd 切换目录(change directory)
    pwd 显示当前工作目录(print working directory)
    help 帮助
    

    外部命令:独立于Shell解析器之外的文件程序

    ls 显示文件和目录列表(list)
    mkdir 创建目录(make directoriy)
    cp 复制文件或目录(copy)
    

    查看帮助文档

    内部命令:help + 命令(help cd)
    外部命令:man + 命令(man ls)
    

    操作文件或目录常用命令

    pwd 显示当前工作目录(print working directory)
    touch 创建空文件				                    
    mkdir 创建目录(make directoriy)
    -p 父目录不存在情况下先生成父目录 (parents)            
    cp 复制文件或目录(copy)
    -r 递归处理,将指定目录下的文件与子目录一并拷贝(recursive)     
    mv 移动文件或目录、文件或目录改名(move)
    
    rm 删除文件(remove)
    -r 同时删除该目录下的所有文件(recursive)
    -f 强制删除文件或目录(force)
    rmdir 删除空目录(remove directoriy)
    cat显示文本文件内容 (catenate)
    more、less 分页显示文本文件内容
    head、tail查看文本中开头或结尾部分的内容
    head -n  5  a.log 查看a.log文件的前5行
    tail  -F b.log 循环读取(follow)
    
    

    常用命令

    wc 统计文本的行数、字数、字符数(word count)
    -m 统计文本字符数
    -w 统计文本字数
    -l 统计文本行数
    find 在文件系统中查找指定的文件
    find /etc/ -name "aaa"
    grep 在指定的文本文件中查找指定的字符串
    ln 建立链接文件(link)
    -s 对源文件建立符号连接,而非硬连接(symbolic)
    
    top 显示当前系统中耗费资源最多的进程 
    ps 显示瞬间的进程状态
    -e /-A 显示所有进程,环境变量
    -f 全格式
    -a 显示所有用户的所有进程(包括其它用户)
    -u 按用户名和启动时间的顺序来显示进程
    -x 显示无控制终端的进程
    kill 杀死一个进程
    kill -9 pid
    df 显示文件系统磁盘空间的使用情况
    
    du 显示指定的文件(目录)已使用的磁盘空间的总
    -h文件大小以K,M,G为单位显示(human-readable)
    -s只显示各档案大小的总合(summarize)
    free 显示当前内存和交换空间的使用情况 
    netstat 显示网络状态信息
    -a 显示所有连接和监听端口
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -p 显示建立相关链接的程序名
    ifconfig 网卡网络配置详解 
    ping 测试网络的连通性 
    
    
    

    备份压缩命令

    gzip 压缩(解压)文件或目录,压缩文件后缀为gz 
    bzip2 压缩(解压)文件或目录,压缩文件后缀为bz2 
    tar 文件、目录打(解)包
    
    

    gzip命令

    命令格式:gzip [选项] 压缩(解压缩)的文件名
    -d将压缩文件解压(decompress)
    -l显示压缩文件的大小,未压缩文件的大小,压缩比(list)
    -v显示文件名和压缩比(verbose)
    -num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
    
    

    bzip2命令

    命令格式:bzip2 [-cdz] 文档名
    -c将压缩的过程产生的数据输出到屏幕上
    -d解压缩的参数(decompress)
    -z压缩的参数(compress)
    -num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
    

    tar命令

    -c 建立一个压缩文件的参数指令(create)
    -x 解开一个压缩文件的参数指令(extract)
    -z 是否需要用 gzip 压缩
    -j 是否需要用 bzip2 压缩
    -v 压缩的过程中显示文件(verbose)
    -f 使用档名,在 f 之后要立即接档名(file)
    
    

    关机/重启命令

    shutdown系统关机 
    -r 关机后立即重启
    -h 关机后不重新启动
    halt 关机后关闭电源 shutdown -h
    reboot 重新启动 shutdown -r
    

    学习Linux的好习惯

    • 善于查看man page(manual)等帮助文档

    • 利用好Tab键

    • 掌握好一些快捷键

       ctrl + c(停止当前进程)
       ctrl + r(查看命令历史)
       ctrl + l(清屏,与clear命令作用相同)
      
    展开全文
  • Linux 操作系统架构简介

    千次阅读 2013-03-07 22:03:18
    可以说,Linux 是21 世纪初最火的操作系统。注意,我只在这时说它是最“火”的,而不是最“好” 的。最好的定义对于每个人都不一样,为避免产生口水仗,我不在书中对Linux 进行评价。不过我得先 介绍一下Linux 的...

            可以说,Linux 是21 世纪初最火的操作系统。注意,我只在这时说它是最“火”的,而不是最“好”
    的。最好的定义对于每个人都不一样,为避免产生口水仗,我不在书中对Linux 进行评价。不过我得先
    介绍一下Linux 的架构。
            Linux 肯定是一款大内核操作系统,Linus Tovals 和Tanenbaum 的网上争论余音绕梁,相信知道此事
    的读者一定还记得Linus 支持大内核的建议吧。虽然说Linux 是以大内核的方式运行,但编译方式已经吸
    收了Windows 的动态加载模块的特点。也就是说,彼时(80‘s)的大内核和现在说的大内核不完全是一
    个概念。那时候的大内核,不仅运行的时候所有驱动、文件系统、包括本书要讨论的协议栈要运行在内
    核态,而且编译的时候,编译的文件必须同时被编译到一个大的二进制文件中。如今的内核,在编译的
    时候,可以有选择的加入或减去某部分代码,使其编译出来的内核变“小”,而一些驱动程序和模块可以
    在系统起来以后再加载。那么就单纯的那个内核镜像而言,真的还不算“大”,这个时候要说Linux 是大
    还是小还真有点难。

    操作系统内核可能是微内核,也可能是大内核(后者有时称之为宏内核Macrokernel)。按照类似封装
    的形式,这些术语定义如下:
     微内核(Microkernel kernel)――在微内核中,大部分内核都作为独立的进程在特权状态下运行,
    它们通过消息传递进行通讯。在典型情况下,每个概念模块都有一个进程。因此,如果在设计中有一个
    系统调用模块,那么就必然有一个相应的进程来接收系统调用,并和能够执行系统调用的其它进程(或
    模块)通讯以完成所需任务。 在这些设计中,微内核部分经常只不过是一个消息转发站:当系统调用
    模块要给文件系统模块发送消息时,消息直接通过内核转发。这种方式有助于实现模块间的隔离。(某
    些时候,模块也可以直接给其它模块传递消息。)在一些微内核的设计中,更多的功能,如I/O 等,也
    都被封装在内核中了。但是最根本的思想还是要保持微内核尽量小,这样只需要把微内核本身进行移植
    就可以完成将整个内核移植到新的平台上。其它模块都只依赖于微内核或其它模块,并不直接直接依赖
    硬件。 微内核设计的一个优点是在不影响系统其它部分的情况下,用更高效的实现代替现有文件系统
    模块的工作将会更加容易。我们甚至可以在系统运行时将开发出的新系统模块或者需要替换现有模块的
    模块直接而且迅速的加入系统。另外一个优点是不需要的模块将不会被加载到内存中,因此微内核就可
    以更有效的利用内存。
     大内核(Monolithic kernel)――单内核是一个很大的进程。它的内部又可以被分为若干模块(或
    者是层次或其它)。但是在运行的时候,它是一个独立的二进制大映象。其模块间的通讯是通过直接调
    用其它模块中的函数实现的,而不是消息传递。
    单内核的支持者声称微内核的消息传递开销引起了效率的损失。微内核的支持者则认为因此而增加
    的内核设计的灵活性和可维护性可以弥补任何损失。就像Linux 内核是微内核和单一内核的混合产物一
    样。Linux 内核基本上是单一的,但是它并不是一个纯粹的集成内核。为什么Linux 必然是单内核的呢?
    一个方面是历史的原因:在Linus 的观点看来,通过把内核以单一的方式进行组织并在最初始的空间中运
    行是相当容易的事情。这种决策避免了有关消息传递体系结构,计算模块装载方式等方面的相关工作。
    (内核模块系统在随后的几年中又进行了不断地改进。)
    如果Linux 是纯微内核设计,那么向其它体系结构上的移植将会比较容易。实际的情况是,Linux 内
    核的移植虽然不是很简单,但也绝不是不可能的。虽然这比微内核的移植需要更多的代码,但是Linux
    的支持者将会提出,这样的Linux 内核移植版本比微内核更能够有效的利用底层硬件,因而移植过程中
    的额外工作是能够从系统性能的提高上得到补偿的。核移植相对来说比较困难,但没有明显地阻碍程序员

    团体的工作,他们已经热情高涨地把内核成功的移植到了现存的大部分实际系统中,更不用说类似掌上型

    电脑的一些看起来很不实际的目标了。只要Linux的众多特点仍然值得移植,新的移植版本就会不断涌现。
    这种特殊设计的权衡也不是很轻松就可以达到的,单内核的实现策略公然违背了传统的看法,后者
    认为微内核是未来发展的趋势。但是由于单一模式(大部分情况下)在Linux 中运行状态良好,而且内

    核移植相对来说比较困难,但没有明显地阻碍程序员团体的工作,他们已经热情高涨地把内核成功的移
    植到了现存的大部分实际系统中,更不用说类似掌上型电脑的一些看起来很不实际的目标了。只要Linux
    的众多特点仍然值得移植,新的移植版本就会不断涌现。

            这不是自相矛盾吗?有的读者可能会疑惑了。其实,大和小内核之争已经过时了,连Windows 也号
    称过微内核,那么有必要这么认真吗?其实只要记住,除了嵌入式,没有一款商用(包括开源)的操作
    系统是以真正学术上的微内核方式存在。也就是说,所有的商用操作系统都是把驱动、文件系统、协议
    栈等塞入内核之中,原因在于安全和效率。这就不必多说了。

     

    展开全文
  • 英文版的图比中文的清楚多了,大家可以参考 ...阅读本书就如同跟随着操作系统设计者一起去思考,我们会在阅读的过程中发现Linux内核设计的精妙,会发现原来处处都“暗藏玄机”,哪怕是一行很短的代码。
  • linux内核0.11版本,该文档有完整的书签!
  • 为了做到真正易于理解,创新性地使用了图解的方式,精心绘制了300余幅分辨率600dpi的时序图,图中表现的运行时结构和状态与操作系统实际运行时的真实状态完全吻合;为了提高阅读体验,本书采用了双色印刷,以便于...
  • 本书在众多关于Linux内核的书中独树一帜,它在世界范围内首次提出并阐述了操作系统设计的核心指导思想主奴机制,这是所有操作系统研究者的一笔宝贵财富。它也是一本能真正引导我们较为容易地、极为透彻地理解Linux...
  • Linux操作系统

    千次阅读 2020-06-28 13:16:42
    文章目录Linux 操作系统Linux操作系统简介Linux 操作系统结构文件系统结构主要目录功能绝对路径和相对路径环境变量编译器使用vi使用Vi常用命令shell命令基础命令压缩管理软件管理用户管理ssh服务Linux下的SSH服务ssh...

    Linux 操作系统

    Linux操作系统简介

    1. 什么是操作系统

      操作系统(OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

    2. Linux简介

      ​ Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。

      ​ Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux操作系统不仅仅是被网络运维人员当作服务器使用。

      ​ Linux与其他操作系统相比 ,具有开放源码、没有版权、技术社区用户多等特点 ,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBq9e9aG-1593321377177)(img/linus.png)]

    3. Linux特点

      • 一切都是文件
      • Linux是一款免费的操作系统
      • Linux支持多用户,多任务
      • 支持多种平台
      • 具有非常强大的网络功能
      • 简化开发过程,较强的移植性
    4. 发行版本

      严格的来讲,Linux 只是一个系统内核,即计算机软件与硬件通讯之间的平台。一些组织或厂家将 Linux 内核与GNU软件(系统软件和工具)整合起来,并提供一些安装界面和系统设定与管理工具,这样就构成了一个发型套件,目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

    5. Linux应用领域

    • Linux 服务器 : 目前Linux服务器是当前最广泛的应用。
    • 桌面应用:新版本的Linux系统特别在桌面应用方面进行了改进,达到相当的水平
    • 嵌入式系统:由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活而且具有极大的伸缩性,因此,在嵌入式应用的领域里LINUX操作系统都有很广阔的应用市场。

    Linux 操作系统结构

    一个典型的Linux操作系统组成为:Linux内核,文件系统,命令行shell,图形界面和桌面环境,并包各种工具和应用软件。

    • Linux内核: Linux操作系统的核心代码,是Linux系统的最底层,提供了系统的核心功能并允许进程以一种有序的方式访问硬件。
    • 文件系统:通常指称管理磁盘数据的系统,可将数据以目录或文件的型式存储。每个文件系统都有自己的特殊格式与功能
    • shell命令:Shell是一个命令行解释器,它使得用户能够与操作系统进行交互,负责接收用户命令,然后调用相应的应用程序,并根据用户输入的指令来反馈给用户指定的信息。
    • 应用软件:包含桌面系统和基础的软件操作工具等。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QEXcofKd-1593321377178)(img/linux.jpg)]

    文件系统结构

    在任何一个操作系统中,文件系统都是其重要的组件,用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。Linux同样具备完善的文件系统。Linux的文件组织模式犹如一颗倒置的树,所有存储设备作为这颗树的一个子目录。将根(/)作为整个文件系统的唯一起点,其他所有目录都从该点出发。

    • linux下的目录结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47uJcXgB-1593321377179)(img/linux_fs.jpg)]

    主要目录功能

    1. /bin目录

    ​ /bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序(bin是binary----二进制的简称),多是系统中重要的系统文件。

    1. /sbin目录

    ​ /sbin目录类似/bin,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。

    1. /etc目录

    ​ /etc目录存放着各种系统配置文件,其中包括了用户信息文件/etc/ passwd,系统初始化文件/etc/rc等。linux正是因为这些文件才得以正常地运行。

    1. /root目录

    ​ /root 目录是超级用户的目录。

    1. /lib目录

    ​ /lib目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。

    1. /dev目录

    ​ /dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样。

    1. /usr文件系统

    ​ /usr 是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。本地安装的程序和其他东西在/usr/local 下,因为这样可以在升级新版系统或新发行版时无须重新安装全部程序。

    1. /var文件系统

    ​ /var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。

    1. /home

    普通用户的默认目录,在该目录下,每个用户拥有一个以用户名命名的文件夹。

    绝对路径和相对路径

    绝对路径和相对路径都是在Linux中用来描述一个文件位置的描述方法

    绝对路径:指文件在文件系统中以根目录为起始点的准确位置描述。例如“/usr/bin/gnect”就是绝对路径。

    相对路径:指相对于用户当前位置为起始点,对一个文件位置的逐层描述。例如,用户处在usr目录中时,只需要“games/gnect”就可确定这个文件。在相对路径描述时 . 表示当前目录, … 表示上一级目录。

    环境变量

    环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如系统目录位置等。如果将一个目录设置为环境变量目录,那么这个目录下的文件在任何目录下都可以查找到。

    临时设置环境变量: export PATH="$PATH:/your_dir_path"

    永久设置环境变量:修改etc下的profile文件,输入vi /etc/profile,将上述语句添加进去

    编译器使用

    vi使用

    Vi是一个著名的功能强大的文本编辑器,它是Linux中最基本的编辑器,虽然不像图形界面编辑器那样美观,没有使用鼠标那样方便。但vi编辑器在系统管理、服务器配置工作中永远都是无可替代的。

    插入模式: 用来输入文本内容,在这种模式下摁 esc 键进入命令模式

    命令模式:命令操作,命令模式又包含底行命令,即在vi底部命令行输入命令。在命令模式下键入 ‘:’ 即进入底行命令输入

    Vi常用命令

    操作命令

    • i 在当前字符的左边插入
    • o 在当前行下面插入一个新行
    • h 向前移动一个字符
    • j 向上移动一行
    • k 向下移动一行
    • l 向后移动一个字符
    • b 移动到当前单词的开始
    • e 移动到当前单词的结尾
    • w 移动到下一个单词
    • 0:光标移动到行首
    • $:光标移动到行末
    • G : 光标移动到文件结尾
    • gg : 光标移动到文件开头
    • yy 复制当前一行
    • dd 剪切当前一行
    • p 粘贴内容到游标之后
    • P 将剪贴板中的内容粘贴在光标前
    • x 删除光标所在字符
    • r 修改光标所在字符,r后接着要修正的字符
    • R 进入取代状态,新增资料会覆改原先资料, 直到按ESC回到指令模式下为止
    • s 删除光标所在字符,并进入输入模式
    • S 删除光标所在的行,并进入输入模式
    • cw 删除光标所在的后一单词进入插入模式
    • cb 删除光标所在的前一单词进入插入模式
    • c$ 删除自光标位置至行尾的所有字符,进入插入模式
    • c0 删除自光标位置至行尾的所有字符,进入插入模式
    • cc 删除当前行进入插入模式
    • u 撤销操作
    • ctrl-r 反撤销

    底行命令

    • :n 跳转到底n行
    • :w 保存
    • :w filename 存入文件filename 中
    • :w! filename 强制性存入文件filename 中
    • :q 退出
    • :q! 强行退出
    • :set nu 显示行号
    • /word 查找内容
    • :%s/hello/nihao/g 将所有的hello 替换为nihao
    • :5,8s/hello/nihao/g 将5-8行的hello 替换为nihao

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cDJXeFSH-1593321377179)(img/vi.png)]

    shell命令

    我们在Linux终端命令行下输入的命令称为shell命令,是通过shell解释器解释后由系统执行。shell解释器也是一代一代进化的,我们现在所使用的shell是 bash shell。 在服务器系统操作维护中,shell命令起到了很重要的作用,因为服务器操作往往没有图形界面,或者通过远程命令控制完成,这时候shell命令可以帮助我们实现很多功能。

    shell命令基本格式有三部分,每部分之间有空格,选项与选项,参数与参数之间也有空格。(多个选项可以写在一起):

    命令 [选项] [参数]

    基础命令

    作用命令及常用选项
    关闭重启系统shutdown
    临时管理员权限sudo
    帮助说明man
    退出终端exit
    清空屏幕clear
    查看文件绝对路径pwd
    切换工作目录cd
    查看文件ls , ls -l , ls -a
    打印内容echo
    创建目录mkdir -p
    删除目录rmdir
    创建文件touch
    复制文件cp -r
    移动文件mv
    删除文件rm -rf
    查找文件find
    查看文件信息file
    查看文件内容cat
    查看文件前 n 行head
    查看文件后n行tail
    对比文件差异diff
    查询文件内容信息wc
    查找文件里符合条件的字符串grep
    修改文件权限chmod
    创建链接文件ln , ln -s
    显示当前时间date
    查看磁盘使用情况df
    显示当前用户whoami
    查找服务程序位置witch
    查找命令文件及关联目录whereis
    • shutdown : 默认情况为1分钟后关机, +n 表示n分钟后关机,在这个过程中shutdown -c 可以取消。shutdown -h now表示立即关机
    • sudo:在命令前书写,表示已以管理员权限运行这个命令。
    • man:使用man命令可以找到特定的联机帮助页,并提供简短的命令说明。
    • exit : 关闭一个终端,通过ctrl+alt +t ,shift+ctrl + t , shift+ctrl+n 都可以快速打开一个终端
    • clear:等同于ctrl-l,清空屏幕
    • pwd:pwd命令用于显示用户在文件系统中的当前位置。
    • cd:用于改变工作目录,参数为绝对路径或者相对路径。
    • ls : 查看目录下的文件列表 -l 展示详细信息,-a展示隐藏文件(Linux下 . 开头的为隐藏文件)
    d    rwx r-x r-x    2    linux    linux      4096         Sep 22  2012       Desktop
    
    各项含义分别是: 文件类型,文件的权限,文件的链接数,文件的所有者,文件所在组,文件的大小,文件的更新时间,文件名
    
    • echo :标准输出一段文字在显示器上,-n表示输出后不换行

      输入/输出重定向是改变Shell命令或程序默认的标准输入/输出目标,重新定向到新的目标。
      
      重定向符含义实例
      > file将file文件重定向为输出源,新建模式echo “hello world” > out.txt,将执行结果,写到out.txt文件中,若有同名文件将被删除
      >> file将file文件重定向为输出源,追加模式ls /usr >> Lsoutput.txt,将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后
      < file将file文件重定向为输入源wc < file1,将file1中的内容作为输入传给wc命令
    • mkdir : 创建一个目录,-p用户创建多层目录

    • rmdir : 删除一个空目录

    • touch : 创建一个文件

    • cp : 复制文件/文件另存, -r 可以复制文件目录

    • mv: 移动文件/文件重命名

    • rm : 删除文件,-rf 用于删除目录

    当需要用命令处理一组文件,例如file1.txt、file2.txt、file3.txt……,用户不必一一输入文件名,可以使用Shell通配符。
    
    通配符含义实例
    星号(*)匹配任意长度的字符串用file_*.txt,匹配file_wang.txt、file_Lee.txt、file3_Liu.txt
    问号(?)匹配一个长度的字符用flie_?.txt,匹配file_1.txt、file1_2.txt、file_3.txt
    方括号([…])匹配其中指定的一个字符用file_[otr].txt,匹配file_o.txt、file_r.txt和file_t.txt
    方括号([ - ])匹配指定的一个字符范围用file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt
    方括号([^…]除了其中指定的字符,均可匹配用file_[^otr].txt,除了file_o.txt、file_r.txt和file_t.txt的其他文件
    • find : 在一个目录下查找文件 find path -name 按照名字查找 -type 按照类型查找

    • file : 查看一个文件的属性类型

    • cat : 查看一个文件内容

    • head : head n file 用来查看一个 文件前n行

    • tail : tail n file 用来查看一个文件的后n行

    • wc : 查看文件内容信息, -c 表示查看多少字符,-l查看多少行,-w 查看多少单词

    • grep : 用于查找内容包含指定的范本样式的文件, grep 指令会把含有范本样式的那一行显示出来。若不指定任何文件名称,则 grep 指令会从标准输入中读取数据。-n 用于显示行号,-i忽略大小写

      管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。
      
      ls | grep 'test'
      
    • chmod : chmod [权限声明] [file] 修改一个文件权限

      u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
      + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
      r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
      
      也可以用三位8进制表达权限
      
    • ln : ln [源文件] [目标文件] 创建链接,-s表示创建软链接,不加表示硬链接。硬链接想相当于副本,源文件名改变也不会影响链接,源文件删除则链接断开。软链接相当于快捷方式,源文件改变则链接断开,源文件删除重新创建后链接可以恢复。

    • date : 显示时间

    • df : 显示目前在Linux系统上的文件系统的磁盘使用情况统计,其中-T显示文件系统类型 ext4的为磁盘,其他的为虚拟文件。-h以M为单位显示

    • whoami : 显示当前用户

    • which : 查找一个程序位置

    • whereis : 查找一个命令文件及其关联目录

    压缩管理

    归档和压缩可以帮助我们很好的整理文件,在Linux系统下支持多种压缩格式。其中gzip是Linux中最流行的压缩工具,具有很好的移植性,可在很多不同架构的系统中使用。bzip2在性能上优于gzip,提供了最大限度的压缩比率。如果用户需要经常在Linux和微软Windows间交换文件,建议使用zip。

    作用命令及常用选项
    压缩解压zip格式zip -r, unzip
    压缩解压gz格式gzip, gunzup
    压缩解压bz2格式bzip2,bunzip2
    归档压缩解压文件tar
    • zip : 将文件压缩为zip格式

      • zip test.zip filelist

    • unzip : 将zip格式文件解压

      • unzip test.zip

    • gzip : 将文件压缩为gz格式

      • gzip file

    • gunzip :将gz文件解压

      • gunzip file.gz

    • bzip2 : 将文件压缩为bz2格式

      • bzip2 file

    • bunzip2 : 将bz2 文件解压

      • bunzip2 file.bz2

    • tar : 主要用于将若干文件或目录合并为一个文件,以便备份和压缩。-cjf 用于压缩bz2格式文件,-czf用于压缩gz格式文件,-xvf用于解压文件

      选项描述
      -t显示归档文件中的内容
      -x释放归档文件
      -u更新归档文件
      -c创建一个新的归档文件
      -v显示归档和释放的过程信息
      -f用户指定归档文件的文件名,否则使用默认名称
      -j由tar生成归档,然后由bzip2压缩
      -z由tar生成归档,然后由gzip压缩

      tar -czf file.tar.gz file1 file2

      tar -xvf file.tar.gz

    软件管理

    Linux下安装的软件包是 deb格式软件包。Deb软件包将二进制应用程序、配置文档、帮助页面都整合在一个文件中,便于传递、安装、升级和备份。dpkg是最早的Deb包管理工具,使用dpkg可以实现软件包的安装、编译、卸载、查询,以及应用程序打包等功能。但是由于当时Linux系统规模和Internet网络条件的限制,没有考虑到操作系统中软件包存在如此复杂的依赖关系。因而,为了解决软件包依赖性问题和获取问题,就出现了APT工具。

    作用命令
    本地包安装dpkg -i
    本地安装包卸载dpkg -r
    本地包状态查看dpkg -s
    本地包卸载并清除记录dpkg -P
    升级软件包apt-get update
    安装软件apt-get install
    卸载软件apt-get remove --purge
    下载源码包apt-get source
    删除缓存的软件安装包apt-get clean

    用户管理

    Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

    实现用户账号的管理,要完成的工作主要有如下几个方面:

    • 用户账号的添加、删除与修改。
    • 用户口令的管理。
    • 用户组的管理。
    作用命令及常用选项
    增加用户adduser
    设置用户密码passwd
    设置用户权限usermod
    删除用户deluser
    删除用户组delgroup
    修改文件归属chown
    • adduser : 增加一个用户,–home 生产主目录 --ingroup选择用户组名称。默认组名和用户名相同
    • passwd : 修改一个用户的密码
    • usermod: 修改用户权限,如密码或则所属的组等
    • deluser : 删除一个用户 --remove-home 表示同时删除用户主目录
    • delgroup : 删除一个用户组
    • chown : 修改文件的所属用户
    添加用户后为保证用户有sudo 权限,需修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,假设aid为用户名,如下所示:
    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    aid ALL=(ALL) ALL
    
    通过sudo vipw命令可以查看用户信息,在信息列表中绝大多数为虚拟用户。当添加一个用户时该文件会自动修改,如果删除一个用户则需要自己修改这个文件用户才彻底删除
    

    ssh服务

    ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。在数据传输方面有很多应用。

    Linux下的SSH服务

    在Linux下SSH服务端是一个在后台运行的程序,响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理。

    • 安装 : sudo apt-get install openssh-server

    • 查看ssh服务状态 : ps -e|grep ssh

    • 启动和关闭 :

      sudo service ssh start/restart/stop
      /etc/init.d/ssh start/restart/stop

    ssh命令

    ssh登录远程主机

    ssh [-p port] username@ip
    退出: exit 或 ctrl-D

    scp命令

    scp命令可以用来通过安全、加密的连接在机器间传输文件。

    把本地文件传输给远程系统:
    scp localfile username@tohostname:/newfilename

    把远程文件传输给本地系统:
    scp username@tohostname:/remotefile /localfile

    ssh秘钥

    每次登录远程主机都需要输入密码是很不便捷的,如果要加速这一步骤,可以利用密钥对进行连接,主要思路是:生成一对公钥私钥,私钥在local主机上,公钥在远程服务器上,每次建立ssh连接自动检查密钥对是否匹配。

    生产ssh秘钥步骤

    1. 生产秘钥对 : ssh-keygen 执行以后会在主目录下生成一个.ssh文件夹,其中包含私钥文件id_rsa和公钥文件id_rsa.pub。
    2. 在服务器主机上将id_rsa.pub文件的内容附加~/.ssh/authorized_keys文件中,并修改器权限。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OaotnFXY-1593321377181)(img/ssh.png)]

    shell脚本介绍

    shell在Linux系统下也是脚本语言,和python一样属于解释型语言,在Linux运维和自动化处理方面有很多应用。下面简单介绍下shell脚本。

    其实shell脚本的本质是一系列命令的有序集合,创建shell脚本的过程主要分三步:

    • 创建 .sh文件,写入若干行shell命令或者操作系统命令
    • 使用chmod修改可执行权限
    • 直接在命令行调用执行

    当然shell脚本语法中也有变量,语句等内容,这里不一一介绍。

    展开全文
  • Linux操作系统基础(完结)

    万次阅读 多人点赞 2016-03-09 21:00:45
    一、Linux操作系统概述 二、Linux操作系统安装 三、Linux文件系统及文件基础 四、Linux操作系统命令使用基础 五、Linux应用程序的安装与卸载基础 五、用户及进程 六、相关信息查询 七、网络配置 八、Linux...

    #摘要
    一、Linux操作系统概述
    二、Linux操作系统安装
    三、Linux文件系统及文件基础
    四、Linux操作系统命令使用基础
    五、Linux应用程序的安装与卸载基础
    五、用户及进程
    六、相关信息查询
    七、网络配置
    八、Linux应用程序的安装与卸载基础

    #一、Linux操作系统概述

    ##1、发展
    1991 Linus Linux 0.0.1版,代码为8K行。现在最新版本为4.1.4。Linux加入了GNU,整体基于GPL协议,允许开源、分享传播、修改。
    ##2、组成
    ###(1)keanel–内核:
    核心程序,用于管理硬件设备、系统的线程进程、内存、交换空间、文件系统、精灵进程(守护进程)等。主要实现系统程序与硬件之间的控制管理功能。
    ###(2)Shell:
    包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows的CMD。
    通过Shell将输入的命令与内核通讯,好让内核可以控制硬件开正确无

    展开全文
  • " 我先说说我对计算机水平的看法。计算机业内真正脚踏实地走过来的,都明白,计算机的水平...4、内存运行时结构。5、较大规模功能的把握,如:文件系统。6、在未知领域,前途朦胧的状态下,提出新方案、试错、修正、再

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 710,289
精华内容 284,115
关键字:

linux操作系统架构

linux 订阅