查看原文
其他

史上最全Linux常用指令汇总,又一吃灰教程

一航 一行Java 2022-08-09

开发人员,必不可少的需要和Linux打交道,这里整理了经常会用到的一些Linux操作指令,能快速帮你熟悉并操作Linux服务器

本教程会在后续的使用中持续更新,因公众号文章,发了之后无法修改,最新更新请关注:https://lupf.cn/articles/2020/12/22/1608639406803.html

文件

文件夹操作
  • 查看当前所在目录

    pwd
  • 查看目录下文件

    ls -a
    ll  # 以列表形式显示目录下文件
  • 打开目录

    cd /user/local  #从根目录开始进入到/user/local目录
    cd local  #从当前目录开始,进入到local目录
    cd ..  #返回到上级目录
  • 创建文件夹

    mkdir /user/local/user  # 从根目录开始,创建/user/local/user,此操作必须/user/local存在
    mkdir -p /user/local/user # 创建目录,任何一级的目录不存在,都会创建
  • 删除文件

    rm -ri /test  #删除根目录下的test;此操作会引导用户确认;输入y回车删除
    rm -rf /test  #直接删除,不需要再次确认
  • 移动或修改文件名

    mv /test1 /test2 # 将test1移动到test2 也可以理解为重命名为test2
  • 本地拷贝

    cp -rf /test /user/local  # 将根目录下的test拷贝到/user/local
  • 远程拷贝

    scp -rf /test root@192.168.1.123:/user/local 
    # 将本机根目录下的test目录拷贝到192.168.1.123的/user/local目录下
    # root为192.168.1.123的用户名;回车之后需要输入密码
    # 如果设置了免密登录,会直接拷贝过去


文件查看
  • 查看前n行内容

    head -n /testfile  # n为要查询的行数 如 head -3 /testfile,表示查询testfile的前三行
  • 查看后n行内容

    tail -n /testfile  # n 和上面的意思一样
  • cat输出文件的所有内容

    cat /testfile
  • 查看文件实时更新

    tail -f /testfile  # 文件的更新会实时展示出来
  • 输出内容到文件

    echo "输出内容" >> /testfile  # 追加内容到文件后面
    echo "输出内容" > /testfile   # 覆盖原有内容
文件压缩解压
  • tar.gz

    • 解压

      tar -zxvf filename.tar.gz
    • 压缩

      tar –czf filename.tar.gz filename.txt
  • tar.bz2

    • 解压

      tar -jxvf filename.tar.bz2
    • 压缩

      tar –cjf filename.tar.bz2 filename.txt
  • tar

    • 解压

      tar –xvf filename.tar
    • 压缩

      tar –cvf filename.tar filename.txt
  • tar.Z

    • 解压

      tar –xZvf filename.tar.Z
    • 压缩

      tar –cZf filename.tar.Z filename.txt
  • rar

    需要先安装rar

    • 解压

      unrar e filename.rar
    • 压缩

      rar a filename.rar filename.txt
  • zip

    需要先安装zip

    • 解压

      unzip filename.zip
    • 压缩

      zip filename.zip filename.txt
文件查找
  • 根据名称查找

    find / -name testfile
文件编辑
  • 编辑文件

    vi /testfile  # 开始编辑testfile
  • 进入编辑模式

    i
    insert
    # 按键盘i或者insert会进入编辑模式,左下角会有个--insert--
  • 退出编辑模式

    按esc即可退出编辑模式,退出后上图显示的insert会消失

  • 进入命令行模式

    # 非编辑模式下使用shift加:(英文模式下)进入命令行
    shift + :
  • 关键词查找

    查找文件中的关键词

    :/要查找的关键词      #如要查找34

    按n会往下查找下一个
    shift + n往上查找上一个 n和shift + n都是滚动查询的
  • 保存并退出(命令行模式下)

    wq
  • 强制保存并退出(慎用)

    多人同时操作的时候,wq保存会失败,可以使用强制保存

    wq!
  • 强制退出放弃修改(慎用)

    q!
  • 文件内复制粘贴

    • 终端下

      ctrl + shift + c   # 复制
      ctrl + shift + v   # 粘贴
    • 在控制台

      ctrl + insert    # 复制
      shift + insert   # 粘贴

服务

  • 查询某个服务的进程

    如查询java

    ps -ef | grep java
  • 服务操作;开启、暂停、重启、自启动等

    systemctl start docker.service    #启动一个服务
    systemctl stop docker.service     #关闭一个服务
    systemctl restart docker.service  # 重启一个服务
    systemctl status docker.service   # 显示一个服务的状态
    systemctl enable docker.service   # 在开机时启用一个服务
    systemctl disable docker.service  # 在开机时禁用一个服务
    systemctl is-enabled docker.service     # 查看服务是否开机启动
    systemctl list-unit-files|grep enabled  # 查看已启动的服务列表
    systemctl --failed  # 查看启动失败的服务列表
  • 杀掉某个进程

    kill -9 进程号    # 如上可以使用kill -9 2336 即可杀掉2336对应的java进程
  • 服务端口查看

    • 查看端口监听情况

      ss -tnl
    • 端口查进程

      ss -lnp | grep 80
    • 使用net-tools查看端口

      yum install -y net-tools
      netstat -tunl | grep ':80'
      netstat -tunlp
      netstat -apn | grep ':80' 
      netstat -ntu      查看连接数
      netstat -nat|grep -i "80"|wc -l

定时任务

crontab说明
crontab [-u username]
    -e      (编辑定时任务)
    -l      (列出定时任务里的命令)
    -r      (删除定时任务)
定时任务格式
  • 格式

    *  *  *  *  *   command
    分 时 日  月 周   指令
  • 操作符

    • *

      取值范围内的所有数字

    • 斜杠

      /

      每过多少个数字

    • 横杠

      -

      从X到Z

    • 逗号

      ,

      散列数字

示例
  • 示例1:每1分钟执行一次执行

    * * * * * echo "hello" >> /test/hello.txt
  • 示例2:每小时的第3和第15分钟执行

    3,15 * * * * echo "hello" >> /test/hello.txt
  • 示例3:在上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * * echo "hello" >> /test/hello.txt
  • 示例4:每隔两天的上午8点到11点的第3和第15分钟执行

    3,15 8-11 */2  *  * echo "hello" >> /test/hello.txt
  • 示例5:每周一上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * 1 echo "hello" >> /test/hello.txt
  • 示例6:每晚的21:30执行

    30 21 * * * echo "hello" >> /test/hello.txt
  • 示例7:每月1、10、22日的4 : 45执行

    45 4 1,10,22 * * echo "hello" >> /test/hello.txt
  • 示例8:每周六、周日的1 : 10执行

    10 1 * * 6,0 echo "hello" >> /test/hello.txt
  • 示例9:每天18 : 00至23 : 00之间每隔30分钟执行

    0,30 18-23 * * * echo "hello" >> /test/hello.txt
  • 示例10:每星期六的晚上11 : 00 pm执行

    0 23 * * 6 echo "hello" >> /test/hello.txt
  • 示例11:每一小时执行

    * */1 * * * echo "hello" >> /test/hello.txt
  • 示例12:晚上11点到早上7点之间,每隔一小时执行

    * 23-7/1 * * * echo "hello" >> /test/hello.txt
注意事项
  • 目录创建

    如上示例中,如果出现文件夹的输出,那么文件夹必须存在

  • 指令

    环境变量中的指令手动执行的时候,可以快捷输入,但定时任务就必须输入全路径

权限

权限定义
-rw-r--r--. 1 root root 4 Dec 22 18:28 /testfile

[rw-]           [r--]           [r--]
文件所有者的权限   文件所在组的权限   其他组的权限
用户组操作
useradd    #用于创建用户
groupadd   #用于创建组
usermod    #用于修改用户属性
权限说明
  • 文件夹

    r     # 只能读取文件列表
    w     # 没有任何作用
    x     # 可以进入目录
    rw    # 可以读文件列表,依旧无法删除文件
    rx    # 读取文件列表,可以cd进mul,但是无法删除目录下的文件,对文件有w权限可以清空或者写入
    wx    # 可以增加和删除目录中文件,可以cd进目录,但是无法查看目录有哪些内容,知道文件名可以打开文件
    rwx   # 可以进入目录,显示目录中内容,可以增删目录中文件
  • 文件

    r     # 读取文件内容
    w     # 写入
    x     # 执行,单独的执行权限只能运行二进制可执行文件
    rw    # 可读可写
    rx    # 可以执行二进制之外的编译类或者脚本类的文件
    wx    # 可以修改内容,无法查看,可以执行二进制可执行文件
    rwx   # 可以查看文件内容,可以增删文件内容,可以执行可执行文件
数字权限说明
r : 4
w : 2
x : 1

权限拆解
[-rwxrwxrwx]
[r w x] [r w x] [r w x]
[4+2+1] [4+2+1] [4+2+1]  ==> 权限值为:777

[-rwxr-xr--]
[r w x] [r - x] [r - -]
[4+2+1] [4+0+1] [4+0+0]  ==> 权限值为:754
设置权限
chmod 777 /testfile   # 其中777为根据上面的数字权限方式计算出来的

机器相关

cpu
  • 查看CPU个数

    • 查看物理CPU的个数

      cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
    • 查看逻辑CPU的个数

      cat /proc/cpuinfo |grep "processor"|wc -l
  • 查看CPU核数

    cat /proc/cpuinfo | grep "cpu cores" | uniq
  • 查看CPU型号

    cat /proc/cpuinfo | grep 'model name' |uniq
  • 查看CPU的主频

    cat /proc/cpuinfo |grep MHz|uniq
  • 查看CentOS版本

    cat /etc/redhat-release
  • 查看操作系统内核版本

    cat /proc/version
  • 查看bios信息

    dmidecode -t bios
内存
  • 查看内存总数

    cat /proc/meminfo | grep MemTotal
  • 查看内存条数

    dmidecode | grep -A16 "Memory Device$"
磁盘
  • 查看硬盘大小

    fdisk -l | grep Disk
  • 查看磁盘占用

    • 查看整个磁盘占用全款

      df -h
    • 查看当前所处目录的磁盘占用

      du -h --max-depth=1
    • 按空间占用排序

      du -s * | sort -nr | head 选出排在前面的10个
      du -s * | sort -nr | tail 选出排在后面的10个
网卡
  • 查看网卡硬件信息

    lspci | grep -i 'eth'
  • 查看系统的所有网络接口

    ip addr
时间
  • 查看时间

    date
  • 更新时间

    # 安装ntpdate
    yum install -y ntpdate
    # 更新时间
    ntpdate 0.asia.pool.ntp.org
    # 将系统时间同步到硬件,防止系统重启后时间被还原
    hwclock --systohc

其他更多操作

  • 以下命令也是比较常用的,可根据需要使用

    uname -a   # 查看内核/操作系统/CPU信息的linux系统信息  
    head -n l /etc/issue  # 查看操作系统版本  
    cat /proc/cpuinfo     # 查看CPU信息  
    hostname  # 查看计算机名的linux系统信息命令  
    lspci -tv # 列出所有PCI设备  
    lsusb -tv # 列出所有USB设备的linux系统信息命令  
    lsmod     # 列出加载的内核模块  
    env       # 查看环境变量资源  
    free -m   # 查看内存使用量和交换区使用量  
    df -h     # 查看各分区使用情况  
    du -sh    # 查看指定目录的大小  
    grep MemTotal /proc/meminfo  # 查看内存总量  
    grep MemFree /proc/meminfo   # 查看空闲内存量  
    uptime    # 查看系统运行时间、用户数、负载  
    cat /proc/loadavg   # 查看系统负载磁盘和分区  
    mount | column -t   # 查看挂接的分区状态  
    fdisk -l    # 查看所有分区  
    swapon -s   # 查看所有交换分区  
    hdparm -i /dev/hda   # 查看磁盘参数(仅适用于IDE设备)  
    dmesg | grep IDE     # 查看启动时IDE设备检测状况网络  
    ifconfig      # 查看所有网络接口的属性  
    iptables -L   # 查看防火墙设置  
    route -n      # 查看路由表  
    netstat -lntp # 查看所有监听端口  
    netstat -antp # 查看所有已经建立的连接  
    netstat -s    # 查看网络统计信息进程  
    ps -ef # 查看所有进程  
    top    # 实时显示进程状态用户  
    w      # 查看活动用户  
    id     # 查看指定用户信息  
    last   # 查看用户登录日志  
    cut -d: -f1 /etc/passwd   # 查看系统所有用户  
    cut -d: -f1 /etc/group    # 查看系统所有组  
    crontab -l       # 查看当前用户的计划任务服务  
    chkconfig –list  # 列出所有系统服务  
    chkconfig –list | grep on # 列出所有启动的系统服务程序  
    rpm -qa # 查看所有安装的软件包  
    cat /proc/cpuinfo     # 查看CPU相关参数的linux系统命令  
    cat /proc/partitions  # 查看linux硬盘和分区信息的系统信息命令  
    cat /proc/meminfo     # 查看linux系统内存信息的linux系统命令  
    cat /proc/version     # 查看版本,类似uname -r  
    cat /proc/ioports     # 查看设备io端口  
    cat /proc/interrupts  # 查看中断  
    cat /proc/pci         # 查看pci设备的信息  
    cat /proc/swaps       # 查看所有swap分区的信息  

部分内容参考于: dwz-9.cn/0S8fS

End


----  推荐阅读  ----

史上最全正则表达式,值得收藏备用
甩锅必备技能!使用AOP写个请求日志切面
SpringCloud Config配置中心详解教程
手摸手一小时从0搭建专属个人博客(视频教程)

整理不易,  点赞  在看  支持一下

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存