• 01Linux基础


    附件:day26–linux入门.pdf

    Linux是 基于Unix 的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。 (程序基本上在Linux上发布

    Linux系统的应用非常广泛,不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,比如手机(苹果就是基于Linux, Android 最底层是Linux)、平板电脑、路由器等。

    Linux基础

    unix:

    unix是一个 多用户,多任务 的操作系统 ,收费 的操作系统.(当时比Windows更小,更安全(win也收钱))

    linux:

    • Linux根据 市场需求(谁用) 不同,两个方向:
      • 图形化界面版 :注重用户体验,类似window操作系统,但目前成熟度不够 ;
      • 服务器版 :没有好看的界面,是以在控制台窗口中输入命令操作系统的,类似 于DOS,是我们架设服务器的最佳选择(性能高一点);
    • Linux根据 原生程度 ,又分为两种:
      • 内核版本 :是指在Linus领导下的内核小组开发维护的系统内核的版本号 ;(免费)
      • 发行版本 :是一些组织和公司根据自己发行版的不同而自定的 (类似盗版,不一定免费);
        (windows也有发行版了,但是不合法)
    • Linux 发行版本 不同,又可以分为n多种:

    在这里插入图片描述

    其中:

    • ubuntu:图形界面好一点(基本没用的);
    • centos :开源的免费的os( 服务器版用的多, 开源 :安全,常用)
    • redhat:
    • 中标麒麟:
    • 红旗Linux:收费(倒闭了)

    安装Linux

    安装虚拟机

    • 虚拟机: 就是一台电脑
      通过虚拟机软件可以在自己的电脑再安装几个电脑
    • 常见的虚拟机软件:
      • VmWare :(威睿公司)功能强大,收费产品
      • virtualBox : oracle公司( 免费的, 有的电脑不能用)
    • Linux 系统的应用:
      • 服务器系统:Web 应用服务器、数据库服务器、 接口服务器、 DNS 、 FTP 等等;
      • 嵌入式系统:路由器、防火墙、手机、 PDA 、 IP 分享器、交换器、家电用品的微电脑控制器等等,
      • 高性能运算、计算密集型应用:Linux 有强大的运算能力。
      • 桌面应用系统
      • 移动手持系统

    linux的目录结构

    在这里插入图片描述

    • bin :存放二进制可执行文件(mv,cp等命令文件);
    • sbin :存放二进制可执行文件,只有root才能访问;
    • etc :存放系统配置文件 ;( 在etc下有profile文件时配置环境变量
    • usr(可以放软件,一般放到local文件夹中) :用于存放共享的系统资源;( 存放共享的系统资源,一般都把软件/文件放到usr中
    • home :存放用户的根目录:
      • 每个用户的根目录的存放位置;,在home下创建每个用户的根目录
      • 例如:一个用户tom,在home就会存在tom目录;
    • sbin:超级用户,管理员管理程序
    • root :超级用户目录;(root的home)
    • dev :用于存放设备文件;
    • lib :存放跟文件系统中的程序运行所需要的动态连接共享库及内核模块(类似Windows的DLL文件,几乎所有的应用程序都需要用这些共享库);
    • mnt :系统管理员安装临时问价系统的安装点;系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
    • boot :存放用于系统引导时使用的各种文件;
    • tmp :用于存放各种临时文件;
    • var :用于存放运行时需要改变数据的文件;
    • opt: 一般放安装包
    • lost+found:一般是空的,系统非法关机之后,存放文件
    • boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
    • 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件- – proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
    • srv:service缩写,该目录存放一些服务启动之后需要提取的数据。
    • sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统
    • media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
    • selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件(类似360)。

    linux的命令

    基础命令

    登录:
    • login 后输入root,回车 123456(密码,不会显示)
      在这里插入图片描述

    登录成功

    在这里插入图片描述
    ,这里的~就代表root

    查看帮助:
    • man 命令 : 进入命令 比如man cd
    • 空格: 翻页
    • 退出帮助目录: q
    • 清空屏幕Ctrl+l 或输入clear

    目录操作命令

    显示所在目录:

    pwd :显示所在文件层次

    切换目录:cd
    • cd 目录 :进入文件夹
    • cd 目录/目录 :进入 多层 文件夹
    • cd /目录 :进入根目录下的目录中
    • cd .. (或 cd ../) :上一级目录(有空格)
    • cd / :根目录
    • cd ./ :当前目录;
    • cd ~ :回家(回到home中用户目录(root用户会进入root))
      默认在root目录中,先 cd / 到根目录,再进其他目录
    • cd - :相当于返回键(返回上一个目录)
    创建目录
    • mkdir 创建
    • mkdir 目录名 :创建一层
      mkdir /test/ss 在根目录/test目录下创建ss目录(/test目录必须之前存在)
    • mkdir -p a/b/c :创建多层目录 a/b/c (用-p)
    删除目录

    rmdir 删除

    • rmdir 目录名 :只能删除 一个空目录(只能删除一级 ,必须是空的
    • rm 目录: 只能删除 一个空目录
    • rm -r 目录 :删除目录(同时删除子文件,每删除一个文件都要询问)
    • rm -rf 目录 : 删除目录(** 强制删除 **,不询问)

    示例:删除/usr下的newTest,进入/usr下使用rm -r newTest
    在这里插入图片描述

    示例:删除/test下的newTest而不需要询问强制删除,在/test下使用rm -rf newTest

    在这里插入图片描述

    注意:rm不仅可以删除目录,也可以删除其他文件或压缩包

    展示目录下文件列表 (以后使用 ll 即可)
    • ls:展示的能看见的 文件(和目录)的名称
    • ls -a: 展示 所有 的文件的名称
      文件前面有 “.” 代表的是 隐藏 文件
    • ls -l: 显示文件的 详细信息
      简写的方式 : **ll**(效果与ls -l一致)

    在这里插入图片描述

    • 开头类型: -代表文件,d代表目录(文件夹)
    • 9位 :权限
    • 4002等数字:文件大小
    • 最后:文件名称
    • ll -h : 友好的显示
      在这里插入图片描述

    大小显示为k;

    浏览文件(查看具体内容)
    • cat:显示文件的所有内容
      cat 文件名 (按tab自动补全文件名)
      缺点: 内容太长时,只显示最后的内容
    • more: 分页显示
      空格: 下一页
      回车 :下一行
      q:退出查看
      缺点: 翻页后不能看前方内容
    • less: 分页显示
      可以通过PgUp PgDn 翻页查看
      按q退出
    • **tail**
      查看一个文件的后面的内容
      • tail -显示后面n行 文件名
      • tail -f 文件名 : 动态的查看
        例如:
    tail -f catalina.xxx.log
    
    • 1
    • Ctrl+c: 退出查看;
    查找目录
    • find 目录 参数
      示例:查找/root下的与test相关的目录(文件) find /root -name '*test*'
      *代表模糊查找
    修改目录的名称

    mv 目录名称 新目录名称

    示例:

    test目录下有一个oldTest目录,改名为newTest
    mv oldTest newTest
    
    • 1
    • 2

    注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作

    移动目录的位置—剪切

    mv 目录名称 目录的新位置

    示例:

    在test下将newTest目录剪切到 /usr下面,
    mv newTest /usr
    
    • 1
    • 2
    拷贝目录

    cp -r 目录名称 目录拷贝的目标位置 -----r代表递归拷贝 (子文件同时拷贝)

    示例:

    将/usr下的newTest拷贝到根目录下的test中,
    cp -r /usr/newTest /test
    
    • 1
    • 2

    注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等, 拷贝文件和压缩包时不 用写-r递归

    文件的操作

    创建 一个文件
    • touch 文件名:创建一个空白的文件

    示例:

    在 test目录下创建一个空文件
    touch aaa.txt
    
    • 1
    • 2
    复制 文件
    • cp 源文件 目录/新文件名

    例如:

    cp 1.txt 2.txt   #在同一个文件夹下,复制,名字 2.txt
    cp 1.txt 1/1.txt    # 复制到下一级文件夹1中, 名字1 .txt
    
    • 1
    • 2
    移动 文件(重命名)mv
    • mv 文件 目录/新文件名
    • mv 文件名 新文件名
    删除 文件 rm
    • rm 文件名 : 带询问删除 文件
    • rm -f 文件名: 不带询问删除 ----直接删除;
    • **rm -r 目录 **: 带询问的递归删除:删除 文件夹
    • ** rm -rf 目录**: 不带询问的递归删除(谨慎使用)
    • ** rm -rf** * : 删除所有目录;
    • **rm -rf /_ _ : 自杀(不要用);
    查看文件内容 :
    • cat 文件: 只能显示 最后一屏 内容
      -more 文件 : 可以显示 百分比回车可以向下一行,** 空格**可以向下一页,q可以退出查看
      在这里插入图片描述

    • less 文件: 查看/etc/sudo.conf文件,可以使用 键盘上的PgUp和PgDn向上和向下翻页 , q结束查看

    • tail -数字n 文件: 查看文件后n行, Ctrl+C结束

    tail -10 sudo.conf   # 查看/etc/sudo.conf文件的 后10行 ,
    tail -f catalina-2016-11-11.log #监控文件的变化    动态变化
    
    • 1
    • 2

    注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化

    修改文件的内容vim,vi

    vim 文件

    示例:编辑/test下的aaa.txt文件,使用vim aaa.txt

    点击键盘 i/a/o(一般用i) 进入编辑模式,可以 编辑文件

    • i:插入模式 :在后方插入
    • 退出编辑 模式:按下 Esc ,退回命令模式;
    • ** 保存** ::wq保存并退出;
    • 退出,不保存 : :q!
    打包/解压(文件/目录)tar
    • tar 参数 文件名(打包之后显示文件名) 要打包|解压的文件目录

    常用的组合

    • - cvf :打包一个文件或者目录(不压缩)
    • - zcvf: 打包并压缩一个文件或者目录 压缩的格式:gzip,或 .tar.gz
    • - xvf: 解压或者打开一个tar文件: tar -xvf xxx.tar.gz
    • -c:创建一个新tar文件
    • -v:显示运行过程的信息
    • -f:指定文件名
    • -z:调用gzip压缩命令进行压缩
    • -t:查看压缩文件的内容
    • -x:解开tar文件

    例如:

    • 打包:
    tar -cvf test1.tar ./*   #将当前目录下的 所有文件 打包成 test 1.tar:
    tar -zcvf test2.tar.gz ./*   #将当前目录下的所有文件打包并压缩成test2.tar.gz:
    
    • 1
    • 2
    • 解压:
    tar -xvf test1.tar  # 将test1.tar解压到当前目录
    tar -xvf test1.tar -C b  # 将test1.tar解压到b目录
    
    • 1
    • 2

    其他的常用命令

    搜索: grep :查找文件内部字符串;

    查找符合条件的字符串(★),显示这一行内容,类似ctrl+f

    • grep 字符串 文件 :从文件中搜索字符串
    • grep 字符串 文件 -- color :从文件中搜索字符串,并高亮显示
    • grep 字符串 文件 -- color --B2 : 高亮显示本行和上两行
    • grep 字符串 文件 -- color --A2 :高亮显示本行和下两行

    示例 :

    grep lang anaconda-ks.cfg  在文件中 查找 lang
    grep lang anaconda-ks.cfg -- color 高亮 显示(两道-)
    grep lang anaconda-ks.cfg --color -- A2   高亮 显示3行(本行和下两行)
    grep lang anaconda-ks.cfg --color --B2 (三行,本行和前两行)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    pwd : 显示 当前的工作目录
    wget:下载 资料

    wget 资源路径

    wget http://nginx.org/download/nginx-1.9.12.tar.gz

    && 命令执行控制:
    • 命令之间使用&& 连接,实现逻辑与的功能。
    • 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
    • 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

    示例:

    mkdir test && cd test   创建目录test,进入目录test;
    
    • 1
    查看进程:ps -ef
    • ps -ef: 查看 当前系统中运行的进程
    • ps –ef | grep ssh:查找某一进程
    杀死进程 kill
    • kill pid:杀掉某一进程
    • kill -9 进程pid:杀死进程,强制杀死进程
    清屏 clean或 ctrl+l
    网络管理
    • ifconfig :查看所有的网络设置,查看IP地址;
    • ifconfig 网卡名称 down : 禁用网卡
    • ifconfig 网卡名称 up : 启用网卡

    在这里插入图片描述

    • ping :和window中一样,查看网络是够通畅;

    会一直连接着,要 通过 ctrl+c 取消

    • netstat 查看网络 端口 。 netstat -an
    • netstat -an | grep 3306 查询3306端口占用情况

    在这里插入图片描述

    网卡配置:

    查看网卡配置:cat /etc/sysconfig/network-scripts/ifcfg-etho
    在这里插入图片描述

    若是网卡不能用,可以手动配置------将红色部分写入这个文件中

    管道 |

    作用是 将一个命令的输出用作另一个命令的输入;
    运行命令1,结果用命令2使用

    例如:
    ifconfig | grep 192.168 在ifconfig的结果里查找 192.168字符串

    常用:

    • ps -ef | grep java 查找和java相关的 进程
    • ps -ef | grep 3306 查找和3306相关的信息

    其中:ps -ef 查找现在进程

    系统管理命令

    命令描述
    date显示当前系统时间
    date -s “2014-01-01 10:10:10”设置系统时间
    命令描述
    df显示 磁盘 信息
    df –h友好显示大小在这里插入图片描述
    命令描述
    free显示 内存 状态
    free –m以mb单位显示内存在这里插入图片描述
    命令描述
    top显示管理执行中的程序,类似任务管理器;动态改变;
    命令描述
    du显示目录或文件的大小
    du –h显示当前目录的大小
    命令描述
    who显示目前登入系统的用户信息
    命令描述
    hostname查看当前主机名 (我定义的jsy)
    修改主机名(1)vi /etc/sysconfig/network
    (2)修改其中的HOSTNAME就行;(需要重启起作用)
    命令描述
    uname显示系统信息。(显示 Linux )
    uname -a显示本机详细信息。 依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称在这里插入图片描述

    vi和vim编辑器

    • 编辑普通文件
    • 在Linux下一般使用vi编辑器来编辑文件。 vi既可以查看文件也可以编辑文件。
    • vim是vi的升级版,** 关键字高亮** ;

    vi概述:

    1. 三种模式命令行、插入、底行模式
    2. 进入文件:vi 文件名
    3. 模式切换
    • 切换到 命令行 模式:按 Esc 键;
    • 切换到 插入(b编辑) 模式:按 i 、o、a 键;
      • i:在当前位置前插入
      • I:在当前 行 首插入
      • a:在当前位置后插入
      • A:在当前 行 尾插入
      • o:在当前 行 之后插入一行
      • O:在当前 行 之前插入一行
    • 切换到 底行 模式:按:(冒号)
    1. 退出
    • 退出esc:q
    • 保存并退出esc:wq
    • 不保存退出esc:q!
    1. 删除dd – 快速删除一行;
    2. 替换R – 替换;

    重定向输出>>>

    重定向: 改变输出方式;把本来显示到控制台的内容,写入到文档中,查看文档可见;

    • > 重定向输出, 覆盖 原有内容;
    • >>重定向输出, **追加 **功能;

    示例:

    cat /etc/passwd > a.txt  将输出定向到a.txt中
    cat /etc/passwd >> a.txt  输出并且追加
    ifconfig > ifconfig.txt     ifconfig  查询的内容保存到 ifconfig.txt中,覆盖原有内容,用 cat  ifconfig.txt 可以看到内容;
    
    • 1
    • 2
    • 3

    若是需要管理权限的输出

    sudo sh -c 'echo "hello world" > /opt/1.log'
    
    • 1

    Linux的用户和组

    用户管理:

    添加
    • 用户:
      • useradd 用户名:默认会在 home 目录下给一个用户创建一个目录
      • useradd 用户名 -d /home/目录: 创建一个用户然后在指定该用户的 家 目录(要在home下)
    • 密码:
      passwd 用户名 : 回车输入密码(要确认密码)
      在这里插入图片描述
    删除
    • userdel 用户名 :只是删除用户 但是不删除家home目录
    • userdel -r 用户名 :删除用户连带家目录一起删除
    切换用户:
    • 方法1:ssh -l 用户名 -p 22 主机(IP)

    例如: ssh -l tom -p 22 192.168.17.131 再也yes,输入密码;

    • 方法2:su - 用户名(不需要输密码)
    • 退出 ,返回到root用户: exit

    组管理

    当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组;

    添加,创建组
    • groupadd 组名
    • useradd 用户名 -g 组名:创建用户指定组
    删除
    • groupdel 组名:若组下有用户,删除不了

    id:查询当前用户的组信息;

    查看一个用户的UID和GID

    • id
    • id 用户名
    • id [选项]… [用户名]

    在这里插入图片描述

    su 切换用户

    用法:su [选项]… [-] [用户 [参数]… ]
    示例:

    su - u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)
    su 切换到root用户

    文件

    账户文件
    • /etc/passwd 用户文件
    • /etc/shadow 密码文件
    • /etc/group 组信息文件
    用户文件

    root:x:0:0:root:/root:/bin/bash

    • 账号名称: 在系统中是唯一的
    • 用户密码: 此字段存放加密口令
    • 用户标识码(User ID): 系统内部用它来标示用户
    • 组标识码(Group ID): 系统内部用它来标识用户属性
    • 用户相关信息: 例如用户全名等
    • 用户目录: 用户登录系统后所进入的目录
    • 用户环境: 用户工作的环境
    密码文件

    shadow文件中每条记录用冒号间隔的9个字段组成.

    • 用户名:用户登录到系统时使用的名字,而且是惟一的
    • 口令: 存放加密的口令
    • 最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间
    • 最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令
    • 最小时间间隔: 再次修改口令之间的最小天数
    • 警告时间:从系统开始警告到口令正式失效的天数
    • 不活动时间: 口令过期少天后,该账号被禁用
    • 失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
    • 标志:未使用
    组 文件

    root:x:0:

    • 组名:用户所属组
    • 组口令:一般不用
    • GID:组ID
    • 用户列表:属于该组的所有用户

    Linux的权限命令

    权限是 Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限

    示例:在随意某个目录下 ls -lll
    在这里插入图片描述

    第一列的内容的信息解释如下: 文件的权限:

    在这里插入图片描述

    Linux三种文件类型

    • d :代表目录
    • - :代表文件
    • l :代表链接(可以认为是window中的快捷方式)

    后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的用户的权限,其他用户的权限

    • r: 代表权限是可读,r也可以用数字4表示
    • w: 代表权限是可写,w也可以用数字2表示
    • x: 代表权限是可执行,x也可以用数字1表示
      | 主user | 主user | 主user | group | group | group | 其他用户 | 其他用户 | 其他用户 |
      | — | — | — | — | — | — | — | — | — |
      | r | w | x | r | w | x | r | w | x |
      | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |

    在这里插入图片描述

    文件类型标识

    通过ll展示

    • 普通文件(-
    • 目录(d
    • 符号链接(l
    • * 进入etc可以查看,相当于快捷方式
    • 字符设备文件(c)
    • 块设备文件(s)
    • 套接字(s)
    • 命名管道(p)

    文件权限管理, 修改权限

    chmod 变更文件或目录的权限。(2种方法)
    • chmod 755 a.txt
    • chmod u=rwx,g=rx,o=rx a.txt

    注意:
    chmod 000 a.txt (虽然没有任何权限,但是root依然能读写执行)
    chmod 777 a.txt 所有权限

    chmod -R 755 *  ## 为这个文件夹中的所有文件和子文件设置权限
    
    • 1
    chown 变更文件或目录改文件所属用户和组

    A用户创建的文件,其他用户无法修改权限,通过这个修改文件所属用户和组来使其他用户可以修改(要在创建文件的用户或root用户中修改);

    1. chown 用户:组 文件(变更一个文件) 变更当前的目录或文件的所属用户和组
      将root用户创建的文件的用户、组改为Jerry,Jerry用户就可以修改权限了;
    chown jsy:jsy 3.txt
    ## 查看权限  : -rw-r--r--. 1 jsy jsy 时间 3.txt
    
    • 1
    • 2
    1. chown -R 用户:组名 目录名 :变更目录及其中的 所有的 子目录及文件的所属用户和组
  • 相关阅读:
    3.vue知识点v-slot(插槽)
    金蝶云星空与旺店通·企业奇门对接集成盘盈单查询打通创建盘点单
    docker 基本命令
    HCIE-Security Day47:AC准入控制MAC
    在ubuntu上安装ns2和nam(ubuntu16.04)
    Android基础第十天 | 字节跳动第四届青训营笔记
    Android 从零开发一个简易的相机App
    货币银行学重点内容复习
    面试官:React怎么做性能优化
    【Try to Hack】vulnhub DC1
  • 原文地址:https://blog.csdn.net/qq_36254947/article/details/133798312