美文网首页java学习之路
JavaGuide知识点整理——Linux基础知识总结

JavaGuide知识点整理——Linux基础知识总结

作者: 唯有努力不欺人丶 | 来源:发表于2022-09-04 01:05 被阅读0次

    从认识操作系统开始

    操作系统分类

    Windows
    目前最流行的个人桌面操作系统,界面简单易操作,软件生态非常好。
    Unix
    最早的多用户,多任务操作系统。后面崛起的Linux很多方面都参考了Unix
    Linux
    Linux是一套免费使用,开源的类Unix操作系统。Linux存在着许多不同的发行版本,但是它们都使用了Linux内核。
    Mac OS
    苹果自家的操作系统,编程体验和Linux相当,但是界面,软件生态以及用户体验方面都比Linux操作系统更好。

    操作系统的内核(Kernel)

    1. 操作系统的内核是操作系统的核心部分,它负责系统的内存管理,硬件设备管理,文件系统的管理以及应用程序的管理。
    2. 操作系统的内核是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性。

    中央处理器(CPU Central Processing Unit)

    关于CPU简单概括三点:

    1. CPU是一台计算机的运算核心+控制核心,可以称得上是计算机的大脑。
    2. CPU主要包括两个部分:控制器+运算器
    3. CPU的根本任务就是执行命令,对计算机来说最终都是一串由0和1组成的序列

    CPU vs Kernel(内核)

    很多人容易混淆操作系统的内核和中央处理器,我们可以简单从下面两点来区别:

    1. 操作系统的内核属于操作系统层面,而CPU属于硬件。
    2. CPU主要提供运算,处理各种指令的能力。内核主要负责系统管理比如内存管理,它屏蔽了对硬件的操作。
    应用程序,内核,CPU三者关系

    初探Linux

    Linux简介

    • 类Unix系统:Linux是一种自由,开放源码的类似Unix的操作系统
    • Linux本质是Linux内核:严格来讲,Linux这个词本身只是表示Linux内核,单独的Linux内核并不能称为一个可以正常工作的操作系统,所以就有了各种Linux发行版。
    • Linux之父:一个编程领域的传奇人物,他是Linux内核的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师,他还发起了Git这个开源项目,并为主要的开发者。

    常见的Linux发行版本有哪些?

    Linux Torvalds开源的只是Linux内核,我们上面也提到了操作系统内核的作用。一些组织和厂商将Linux内核与各种软件和文档包装起来,并提供系统安装界面和系统配置,设定与管理工具,就构成了Linux的发行版本。
    Linux的发行版可以大体分为两类:

    • 商业公司维护的发行版本,以著名的Red Hat为代表,比较典型的有CentOS
    • 社区组织维护的发行版本,以Debian为代表,比较典型的有Ubuntu,Debian

    Linux文件系统概览

    Linux文件系统简介

    在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡,磁盘驱动器,打印机,输入输出设备,普通文件或是目录都被看做是一个文件。也就是说,Linux系统中有一个重要的概念:一切都是文件。
    其实页是UNIX哲学的一个体现,在UNIX系统中,把一切资源都看作是文件,Linux文件系统也是借鉴UNIX文件系统而来。

    inode介绍

    inode是linux/unix文件系统的基础,那么inode是什么?有什么用?
    硬盘中的最小存储单位是扇区,块(block)由多个扇区组成。文件数据存储在块中,块的最常见的大小是4kb,约为8个连续的扇区组成(每个扇区存储512字节)。一个文件可能会占用多个block,但是一个块只能存放一个文件。
    虽然我们将文件存储在块中,但是我们还需要一个空间来存储文件的元信息,如某个文件被分成几块,每一块在的地址,文件拥有者,创建时间,权限,大小等。这种存储文件元信息的区域就叫inode.译为索引节点:i(index)+node.每个文件都有一个inode,存储文件的元信息。
    可以使用stat命令可以查看文件的inode信息,每个inode都有一个号码,Linux/unix操作系统不使用文件名来区分文件,而是使用inode号码区分不同的文件。
    简单来说,inode就是用来维护某个文件被分成几块,每一块在的地址,文件拥有者,创建时间,权限,大小等信息的。
    总结一下:

    • inode:记录文件的属性信息,可以使用stat命令查看inode信息。
    • block:实际文件的内容,如果一个文件大于一个块时,那么将占用多个block。但是一个块只能存放一个文件(因为数据是由inode指向的,如果多个文件的数据存放在一个块中,就会乱套了)。

    Linux文件类型

    Linux支持很多文件类型。其中非常重要的文件类型有:普通文件,目录文件,链接文件,设备文件,管道文件,Socket套接字文件等。

    • 普通文件:用于存储信息和数据,Linux用户可以根据访问权限对普通我呢见进行查看,更改和删除。比如图片,声音,PDF,text,视频,源代码等。
    • 目录文件(d):目录也是文件的一种,用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名。打开目录实际上就是打开目录文件。
    • 符号链接文件(l):保留了指向文件的地址而不是文件本身。
    • 字符设备(c):用来访问字符设备比如键盘。
    • 设备文件(b):用来访问块设备,比如硬盘,软盘。
    • 管道文件(p):一种特殊类型的文件,用于进程之间的通信。
    • 套接字(s):用于进程间的网络通信,也可以用于本机之间的非网络通信。

    Linux目录树

    所有可操作的计算机资源都存在于目录树这个结构中,对计算资源的访问,可以看做是对这颗目录树的访问。


    Linux目录结构

    常见目录说明:

    • /bin:存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。
    • /etc:存放系统管理和配置文件
    • /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示。
    • /usr:用于存放系统应用程序。
    • /opt:额外安装的可选应用程序包所放置的位置。一般情况下我们可以把tomcat等都安装到这里。
    • /proc:虚拟文件系统目录,是系统内存的映射,可以直接访问这个目录来获取系统信息。
    • /root:超级用户(系统管理员)的主目录。
    • /sbin:存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。比如ifconfig等。
    • /dev:用于存放设备文件。
    • /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂在其他的文件系统。
    • /boot:存放用于系统引导时使用的各种文件
    • /lib:存放着和系统运行相关的库文件。
    • /tmp:用于存放各种临时文件,是公用的临时文件存储点。
    • /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区。比如说各种服务的日志文件等。
    • /lost+found:这个目录平时是空的,系统非正常关机而留下的无家可归的文件就在这里。

    Linux基本命令。

    下面只介绍一些常用的命令,推荐一个linux命令在线速查手册:linux命令在线速查

    目录切换命令

    • cd usr:切换到该目录下usr目录
    • cd .. :切换到上一层目录
    • cd /:切换到系统根目录
    • cd ~:切换到用户主目录
    • cd -:切换到上一个操作所在目录

    目录的操作命令(增删改查)

    • mkdir 目录名称:增加目录
    • ls/ll(ll是 ls -l的缩写。ll命令可以看到该目录下所有的目录和文件的详细信息):查看目录信息
    • find 目录 参数:寻找目录。示例:
      • 列出当前目录及所有子目录下所有文件和文件夹 : find .;
      • 在/home目录下查找以.txt结尾的文件名 : find /home -name ".txt",忽略大小写查找: find /home -iname ".txt";
      • 当前目录以及子目录下查找所有以.txt和.pdf结尾的文件: find . (-name ".txt" -o -name ".pdf" ) 或 find . -name ".txt" -o -name ".pdf"。
    • mv 目录名称 新目录名称:修改目录的名称。注意mv的语法不仅可以对目录进行重命名,也可以对各种文件,压缩包进行重命名操作。
    • mv 目录名称 目录新位置:移动目录的位置---剪切。 注意mv的语法不仅可以对目录进行剪切,也可以对各种文件,压缩包进行重命名剪切。另外mv和cp的结果不同。mv更像是搬家,文件个数未增加,而cp对文件进行复制,文件个数增加了。
    • cp -r 目录名称 目录拷贝的目标位置:拷贝目录 -r 代表递归拷贝。注意cp命令不仅可以拷贝目录,还可以拷贝文件,压缩包等。拷贝文件和压缩包的时候不用-r递归。
    • rm [-rf] 目录:删除目录,注意rm不仅可以删除目录,也可以删除文件和压缩包。

    文件的操作命令

    • touch 文件名称:文件的创建。
    • cat/more/less/tail 文件名称:文件的查看,命令tail -f 文件可以对某个文件进行动态监控,例如tomcat的日志文件会随着程序的运行,日志不断变化。可以使用 tail -f xxx.log监控文件的变化。
    • vim 文件:修改文件的内容,vim编辑器是linux中的强大组件。是vi编辑器的加强版。vim编辑器的命令和快捷方式很多,但是实际开发中使用vim编辑器主要是修改配置文件,下面是一般步骤:
      vim 文件 ->进入文件->命令模式->按i进入编辑模式->编辑文件->按esc进入底行模式->输入 wq/q!(wq代表写入内容并退出,就是保存,q!表示强制退出不保存)

    压缩文件的操作命令

    1. 打包并压缩文件
      linux中打包文件一般是以.tar结尾的。压缩命令一般是.gz结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件后缀名一般是.tar.gz。命令tar -zcvf 打包压缩后的文件名 要打包压缩的文件。 其中:

      • z:调用gzip压缩命令进行压缩
      • c:打包文件
      • v:显示运行过程
      • f:指定文件名
    2. 解压压缩包
      命令tar [-xvf]压缩文件
      其中x代表解压

    Linux的权限命令

    操作系统中每个文件都有特定的权限,所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读,写和执行三组。
    分别对应文件的属主,属组和其他用户。通过这样的机制来限制哪些用户,哪些组可以对特定的文件进行什么样的操作。
    通过ls -l 命令可以查看某个目录下的文件或者目录的权限。


    image.png
    第一列信息解读

    Linux中权限分为以下几种:

    • r:代表权限是可读,r也可以用数字4表示
    • w:代表权限是可写(对于文件是可修改文件的内容,对于目录是可以创建和删除目录下的文件),w也可以用数字2表示
    • x:代表权限是可执行(对于文件是可运行为二进制文件,对于目录是可进入目录),x也可以用数字1表示

    需要注意的是,超级用户可以无视普通用户的权限,即使文件目录权限是000,依旧可以访问。
    在linux系统中每个用户必须属于一个组,不能独立于组外。在linux每个文件有所有者,所在组,其他组的概念。

    • 所有者:一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用ls -ahl命令可以看到文件的所有者,也可以使用chown用户名,文件名来修改文件的所有者。
    • 文件所在组:当某个用户创建一个文件后,这个文件的所在组就是该用户的所在组。用ls -ahl命令可以查看文件的所在组,也可以用chgrp组名 文件名来修改文件所在的组。
    • 其他组:除开文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

    修改文件/目录的权限的命令:chmod
    示例:修改/test下的aaa.txt权限为文件所有者有全部权限,文件所有者所在组有读写权限,其他用户只有读的权限。

    • chmod u=rwx,g=rw,o=r aaa.txt或者chmod 764 aaa.txt
      image.png

    补充一个常用的东西:zookeeper 开启自启如何实现?

    1. 新建一个脚本zookeeper
    2. 为新建的脚本zookeeper添加可执行权限,命令是chmod +x zookeeper
    3. 把zookeeper这个脚本添加到开机启动项里面,命令是 chkconfig --ass zookeeper
    4. 如果想看是否添加成功,命令是 chkconfig --list

    Linux用户管理

    • useradd 选项 用户名:添加用户账号
    • userdel 选项 用户名:删除用户账户
    • usermod 选项 用户名:修改账号
    • passwd 用户名:更新或创建用户密码
    • passwd -s 用户名:显示用户账号密码信息
    • passwd -d 用户名:清除用户密码

    useradd命令用户linux中创建的新的系统用户,useradd可用来建立用户账号,账号建好后,再用passwd设定账号密码,可用userdel删除账号,使用useradd指令所创建的账户,实际上保存在/etc/passwd文本文件中。
    passwd命令用于设置用户的认证信息,包括用户密码,密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

    Linux系统用户组的管理

    每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同linux系统对用户组的规定有所不同。用户组的管理涉及到用户组的添加,删除和修改。组的增加,删除和修改实际上就是对/etc/group文件的更新。

    • groupadd 选项 用户组:增加新用户组
    • groupdel 用户组:删除用户组
    • groupmod 选项 用户组:修改用户组的属性

    其他常用命令

    • pwd:显示当前所在位置
    • sudo + 其他命令:以系统管理者的身份执行命令,也就是说经由sudo所执行的命令就好像是root亲自执行
    • grep 要搜索的字符串 要搜索的文件 --color:搜索命令,--color代表高亮显示
    • ps -ef/ps -aux:这两个命令都是查看当前系统正在运行的进程,两者的区别是展现格式不同。如果想查看特定的进程可以使用这样的格式: ps aux|grep redis (查看包括redis字符串的进程),也可以使用 pgrep redis -a
      注意直接使用ps命令会显示所有进程的状态,通常结合grep命令查看某进程的状态。
    • kill -9 进程的pid:杀死进程
    • ifconfig:查看当前系统的网卡信息
    • ping: 查看与某台机器的连接情况
    • netstat -an:查看当前系统的端口使用情况
    • shutdown:
      • shutdown -h now:现在立刻关机
      • shutdown +5 :五分钟后关机
    • reboot:重开机

    Linux环境变量

    在linux系统中,环境变量是用来定义系统运行环境的一些参数。

    环境变量分类

    按照作用域来分,可以简单的分成

    • 用户级别环境变量/.bashrc、/.bash_profile
    • 系统级别环境变量/etc/bashrc、/etc/environment、/etc/profile、/etc/profile.d

    上述配置文件执行先后顺序为:/etc/enviroment –> /etc/profile –> /etc/profile.d –> ~/.bash_profile –> /etc/bashrc –> ~/.bashrc

    如果要修改系统级别环境变量文件,需要管理员具备对该文件的写入权限。
    建议用户级别环境变量在 ~/.bash_profile中配置,系统级别环境变量在 /etc/profile.d 中配置。

    按照生命周期来分,环境变量可以分为:

    • 永久的:需要修改配置文件,变量永久生效
    • 临时的:用户利用export命令,在当前终端下声明环境变量,关闭shell终端失效。

    读取环境变量

    通过export命令可以输出当前系统定义的所有环境变量
    export -p

    除了export命令之外,env命令也可以列出所有环境变量
    echo命令可以输出指定环境变量的值

    环境变量修改

    通过export命令可以修改指定的环境变量。不过这种方式仅仅对当前shell终端生效,关闭shell终端就会失效。修改完成后立即生效

    export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

    通过vim命令修改环境变量的配置文件,这种方式修改环境变量永久生效

    vim ~/.bash_profile

    如果修改的是系统级别的环境变量则对所有用户生效,如果修改的是用户级别的环境变量则仅仅对当前用户生效,修改完成之后,需要source命令让其生效或者关闭shell终端重新登陆。

    source /etc/profile

    本篇笔记就记到这里,如果稍微帮到你了记得点个喜欢点个关注,也祝大家工作顺顺利利!

    相关文章

      网友评论

        本文标题:JavaGuide知识点整理——Linux基础知识总结

        本文链接:https://www.haomeiwen.com/subject/chgynrtx.html