• 连夜整理了多年后端开发最常用linux指令(建议收藏,边用边学)


    0. 引言

    前段时间有同学问我:linux指令那么多,怎么去学?实际上这个问题也曾经困扰着我,多年走来,我总结了一个经验:优先学习你马上要用到的,而不是上来就体系的全部学习一遍。

    可能很多同学会不太适应这样的方式,不体系的学习那很多知识不就跃层了吗?根本不理解什么意思?为什么这样,是什么原理?

    但是大家要把握一点,这个行业的技术日新月异,作为后端开发甚至是运维而言,永远有比linux指令更要紧的技能要求你掌握。而linux指令本身,就像你操作window电脑,你一开始玩电脑的时候是先把电脑说明书看一遍吗?还不是打开游戏,玩起了你感兴趣的,马上要用到的。

    于是乎好多同学甚至学会了输入游戏后台作弊指令这样的高阶操作,却还不知道怎么书写一个word文档。但那个时候的你会因为不会写word,不会写PPT焦虑吗?不会!因为用不着。

    所以这就是说了这么多废话,要告诉大家的一个学习道理,开发这行,要求大家学最紧俏的,快速掌握实用,后续深入原理。学习是个循环往复的过程!

    1. 常用指令

    以下命名已根据多年开发经验的使用频次做了一定精炼,只列举了个人认为最常用的,大家应该优先掌握的指令和参数,更多的用法大家可以根据自己的情况进行拓展学习

    1.1 基础掌握

    • 1、进入目录指令 cd
      我们进入linux系统,要想在这个黑色的世界自由行走,先要了解的就是cd指令,它能帮助我们进入到我们想要去的地方

    比如想要去/usr/local文件夹,那么执行cd /usr/local即可。注意linux的路径和window的有所区分,就不再是以盘符开头

    # 进入/root目录
    cd ~ 
    # 返回上一级目录
    cd ..
    # 进入当前目录下的bin目录
    cd ./bin 或者 cd bin
    # 进入兄弟目录xxx(返回上一级,再进入该目录即可)
    cd ../xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 2、查询列表指令 llls

    ls指令用来列举目录下的文件,支持的参数有多种

    # 获取当前列表下全部文件,包括隐藏文件
    ls -a
    # 获取当前列表下文件的全部信息,包括权限、大小、最近修改时间,ll指令就是该指令的快捷输入
    ls -l 或 ll
    # 获取当前列表下的全部文件,包括子目录
    ls -R
    # 将文件按最近一次修改时间排序
    ls -i
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    需要注意的是这些参数是可以组合使用的,比如:

    ls -li
    
    • 1
    • 3、文本修改指令 vim \ vi

    vim是文本修改指令,我们在环境部署时经常需要修改配置文件,因此vim指令的使用必不可少。但是需要注意的是如果你的linux系统安装的时候是用的最小化安装,那么是不自带vim指令的,需要单独安装,或者使用vi指令,虽然没有vim那么功能丰富,但是单纯的修改保存是完全没有问题的

    vim 基础操作:

    # 修改文件
    vim fileName
    # 切换修改模式
    a
    # 保存
    esc + :wq 
    # 强制保存
    :!wq
    # 直接退出,不保存修改
    :q
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    vim高级操作:

    # 向后查找指定内容
    :/xxx
    # 向前查找指定内容
    :?xxx
    # 替换所有的xxx为yyy
    :%s/^xxx/yyy/g
    # 切换到第一行
    gg
    # 切换到最后一行
    GG
    # 跳转指定行
    :row_number
    # 显示行号
    :set nu
    # 取消显示行好
    :set nonu
    # 删除光标所在行
    dd
    # 全部删除(三步)
    esc
    gg
    d + G (注意这里不是输入+,而是连续操作)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 4、文本文件查看指令 cat \ more \ less

    cat 指令:

    # 一次性显示文件全部内容,适合于较小的文件
    cat xxx
    # 加上行号显示
    cat -n xxx
    
    • 1
    • 2
    • 3
    • 4

    less指令

    # 分页显示文件内容,适合较大的文件
    less xxx
    # less操作
    空格键:前进一页
    b键:后退一页
    q键:退出阅读
    /键:搜索模式
    n键:搜索模式下,跳转下一个匹配行
    N键:搜索模式下,跳转上一个匹配行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 5、查看尾行指令 tail

    tail指令用于查询文本内容的最后几行,适用于针对较大的日志文件进行查询,并且能够实时显示文本内容,可以实时看到新产生的日志内容

    # 查询文件末尾几行(默认10行)
    tail xxx
    # 查询文件末尾100行
    tail -n 100 xxx
    # 实时查看文件默认100行(会持续输出文件产生的新内容)
    tail -f -n 100 xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 6、查看文件的头几行指令 head

    head指令与tail相对,用于查询文件的头几行内容

    head xxx
    # 指定100行
    head -n 100 xxx
    
    • 1
    • 2
    • 3
    • 7、转移文件指令 mv

    mv指令也就是window中我们常用的剪切指令,用于移动文件

    mv 原文件名 目标文件名
    # 如将当前目录下的vim_test文件移动到上级目录,并重命名为vim_test2
    mv vim_test.txt ../vim_test2.txt
    
    • 1
    • 2
    • 3
    • 8、复制文件指令 cp

    cp也是我们比较常用的指令,用于文件复制

    mv 原文件名 目标文件名
    # 如将当前目录下的vim_test文件复制到上级目录,并重命名为vim_test2
    cp vim_test.txt ../vim_test2.txt
    
    • 1
    • 2
    • 3
    • 9、远程复制指令 scp

    scp指令用于远程复制/传输文件,我们配置环境时,有时需要将一个配置文件传到另外一个服务器上,如果不想专门下载一个ftp软件的话,我们就可以用scp指令来实现

    scp 文件名 目标服务器账号@目标服务器ip:目标路径
    # 将当前目录下的source_project_cargo文件复制到192.168.244.11服务器上的/var/local目录下
    scp source_project_cargo.sql root@192.168.244.11:/var/local/
    
    • 1
    • 2
    • 3
    • 10、删除文件指令 rm

    rm指令用于删除指定文件夹下的文件及子文件夹。该指令使用时要慎重,因为一旦删除是无法恢复的,所以开发圈盛传的删库跑路,就源于rm -rf指令的强悍效果

    # 强制删除文件
    rm -f xxx
    # 删除文件及子目录
    rm -r xxx
    # 强制删除文件及子目录
    rm -rf xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 11、创建文件夹指令 mkdir
    # 创建文件夹xxx,只支持一级文件夹
    mkdir xxx
    # 创建多级文件夹
    mkdir -p xxx/yyy/zzz
    
    • 1
    • 2
    • 3
    • 4
    • 12、显示当前路径 pwd

    有时我们不知道自己当前操作的文件夹路径时,就可以通过pwd指令来查询当前所在路径

    pwd
    
    • 1
    • 13、模糊查询指令 grep

    grep指令是我们在运维排查的过程中常用的指令,当出现报错时,我们就可以通过grep指令来定位报错的日志内容

    grep [option] pattern filename
    # 查询xxx.log中的“张三”所在行
    grep '张三' xxx.log 
    # 查询xxx.log中“张三”所在行及之后的3行内容,A:after
    grep -A 3 '张三' xxx.log
    # 查询xxx.log中“张三”所在行及之前的3行内容,B:before
    grep -B 3 '张三' xxx.log
    # 查询xxx.log中“张三”所在行及前后的3行内容
    grep -C 3 '张三' xxx.log
    # 查询指定文件的总行数
    grep -c '' /data/logs/xxx.log
    # 查询指定张三出现的行数
    grep -c '张三' /data/logs/xxx.log
    # 查询并显示行号
    grep -n -A 3 '张三' xxx.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 14、重启指令 reboot

    重启大法能够解决"80%"的软件问题,这是我们必须掌握的指令!

    reboot
    
    • 1
    • 15、切换用户指令 su
    # 切换root账号
    su
    # 切换指定用户elastic
    su elastic
    
    • 1
    • 2
    • 3
    • 4

    1.2 进阶掌握

    • 1、查找可执行文件的路径 which

    有时我们会面临忘记自己安装的软件在哪个文件夹下,或者需要用到某个软件不知道放哪儿了,这时我们就可以通过which 来帮助我们寻找安装目录

    # 查找java安装路径
    which java
    
    • 1
    • 2
    • 2、查找文件位置指令 find

    find指令用于查找指定文件的路径

    find <path> <fileName> <todo>
    # 在/var/local文件夹下查找xxx.log文件
    find /var/local xxx.log
    
    • 1
    • 2
    • 3
    • 3、赋权指令 chmod \ chown

    在linux系统中,文件具有不同的权限,针对没有写入权限的文件,我们是不能修改的,因此我们就需要修改文件权限,这时就需要用到chmod,chown指令

    chown指令:改变文件所有者

    # 将/var/local/elasticsearch文件夹的所有者改为elastic,群组改为elastic,-R表示递归设置所以的子文件夹
    chown -R elastic:elastic /var/local/elasticsearch
    
    • 1
    • 2

    chmod指令:修改文件权限

    # 递归设置对/var/local/elasticsearch文件夹及子文件具有最高权限
    chmod -R 777 /var/local/elasticsearch 
    
    • 1
    • 2

    针对权限内容,当然不止777最高权限,还分了其他很多权限等级,因篇幅关系,大家可自行学习,先做了解,实际应用时再深入理解即可

    • 4、查询进程指令 ps

    ps指令可以让我们查询进程名,我们在linux系统中后台运行某些软件时,是不能想window那样有运行窗口可视化的,我们想要找到这些进程的话就需要利用ps指令

    # 查询全部进程
    ps -ef
    # 结合grep指令实现查询指令名称的进程,如查询java进程
    ps -ef | grep java
    
    • 1
    • 2
    • 3
    • 4
    • 5、终止进程指令 kill

    kill用来强制杀死正在运行的进程,类似window中的强制退出,一般配合ps指令来使用,ps指令查询出指定的进程号,然后通过kill退出进程

    kill 进程号
    
    • 1
    • 6、远程连接指令 ssh

    ssh用于我们远程连接服务器,如果不想下载远程连接软件的话,ssh指令是不错的选择

    ssh 账号@服务器ip -p 端口
    # 通过22端口远程连接192.168.244.11服务器
    ssh root@192.168.244.11 -p 22
    # 端口默认22,所以上述指令可以简写为
    ssh root@192.168.244.11
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 7、软件下载指令 yum

    yum是一个软件包管理器,我们可以通过这个指令来快捷安装软件,以此来方便的搭建运行环境

    # 显示已经安装的和可以安装的软件
    yum list
    # 查找安装包
    yum search <name>
    # 安装软件包
    yum install xxx
    # -y是无需再询问是否安装,比如直接安装java
    yum -y install java
    # 卸载安装的软件
    yum remove xxx
    # 更新所有软件包
    yum update
    # 更新指定软件包
    yum update xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 8、下载文件指令 wget

    wget用于从指定的url下载文件,这样我们就不再需要在本地下载后再从本地上传到服务器了。当然该工具不是自带的,需要我们提前安装

    # 通过yum安装wget
    yum -y install wget
    # 下载文件
    wget url
    # 下载文件并重命名
    wget -O 55555.zip http://55555.com/download
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 9、打包、解压指令 tar

    tar指令用于打包文件夹, 或者解压压缩包,在环境搭建时非常常用

    其支持的参数如下:

    -c   # 创建打包文件
    -t  # 查看压缩包含有哪些文件名
    -x # 解压缩
    -z # 通过gzip的方式进行压缩/解压缩
    -v # 显示正在解压/打包的文件名
    -f # 指定文件名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    一般我们是将这些参数组合使用的,下面列举几个常用的:

    # 压缩xxx文件夹为.tar.gz文件
    tar -czvf xxx.tar.gz xxx
    # 解压xxx.tar.gz文件
    tar -zxvf xxx.tar.gz
    # 显示压缩文件内容
    tar -tzvg xxx.tar.gz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 10、zip文件解压缩指令 zip/unzip

    zip指令专用于解压/打包zip文件,同样需要提前安装

    # yum安装zip,unzip指令
    yum install zip
    yum install unzip
    # 解压zip文件
    unzip xxx.zip
    # 打包zip文件
    zip [option] 文件名 路径
    # 打包xxx文件夹为xxx.zip,-v表示可视化打包过程,-r表示递归打包所有子文件夹
    zip -vr xxx.zip /var/local/xxx
    # 追加user.txt文件到xxx.zip文件中
    zip -u xxx.zip user.txt
    # 加密压缩
    zip -e xxx.zip /var/local/xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 11、后台运行程序 nohup

    nohup指令用于后台运行程序,有时我们需要运行多个软件时,如果都在前台运行则只能运行一个,无法继续输入指令,这时我们就需要指定程序后台运行

    # 后台运行xxx.jar,搭配“&”使用,表示退出终端程序依旧可以后台运行,不会挂断
    nohup java -jar xxx.jar & 
    
    • 1
    • 2

    总结

    本期的linux常用指令分享就到这里结束了,更加建议大家通过实操来熟悉这些指令,一次排查、一次环境搭建、一次日志查询,动起来吧~

  • 相关阅读:
    极坐标和直角坐标的雅克比矩阵推导
    【算法】滑动窗口题单——3.不定长滑动窗口(求最短/最小)⭐ 删除最短的子数组使剩余数组有序
    js如何实现一个简单的节流函数?
    Java面试题:如何在Java中进行代码优化以提高性能?
    Java利用poi实现word,excel,ppt,pdf等各类型文档密码检测
    Leetcode 【136. 只出现一次的数字】
    首款绿色贡献交互应用“i绿信”,亮相深圳引热议!
    lesson2(补充)关于>>运算符和<<运算符重载
    【网络安全】——逻辑漏洞之短信轰炸漏洞
    【数据结构】:栈的实现
  • 原文地址:https://blog.csdn.net/qq_24950043/article/details/126294756