• Linux学习笔记


    Linux学习

    1.Linux目录结构

    • linux的目录结构:

    目录结构具体介绍:

    • /bin 是Binary的缩写,存放着最经常使用的命令
    • /home 存放着普通用户的主目录,Linux中每个用户都有一个自己的目录,一般是以用户的账号命名的
    • /root 该目录为系统管理员,
    • /boot 启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
    • /tmp 用来存放一些临时文件
    • /media 自动识别一些设备
    • /usr/local 这是利一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的目录
    • /var 这个目录存放着不断扩充的东西

    2.vi和vim编辑器

    • 所有的linux系统都会内建vi文本编辑器
    • vim可以看成是vi的增强版本
    • vi和vim三种模式的相互转化图

    3.开机,重启,和用户登入注销

    a关机&重启命令

    1. 基本操作:
    shutdown
        shotdown -h now:表示立即关机
        shutdown -h 1:表示一分钟后关机
        shotdown -r now:立即重启
    halt
        就是直接使用,等价于关机
    reboot
        重启系统
    syn
        把内存的数据同步到磁盘
    

    用户登入和注销

    • 登入是尽量少用root账号登入,可以用普通用户登录,后再用"su- 用户名"切换成管理员身份
    • 在提示符下输入logout即可注销用户

    用户管理:

    • linux操作系统示意图
    • linux的用户需要至少属于一个组
    1. 添加用户
    useradd [选项] 用户名
    例如:useradd xiaoming
    
    1. 给用户指定或修改密码
    基本语法:
    passwd 用户名
    例如: passwd xiaoming
    
    1. 删除用户
    基本语法:
    userdel 用户名
    
    1)删除用户xiaoming,但要保留家目录:
    userdel xiaoming
    2)删除用户xiaoming以及用户主目录:
    userdel -r xiaoming
    
    1. 查询用户信息
    基本语法:
    id  用户名
    例如:
    id root
    uid=0(root) gid=0(root) 组=0(root):分别为用户id号,所在组的id号,组名
    注:当用户不存在时,返回“无此用户”
    
    1. 切换用户:
    基本语法:
    su - 切换用户名
    由权限高的用户切换到权限低的用户不需要密码,反之需要
    但需返回到原来用户时,使用exit指令
    
    1. 用户组:
    1.增加组:
    groupadd 组名
    2.删除组:
    groupdel 组名
    3.增加用户时直接加上组
    useradd -g 用户组 用户名
    4.修改用户的组
    usermod -g 用户组 用户名
    
    1. 配置文件
    1. /etc/passwd
    用户的配置文件,记录用户的各种信息
    2. /etc/shadow
    口令的配置文件
    3. /etc/group
    组的配置文件:记录Linux包含的组的信息
    

    实用指令

    1.运行级别说明

    • 0:关机
    • 1:单用户
    • 2:多用户状态没有网络服务
    • 3:多用户状态由网络服务
    • 4:系统未使用保留给用户
    • 5: 图形界面
    • 6:系统重启

    2.切换到指定级别的指令

    1. 基本语法:
    init[012356]
    
    1. 面试题:如何找回root密码,如果不小心忘记了root密码,怎么找回
    思路:进入到单用户模式,然后修改root密码
    因为进入单用户模式。root不需要密码就可以登入
    

    3.帮助指令:

    1. man 获得帮助信息
    基本语法:
    man [命令或配置文件]
    
    1. help指令
    基本语法:
    help 命令
    

    4.文件目录类:

    1. pwd指令
    基本语法:显示当前工作目录的绝对路径
    pwd
    
    1. ls指令
    基本语法:
    ls [选项] [目录或文件]
    常用选项:
    -a : 显示当前所有的文件和目录,包括隐含的
    -l : 以列表的形式显示信息
    
    1. cd指令
    基本语法:
    cd [参数] (功能描述:切换到指定目录)
    切换到家目录: cd  或者 cd ~
    
    1. mkdir指令:用于创建目录
    基本语法
        mkdir [选项] 要创建的目录
    常用选项
        -p : 创建多级目录
    
    1. rmdir指令:删除空目录
    基本语法:
    mkdir [选项] 要删除的空目录
    提示:如果需要删除非空目录,需要使用rm -rf 要删除的目录
    
    1. touch指令
    基本语法:
        touch 文件名称
    
    1. cp指令[重要]
    基本语法:
        cp[选项] source dest
    常用选项
        -r : 递归复制整个文件夹
    
    1. rm指令
    基本语法:
        rm [选项] 要删除的文件或目录
    常用选项
        -r : 递归删除整个文件夹
        -f : 强制删除不提示
    
    1. mv指令:移动文件于目录或重命名
    基本语法:
        mv oldNameFile newNameFile(移动文件)
        mv /temp/movefiel/targetFolder(功能描述:移动文件)
    
    1. cat指令
    • cat查看文件内容,是以只读的方式打开
    基本语法:
        cat [选项] 要查看的文件
    常用选项:
        -n:显示行号
    使用细节
        cat只能浏览文件不能修改文件,为了浏览方便一般会带上管道 | more
        cat 文件名 | more(分页浏览)
    
    1. more指令
    • 以全屏幕的方式按页显示文本文件的内容
    基本语法:
        more 要查看的文件
    应用实例:
        more /etc/profile
    
    • more快捷键
    1. less指令
    • 分屏查看文件内容,对于大型文件具有较高效率
    基本语法
        less 要查看的文件
    
    1. '> 指令和 >>指令'
    > 输出重定向:会将原来的文件内容覆盖
    >> 追加:追加到文件的尾部
    基本语法:
    1) ls-l>文件(功能描述:列表中内容写入到a.txt中)
    2) ls-al>>文件(功能描述:列表中内容追加到a.txt中)
    3) cat 文件1>文件2(功能描述:将文件1的内容覆盖到文件2)
    4) echo "内容" >> 文件
    
    1. echo指令
    基本语法:
        echo [选项] [输出内容]
    应用案例
        使用enho输出环境变量 echo $PATH
    
    1. head指令
    基本语法
        head 文件 (功能描述: 查看文件头10行)
        head -n 5 文件 (功能描述: 查看文件头5行)
    
    1. tail指令
    基本语法:
    1) tail 文件 (功能描述:查看文件后10行)
    2) tail --n 5 文件 (功能描述:查看文件后5行)
    3) tail -f 文件 (功能描述:实时追踪该文档的所有更新。工作中经常使用)
    
    1. ln指令
    基本语法:
        ln -s [原文件或目录][软连接名] (功能描述:给原文件按创建一个软连接)
    
    1. history指令
    基本语法:
        history (功能描述:查看已经执行过的历史命令)
    案例:history 10(查看最近使用过的10个指令)
    

    时间日期类:

    1. date指令-显示当前日期
    基本语法:
        1)date (功能描述:显示当前时间)
        1)date+%Y (功能描述:显示当前年份)
        1)date+%m (功能描述:显示当前月份)
        1)date+%d (功能描述:显示当前是哪一天)
        1)date "+%Y-%m-%d %H:%M:%S"(功能描述:显示当前年月日时分秒)
    
    1. date指令-设置日期
    基本语法:
        date -s 字符串时间
    案例:
        date -s "2018-10-10 11:22:22"
    
    1. cal指令
    基本语法:
        cal[选项] (功能描述:不加选项,显示本月日历)
    

    搜索查找类

    1. find指令
    基本语法:
        find [搜索范围] [选项]
    选项说明:
        -name<> 按照指定的文件名查找模式查找文件
        -user<用户名> 查找属于指定用户名所有文件
        -size<文件大小> 按照指定的文件大小查找文件
    案例:
        find /home -name hello.txt
        find /opt -user nobody
        find / -size +20M(-20M 20M)
    
    1. locate指令
    基本语法:
        locate 搜索文件
    注意:
        第一次运行前,必须updatedb指令创建locate数据库
    案例:
        使用locate快速定位hello.txt:locate hello.txt
    
    1. grep指令和管道符号|
    • grep过滤查找,管道符|表示将前一个命令的处理结果输出传递给后面的命令处理
    基本语法:
        grep[选项] 查找内容 源文件
    常用选项
        -n 显示匹配行及行号
        -i 忽略字母大小写
    案例:
        cat hello.txt | grep -n haha
        cat hello.txt | grep -ni haha
    

    压缩和解压

    1. gzip/gunzip 指令
    • gzip用于压缩文件,gunzip用于解压的
    基本语法:
        gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
        gunzip 文件.gz (功能描述:解压缩文件命令)
    
    1. zip/unzip指令
    • zip用于压缩文件,unzip用于解压的。这个在项目打包发布中很有用
    基本语法:
        zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录)
        unzip [选项] XXX.zip(功能描述:解压缩文件)
    zip常用选项
        -r:递归压缩,及压缩目录
    unzip常用选项
        -d<目录>:指定解压后文件的存放目录
    案例:
        zip -r mypackage.zip /home/
        unzip -d /opt/tmp/ mypackage.zip
    
    1. tar指令
    • tar指令时打包指令,最后打包后的文件时.tar.gz的文件。
    基本语法:
        tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录。解压后的文件格式.tar.gz)
    选项说明
        -c 产生.tar打包文件
        -v 显示详细信息
        -f 指定压缩后的文件名
        -z 打包同时压缩
        -x 解包.tar文件
    案例:
        tar -zcvf a.tar.gz a1.txt a2.txt(打包后的文件名 对那些文件打包)
        tar -zcvf myhome.tar.gz /home/ (将/home的文件夹压缩成myhome.tar.gz)
        tar -zxvf z.tar.gz (将z.tar.gz解压到当前目录)
    

    组管理和权限管理

    Linux组基本介绍

    • 在Linux中每个用户必须属于一个组,不能独立于组外
    • 所有者
    • 所在组
    • 其他组
    • 改变用户所在的组
    1. 修改文件所有者
    基本语法:
        chown 用户名 文件名
    案例:
        chown tom apple.txt  (将apple.txt所有者变为tom)
    
    1. 修改文件所在组
    • 单某个用户创建一个文件后,默认这个文件所在组就是改用户所在组
    基本语法:
        chgrp 组名 文件名
    案例:
        chgrp police orange.txt
    
    1. 其他组
    • 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
    1. 改变用户所在组
    基本语法:
        usermod -g 组名 用户名
        usermod -d 目录名 用户名 改变该用户登入的初始目录
    

    权限基本介绍

    ls -l 中显示的内容如下:
    -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
    0-9位说明:
    1) 第0位确定文件类型(d,-,l,c,b)
    2) 第1-3位确定所有者(该文件所有者)拥有该文件的权限 --User
    3) 第4-6位确定所属组(同用户组的)拥有该文件的权限 --Group
    4) 第7-9位确定其他用户拥有该文件的权限 --Other
    

    • 权限详解
    1. rwx作用到文件
    1) [r]代表可读(read):可以读取,查看
    2) [w]代表可写(write):可以修改,但是不能删除改文件,删除一个文件的前提条件是对该文件的所在目录有写权限,才能删除该文件
    3)[x]代表可执行(execute):可以被执行
    
    1. rwx作用到目录
    1)[r]代表可读(read):可以读取,ls查看目录内容
    2)[w]代表可写(write):可以修改,目录内创建+删除+重命名目录
    3)[x]代表可执行(execute):可以进入该目录
    
    1. 数字表示
    可用数字表示为:r=4 w=2 x=1 因此rwx=4+2+1=7
    
    1. 修改权限-chmod
    • 通过chmod指令,可以修改文件或者目录的权限
    • 第一种方式:+,-,=变更权限
    u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
    1)chmod u=rwx,g=rx,o=x 文件目录名
    2)chmod o+w 文件目录名
    3)chmod a-x 文件目录名
    
    • 第二种方式
    规则:r=4 w=2 x=1 , rwx=4+2+1=7
    rwx = 4+2+1=7
    r-x = 4+1 = 5
    
    1. 修改文件所有者
    基本语法:
        chown newowner file 改变文件的所有者
        chown newowner:newgroup file 改变用户的所有者和所有组
        -R 如果时目录 则使其下所有子文件或目录递归生效
    
    1. 修改文件所在组-chgrp
    基本语法:
        chgrp newgroup file 改变文件的所有组
    案例:
        chgrp -R bandit /home/kkk(将/home/kkk目录下所有的文件和目录所在组都修改成bandit)
    

    crond任务调度

    • 原理示意图
    • 任务调度:是指系统在某个时间执行的特定的命令或程序
    基本语法:
        crontab[选项]
    常用选项
        -e 编辑crontab定时任务
        -l 查询crontab任务
        -r 删除当前用户所有的crontab任务
    
    • 快速入门
    • 任务的要求
    设置任务调度文件:/etc/crontab
    设置个人任务调度。执行crontab -e命令
    接着输入任务到调度文件
    如:*/1 * * * * ls -l /etc/>/tmp/to.txt
    意思是说每小时的每分钟执行ls-l/etc/>>/tmp/to.txt
    
    • 步骤如下:
    cron -e
    */1 * * * * ls-l/etc>tmp/to.txt
    保存退出
    在每一分钟就会自动的调用ls-l/etc>>/tmp/to.txt
    
    • 参数细节说明
    1. 五个占位符的说明
    项目        含义                范围
    第一个*     一个小时中的第几分钟  0-59
    第二个*     一天当中的第几小时    0-23 
    第三个*     一个月中的第几天      1-31
    第四个*     一年中的第几个月      1-12
    第五个*     一周当中的星期几      0-7(0和7都代表星期日)
    
    1. 特殊符号说明
    * 代表任何时间
    , 代表不连续的时间
    - 代表连续的时间范围
    */n 代表每隔多久执行一次
    
    1. 特定时间执行任务案例
    时间            含义
    45 22 * * *      在22点45分执行命令
    0 17 * * 1       在每周1的17点0分执行命令
    0 5 1,15 * *     每月的1号和15号的凌晨5点0分执行命令
    40 4 * * 1-5     每周一到周五的凌晨4点40分执行命令
    */10 4 * * *     每天的凌晨4点,每隔10分钟执行一次命令
    0 0 1,5 * 1       每月1号和15号,每周一的0点0分都会执行命令 
    

    Linux磁盘分区,挂载

    分区基础知识

    • 分区的方式
    1. mbr分区
    1. 最多至此四个主分区
    2. 系统只能安装在主分区
    3. 扩展分区要占一个主分区
    4. MBR最大只支持2TB但拥有最好的兼容性
    
    1. gtp分区
    1. 支持无限多个主分区
    2. 最大支持18EB的大容量
    3. windows7 64位以后支持gtp
    
    • 使用lsblk(老师不离开)指令查看当前系统的分区情况
    1. 如何增加一块硬盘
    1. 虚拟机添加硬盘
    2. 分区 fdisk/dev/sdb
    3. 格式化 mkfs -t ext4 /dev/sdb1
    4. 挂载 先创建一个/home/newdisk 挂载mount /dev/sdb1 /home/newdisk
    5. 设置可以自动挂载
        vim /etc/fstab
        /dev/sdb1  /home/newdisk ext4 defaults
    
    1. 查询系统整体磁盘使用情况
    基本语法:
        df -h
    案例
        df -lh
    
    1. 查询指定目录的磁盘占用情况
    基本语法:
        du -h /目录
    # 查询指定目录的磁盘占用情况,默认为当前目录
    -s 指定目录占用大小汇总
    -h 带计量单位
    -a 含文件
    --max-depth=1 子目录深度
    -c 列出目录的同时,增加汇总值
    案例:查询/opt目录的磁盘占用情况,深度为1
        du -ach --max-depth=1 /opt
    
    1. 磁盘情况-工作使用指令
    1. 统计/home文件夹下文件的个数
    ls -l /home | grep "^d" wc -l
    2. 统计/home文件夹下目录的个数
    ls -l /home | grep "^d" | wc -l
    3. 统计/home文件夹下文件的个数,包括子文件夹里的
    ls - lR /home | grep "^-" | wc -l
    4. 统计文件夹下目录的个数。包括子文件夹里面的
    ls - lR /home | grep "^d" | wc -l
    5. 以树状显示目录结构
    tree
    

    网络配置

    • 测试主机之间网络联通 ping 目的主机

    进程管理

    显示系统执行的进程

    • 查看进行使用的指令是ps,一般来说使用的参数是ps -aux
    ps 显示的信息选项
    字段            说明
    PID             进程标识号
    TTY             终端机号
    TIME            此进程所消耗CPU时间
    CMD             正在执行的命令或进程名
    
    ps -a: 显示当前终端的所有进程信息
    ps -u: 以用户的格式显示进程信息
    ps -x: 显示后台进程的参数
    

    终止进程kill和killall

    基本语法:
        kill [选项] 进程号 (功能描述:通过进程号杀死进程)
        killall 进程名字 (功能描述:通过进程名称杀死进程,也支持通配符)
    常用选项:
        -9:表示强迫进程立即停止
    

    查看进程树pstree

    基本语法:
        pstree[选项]: 可以更加直观的来看进程信息
    常用选项:
        -p: 显示进程的PID
        -u:显示进程的所属用户
    

    服务(Service)管理

    service管理指令
        swevice 服务名 [start | stop | restart | reload | status]
    

    动态监控进程

    • top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程
    基本语法:
        top[选项]
    选项说明:
        选项            功能
        -d 秒数         指定top命令每隔几秒更新
        -i              使top不显示任何闲置或者僵尸进程
        -p              通过指定监控进程id来监控某个进程状态
    交互操作说明:
    操作            功能
    P               以CPU使用率排序(默认就是此项)
    M               以内存使用率排序
    N               以PID排序
    q               退出top
    

    查看系统网络情况netstat(重要)

    基本语法:
        netstat[选项]
        netstat -anp
    选项说明
        -an 按一定顺序排列输出
        -p  显示那个进程在调用
    

    Python: apt软件管理和远程登入

    • Ubuntu软件操作的相关命令
    sudo apt-get update 更新源***
    sudo apt-get install package 安装包***
    sudo apt-get remove package 删除包***
    
    sudo apt-cache search package 搜索软件包
    sudo apt-cache show package 获取包的相关信息:说明 大小 版本等***
    sudo apt-get install package --reinstall 重新安装包
    sudo apt-get -f install 修复安装
    sudo apt-get remove package --purge 删除包,包括配置文件等
    sudo apt-get build-dep package 安装相关的编译环境
    
    sudo apt-get upgrade 更新已安装的包***
    sudo apt-get dist-upgrade 升级系统
    sudo apt-chche depends packages 了解使用该包依赖那些包
    sudo apt-chche rdepends package 查看该包被那些包依赖
    sudo apt-get source package 下载该包的源代码
    

    Linux知识补充(更新时间: 2021-7-22 20:12)

    tail命令

    从文件尾部向上查看最后n行的内容
    使用方式:tail -n[行数] 文件名
    如果没有指定行数,默认显示最后10行内容
    *****
    一个比较重要的应用:显示日志 : tail -f test.log
    一个终端tail -f test.log , 另一个终端: echo “hello world” >>test.log
    *****
    

    软链接 -- 源文件要使用绝对路径

    * 软连接类似于windows下的快捷方式
    
    * 如何创建软连接:
    ln -s 文件名 快捷方式的名字
    例如:ln -s aa aa.soft
    
    目录也可以创建软连接
    例如:ln -s tmp tmp.link
    
    *****
    创建软链接应注意事项:
    ln创建软连接要用绝对路径,因为如果不使用绝对路径,一旦这个连接文件发生位置变动,就不能找到那个文件了。(如果使用相对路径软连接或者原文件移动位置都找不到了)
    
    软连接文件的大小是: 路径+文件名的总字节数
    

    硬链接

    * ln 文件名 硬链接的名字
    * ln test.log test.log.hard
    * 使用硬链接应注意事项
    * 硬链接不能建在目录上  目录不能建立硬链接
    * 硬连接对绝对路径没有要求
    * 硬连接不能跨文件系统
    
    硬链接文件和源文件的inode是相同的,文件系统的inode要求唯一,跨文件系统可能会使inode不同, 所以硬链接不能跨文件系统
    
    * 硬链接的本质
    * 硬连接的本质是不同的文件名所在的inode节点是相同的,相同的inode节点指向了相同的数据块,所以他们的文件内容是一样的,文件内容会同步。
    

    软件的安装和卸载

    11.1 在线安装 -- 建议安装前update下
    	软件安装:sudo apt-get install 软件名
    	软件卸载:sudo apt-get remove 软件名
    	更新软件列表:sudo apt-get update
    	清理安装包:sudo apt-get clean
    	清理的是缓存路径:/var/cache/apt/archives
    
    11.2 软件包安装
    	在Ubuntu系统下必须有deb格式的安装包
    	软件安装
    	sudo dpkg -i xxx.deb
    	软件卸载
    	sudo dpkg -r 软件名
    

    -------------2021-7-26更新

    linux查看cuda版本
    cuda一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了cuda的版本信息
    
    cat  /usr/local/cuda/version.txt
    

    ---------------2021-9-26更新

    • wget命令下载文件
      https://www.cnblogs.com/sx66/p/11887022.html
    • linux之间复制文件和目录命令scp
      https://www.runoob.com/linux/linux-comm-scp.html
  • 相关阅读:
    ASP.NET Zero--后端应用程序
    ASP.NET Zero--前期要求
    ASP.NET Zero--解决方案结构(层)
    ASP.NET Zero--开发指南
    Pos终端中的主密钥、工作密钥、pin密钥、mac密钥
    location.origin不兼容IE8解决方案
    一些常用的meta标签
    c#核心基础-委托
    springBoot项目启动去掉多余的启动日志
    如何发行自己的TRC20代币,并上线JustSwap去中心化交易所
  • 原文地址:https://www.cnblogs.com/zranguai/p/13934166.html
Copyright © 2020-2023  润新知