• linux学习


    Linux

    网络连接三种模式

    1. 桥接模式

    ​ 虚拟机可以与外部系统通讯但容易造成ip冲突

    1. nat模式

      网络地址转换模式,虚拟系统可以和外部系统通讯,不造成Ip冲突

    2. 主机模式

      独立的系统

    关机&重启命令

    shut dowm -h now 立即关机 h代表halt
    shutdown -h 1 一分钟后关机
    shutdown -r now 现在重启计算机  r代表reheat
    halt  关机
    reboot 现在重启计算机
    sync 把内存的数据同步到磁盘
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    vim 使用

    vim xxx 一般模式
    i或者a 进入编辑模式
    esc键后 :wq(保存退出) :q(退出) :q!退出
    正常模式下
    yy 拷贝当前地 p 粘贴 5yy复制5行
    dd 删除当前行 5dd删除五行
    /关键字 进行查找 输入n进行下一个
    :set nu 设置文件的行号 :set nonu 取消文件的行号
    G 来到文件末行 gg 来到文件的首行
    u 撤销刚刚输入的
    行号+shift+g 快速定位一行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    用户管理

    su -用户名 切换到高级用户
    logout/exit 返回原来用户
    who am i 输出第一次登录的信息
    id 用户名  
    passwd 用户名 修改用户密码 如果没有指定用户名就是当前登录的用户
    userdel 用户名 删除用户
    id 用户名 查询用户
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    用户组

    系统可以对有共性的用户建组

    新增组
    groupadd 组名
    
    删除组
    groupdel 组名
    
    增加用户时直接加上组
    useradd -g 用户组 用户名
    
    修改用户的组
    usermod -g 用户组 用户名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • /etc/passwd 文件

    用户user的配置文件,记录用户的各种信息,每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

    • /etc/shadow 文件

      口令的配置文件

      每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

    • /etc/group 文件

      组的配置文件,记录linux包含的组的信息,

      每行含义:组名:口令:组标识号:组内用户列表

    指定运行级别

    1. 关机
    2. 单用户[找回丢失密码]
    3. 多用户状态没有网络服务
    4. 多用户状态有网络服务
    5. 系统未使用保留给用户
    6. 图形界面
    7. 系统重启

    常用运行级别是3和5,也可以指定默认运行级别

    init 加运行级别切换

    在centos 以前/etc/inittab文件中进行了简化

    看当前默认的级别用 systemctl get-default

    假设root用户密码错误,我们需要进入单用户重新设置密码

    帮助指令

    在linux中.是结尾的是隐藏文件

    man 获得帮助信息

    基本语法: man[命令或配置文件] (获得帮助信息) man ls

    help 指令

    基本语法:help 命令(获得shell内置命令)

    文件目录类

    rmdir [选项] 要删除的空目录
    rmdir如果要删除非空目录需要使用 rm -rf 要删除的目录
    
    touch 指令创建空文件
    touch 文件名
    
    cp 指令拷贝文件到指定目录
    cp [选项] source dest
    -r:递归复制整个文件夹
    使用细节强制覆盖不提示:\cp 
    
    rm 指令移除文件或目录
    rm [选项] 要删除的文件或者文件夹
    -r:递归删除整个文件夹
    -f:强制删除不提示
    
    mv 指令移动文件与目录或者重命名
    mv oldNameFile newNameFile
    mv /temp/movefile /targetFolder 移动文件
    
    cat 指令查看文件内容
    cat [选项] 要查看的文件
    -n 显示行号
    为了更好的使用我们可以用管道命令 | more 
    管道命令即将上一步的结果交给下一个指令来处理
    
    less 要查看的文件名
    
    echo 指令输出内容到控制台
    
    head 用于显示文件的开头部分内容,默认情况显示前10行
    head -n 5 文件
    
    tail -n 5 用于输出文件中尾部的内容,默认10行
    tail -f 文件(实时追踪该文档的所有更新)
    
    > 指令与>>指令
    > 输出重定向和>>追加
    > 覆盖写 >>追加
    基本使用
    ls -l > 文件 
    ls -al >> 文件
    cat 文件1 > 文件2
    echo "内容" >> 文件(追加)
    
    ln 指令类似于快捷方式
    基本语法 ln -s[原文件或目录][软链接名]
    
    history 指令查看已经执行过历史命令,也可以执行历史命令
    显示最近使用过的10条 history 10
    执行最近执行的第10条指令 !10
    
    date指令-显示当前日期
    date 显示当前时间
    date  "+%Y-%m-%d %H:%M:%S"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    在这里插入图片描述

    在这里插入图片描述

    搜索查找类

    find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的显示在终端
    find [搜索范围][选项]
    选项
    	-name<查询方式> 按照指定的文件名查找模式查找文件
    	-user<用户名> 查找属于指定用户名所有文件
    	-size<文件大小> 按照指定的文件大小查找文件 +n大于 -n小于 n等于
    	find / -size +200M 大于200M
    	
    locate 指令快速定位文件路径,locate指令利用系统事先建立的所有文件名称及路径的locate数据库实现快速定位给定文件,它无需遍历整个文件系统为了保证查询结果的准确度,管理员必须定期更新locate时刻
    第一次使用必须使用updatedb 创建数据库
    
    which 命令可以查看某个指令在哪个文件夹下
    
    grep [选项] 查找内容 源文件 管道符号
    	-n显示匹配行及行号
    	-i忽略大小写
    写法1. cat hello.txt | grep "hello"
    写法2. grep -n "hello" /opt/ddd/hello.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    压缩与解压类

    gzip 文件名 指令用于压缩文件
    gunzip 文件.gz 指令用于解压文件
    
    
    zip 用于压缩文件,unzip 用于解压的
    -r 递归压缩,即压缩目录
    unzip 解压
    -d <目录> 指定解压后文件的存放目录
    将/home下所有的文件/文件夹压缩成myhome文件
    zip -r myhome.zip /home/
    将myhome.zip 解压到 /opt/tmp 目录
    unzip -d/opt/tmp myhome.zip
    
    tar 指令打包指令最后打包后的文件是.tar.zip
    基本语法
    tar [选项] xxx.tar.gz 打包的内容
      选项
      -c 产生.tar打包文件
      -v 显示详细信息
      -f 指定压缩后的文件名
      -z 打包同时压缩
      -x 解压.tar 文件
    压缩多个文件,将 /home/pig.txt 和/home/cat.txt压缩成pc.tar.gz
    tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 
    将文件解压到指定目录下
    tar -zxvf /home/myhome.tar.zip 	-C /opt/tmp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    Linux 网络配置

    虚拟机有一个ip地址 本机也有一人 vmnet

    文件/目录权限

    ls -ahl 查看文件的所有者
    或者 ll
    chown 用户名 文件名 修改文件所有者
    
    某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
    修改文件所在组
    chgrp 组名 文件名
    
    改变用户所在组
    usermod -d 目录名 用户名 改变该用户登录的初始目录
    
    0-9位说明
    1. 第0位确定文件类型
    l 是链接,相当于windows的快捷方式
    d 是目录,相当于windows的文件夹
    c 是字符设备文件,鼠标,键盘
    b 是块设备,比如硬盘
    2. 第1-3位确定所有者拥有该文件的权限
    3. 第4-6位确定所属组拥有该文件的权限
    4. 第7-9位确定其他用户拥有该文件的权限
    drwxr-xr-x. 2 root root       23 1130 10:15 ddd
    d 表明是个目录 rwx 表明root可对这个目录可读可写可执行 r-x表明所在组可读可执行 r-x表明其它用户对该目录可读可执行
    
    chmod 指令可以修改文件或者目录的权限
    u:所有者 g:所有组 o:其他人 a:所有人
    chmod u=rwx,g=rx,o=x 文件/目录名
    chmod o+w 文件/目录名
    chmod o-x 文件目录名
    r=4 w=2 x=1 共7种组合,也可以通过数字进行修改权限
    
    修改文件所有者
    chown newowner 文件/目录 改变所有者
    chown newowner:newgroup 文件/目录 改变所有者和所在组
    chown -R tom /home/test 将/home/test 目录下的所有文件和目录的所有者修改成tom	
    
    修改文件/目录所在组
    chgrp newgroup 文件/目录
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    Linux 底层细节

    
    crondtab 进行定时任务的设置
    任务调度:指系统在某个时间执行的特定的命令或程序
    1. 系统工作:有些重要的工作必须周而复始地执行,个别用户工作:个别用户可能希望执行某些程序
    crontab [选项]
    -e 编辑crontab定时任务
    -l 查询crontab任务
    -r 删除当前用户所有的crontab任务
    设置个人任务调度,crontab -e 命令
    */1 * * * * ls -l 、/etc/ > /tmp/to.txt
    第小时的每分钟执行这条命令
    5个占位符说明
    第一个* 一小时当中的第几分钟 0-59
    第二个* 一天当中的第几小时 0-23
    第三个* 一个月当中的第几天 1-31
    第四个* 一年当中的第几个月 1-12
    第五个* 一周当中的星期几 0-7
    
    at定时任务
    1. at命令是一次定时计划任务,at的守护进程atd会以后台模式运行检查作业队列来运行
    2.默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配则运行此作业
    3. at命令是一次性定时计划任务,执行完后不再执行
    4. 在使用at 命令的时候,一定要保证atd进程的启动可以使用相关的指令来查看  ps -ef 查看当前所有进程 ps -ef | grep atd 查询atd相关
    at [选项] [时间]
    ctrl+D 结束 at 命令的输入
    用atq查看当前队列里面的任务
    atrm [编号] 删除队列中的任务
    
    linux 分区
    1. linux 来说无论有几个分区,分给哪一目录来使用,它只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来构成整个文件系统的一部分
    2. linux 采用一种叫"载入"的处理方法,它的整个文件系统包含一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得
    lsblk -f 查看当前磁盘分区
    关于磁盘添加挂载新磁盘 https://www.cnblogs.com/superlsj/p/11610517.html
    
    磁盘情况查询
    du -lh 
    du/目录
    	-h 带计量单位
    	-s 指令目录占用磁盘大小
    	-c 列出明细,并显示汇总值
    	--max-depth=1 子目录深度
    
    修改主机名与hosts映射
    1. 可以给linux系统设置主机名,也可以根据需要修改主机名
    2. 指令hostname: 查看主机名
    3. 修改文件在 /etc/hostname 指定
    4. 修改后,重启生效
    nmtui 可以进入一个图形化的配置工具编辑后直接生效
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    在这里插入图片描述

    Linux 进程管理

    1. 在linux 中,每一个执行的程序都称为一个进程,每一个进程都分配一个进程号
    2. 每个进程都可能以两种方式存在,前台与后台
    3. 一般系统的服务都是以后台进程的方式存在

    ps命令查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何的参数

    ps -aux 显示当前所有在后台的进程

    ps -aux | grep sshd 显示 sshd连接使用的进程

    在这里插入图片描述

    ps -ef 也可以全格式显示当前所有的进程

    -e 显示所有的进程 -f 全格式

    若是某个进程执行一半需要停止,可以使用kill指令来完成此项任务

    kill [选项] 进程号 通过进程号来杀死进程

    killall 进程名称 通过进程名称杀死进程

    终止远程登录服务 sshd,在适当的时候再开

    kill sshd对应的进程号 /bin/stystemctl start sshd.service

    当这个进程正在运行,你需要让它停止,我们需要加上 -9 选项

    pstree [选项] 可以更加直观地来看进程信息

    -p 显示进程的pid

    -u 显示进程所属用户

    服务本质就是进程,但运行在后台,因此我们也称为守护进程

    service 服务名 [start|stop|restart|reload|staus]

    在centos7后很多服务不再使用 service 而是使用systemctl

    service指令管理的服务在/etc/init.d中查看

    setup ->系统服务可以看到全部

    开机流程

    开机->bios->/boot->systemd进程1->运行级别->运行级对应的服务

    chkconfig命令可以给服务的各个运行运行级别设置自启动与关闭

    chkconfig --list[| grep xxx] 查看服务

    chkconfig 服务名 --list

    chkconfig --level 5 服务名 on/off 设置这个服务在这个运行级别是否自动开启

    systemctl 管理指令

    systemctl 指令管理的服务在 /usr/lib/systemd/system中查看

    systemctl list-unit-files [|grep]

    systemctl enable 服务名(开机启动)

    systemctl disable 服务名(关闭启动)

    systemctl is-enabled 服务名 (查询某个服务是否启动了)

    关闭或者启动防火墙后,立即生效,但开机即失效,如果需要永久生效就需要

    systemctl disable 服务名

    打开或者关闭指定端口

    打开端口 firewall-cmd --permanent --add-port=端口号/协议

    关闭端口 firewall-cmd --permanent --remove-port=端口号/协议

    重新载入生效 firewall-cmd --reload

    查询端口是否开放:firewall-cmd --query-port=端口号/协议

    top [选项] top 显示的是正在执行的进程状态

    -d 秒数 指定几秒更新,默认是3秒

    -i 使top不显示显示任何闲置或者僵死进程

    -p 通过指定监控进程id来仅仅监控某个进程的状态

    显示中使用交互指令进行按照对应的指标进行排序

    w 命令查看登录用户正在使用的进程信息

    p 以cpu使用率排序,默认

    M 以内存的使用率排序

    N 以PID排序

    q 退出top

    监控tom用户

    top回车 u+用户名

    终止指定的进程

    top回车 k+进程号

    netstat [选项]

    -an 按一定顺序排列输出

    -p 显示哪个进程在调用

    如果需要建立一个网络连接双方都要一个端口

    rpm包的管理

    rpm用于互联网下载包的打包及安装工具,它包含在某些linux分发版中,它生成具有.rpm扩展名的文件名

    查询已安装的rpm列表 rpm -qa|grep xx

    rpm -q 软件包名:查询软件包是否安装

    rpm -qi 软件包名:查询软件包信息

    rpm -ql 软件包名:查询软件包中的文件

    rpm -qf 文件全路径名 查询文件所属的软件包

    删除rpm包 rpm -e rpm包名称 //erase

    当有其它依赖依赖于它时,我们可以使用 rpm -e --nodeps rpm包

    安装rpm包

    rpm -ivh rpm包全路径名称 i=install,v=verbose 提示,hash进度条

    yum是一个shell前端软件包管理器,基于rpm包管理,能够从指定服务器自动下载rpm包并且安装

    yum list|grep xx软件列表 查询yum服务器是否有需要安装的软件

    如果有直接 yum install 软件名称 就可以了

    shell 编程

    脚本格式以 #!/bin/bash开头

    脚本需要有可执行权限

    脚本常用执行方式

    #!/bin/bash
    echo "hello,world"
    
    • 1
    • 2
    1. 赋予该权限+x权限,再执行脚本 chmod u+x hello.sh
    2. 不用赋予脚本+x权限,直接执行该脚本 sh hello.sh

    shell 变量介绍

    1. linux shell中变量分为 系统变量与用户自定义变量
    2. 系统变量: H O M E , HOME, HOME,PWD, S H E L L , SHELL, SHELL,USER
    3. 显示当前 shell中所有变量:set

    shell 变量定义

    1. 定义变量:变量名=值
    2. 撤销变量:unset 变量
    3. 声明静态变量:readonly变量 注意:不能unset

    变量名称一般使用大写

    行号两侧不能有空格

    将命令的返回值赋给变量

    A=`date`反引号,运行里面的命令,并将结果返回给A
    A=$(date) 等价于反引号
    
    • 1
    • 2

    设置环境变量

    export 变量名=变量值 (将shell变量输出为全局变量)

    source 配置文件 (让修改后的文件立即生效)

    echo $变量名 (查询环境变量的值)

    多行注解

    :<<!
    
    注释内容
    
    !
    
    • 1
    • 2
    • 3
    • 4
    • 5

    执行shell脚本希望获取命令行的参数信息,可以使用位置参数变量

    $n (n为数字 $0代表命令命令本身,$1-$9代表1-9参数 10以上的参数要用 ${10})

    $* 所有的参数

    $@ 也代表所有的参数不过进行了区别对待

    $# 代表命令行中所有参数的个数

    预定义变量

    $$ 当前进程号(pid)

    $! (后台运行的最后一个进程的进程号)

    $? (功能描述:最后一次执行的命令返回值状态,0表示正确执行非0表上次执行的不正确)

    后台运行一个脚本 /root/myshell.sh & &代表在后台运行

    系统日志

    /var/log目录就是系统日志保存的位置

    在这里插入图片描述

    echo ‘’>secure 将secure 日志清空

    centos 7.6服务是 rsyslogd ,centos6.x日志服务是syslogd

    /etc/rsyslog.conf 文件限制了日志应该放的位置

    在这里插入图片描述

    在这里插入图片描述

    /etc/logrotate.conf [全局的日志轮替策略,也可以单独给某个日志文件指定策略]

    bt忘记密码可以使用 bt default 查看

    常用命令

    pwd (print work directory) 显示当前工作目录绝对路径
    ls 
    -a 显示当前目录所有的文件和目录,包括隐藏的
    -l 以列表的方式显示信息
    -lh 文件的容量用mb或者k或者g的方式显示
    cd [参数] 切换到指定的目录
    cd:回到家目录
    cd .. 回到当前目录的上一级目录
    mkdir [选项] 目录名 mkdir 创建一个目录
    -p:创建多级目录
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    如何治理 Electron 版本淘宝直播应用崩溃?
    Synchronized锁1
    我的Vue组件化开发首个项目todolist
    初识Java
    WZOI-260近在咫尺
    【牛客网-前端笔试题】——HTML专项练习
    爬虫到底难在哪里?
    20220910编译ITX-3588J的Buildroot的系统2a(编译Kernel)
    数学建模——最大流问题(配合例子说明)
    《C陷阱和缺陷》-笔记 (3)
  • 原文地址:https://blog.csdn.net/qq_53008149/article/details/125428243