Linux命令学习笔记

Linux命令学习笔记

  • 1 前言
    • 1.1 系统版本
    • 1.2 终端切换
    • 1.3 快捷键
    • 1.4 帮助文档
    • 1.5 关机重启
  • 2 目录命令
    • 2.1 当前目录 pwd
    • 2.2 切换目录 cd
    • 2.3 查看目录 ls
    • 2.4 创建目录 mkdir
    • 2.5 删除目录 rm
    • 2.6 复制目录 cp
    • 2.7 移动目录 mv
    • 2.8 改名目录 mv
    • 2.9 链接目录 ln
  • 3 文件命令
    • 3.1 创建文件 touch
    • 3.2 删除文件 rm
    • 3.3 复制文件 cp
    • 3.4 移动文件 mv
    • 3.5 改名文件 mv
    • 3.6 链接文件 ln
    • 3.7 查看文件 cat
    • 3.8 查看文件 more
    • 3.9 查看文件 less
    • 3.10 查看文件 head
    • 3.11 查看文件 tail
    • 3.12 文件属性 wc
    • 3.13 文本比较 diff
    • 3.14 文本过滤 grep
    • 3.15 文件查找 find
    • 3.16 文件分割 split
  • 4 用户和组
    • 4.1 当前用户 whoami
    • 4.2 切换用户 su
    • 4.3 创建用户 useradd
    • 4.4 删除用户 userdel
    • 4.5 修改用户 usermod
    • 4.6 当前组 groups
    • 4.7 切换组 newgrp
    • 4.8 创建组 groupadd
    • 4.9 修改组 groupmod
    • 4.10 删除组 groupdel
  • 5 文件权限
    • 5.1 查看权限 ls
    • 5.2 修改权限 chmod
    • 5.3 修改属主和属组 chown
  • 6 压缩解压
    • 6.1 打包归档 tar
    • 6.2 压缩解压 gzip / gunzip
    • 6.3 压缩解压 bzip2 / bunzip2
    • 6.4 压缩解压 zip / unzip
  • 7 磁盘管理
    • 7.1 系统分区 df
    • 7.2 占用空间 du
    • 7.3 分区修复 fsck
    • 7.4 同步内存 sync
  • 8 网络管理
    • 8.1 网卡管理 ifconfig
    • 8.2 网络连接 netstat
    • 8.3 网络测试 ping
    • 8.4 网络传输 scp
    • 8.5 网络下载 wget
    • 8.6 远程登录 ssh
  • 9 系统管理
    • 9.1 时间日期 date
    • 9.2 当前用户 who
    • 9.3 密码修改 passwd
    • 9.4 操作系统 uname
    • 9.5 内存状态 free
    • 9.6 系统监控 top
    • 9.7 查看进程 ps
    • 9.8 结束进程 kill
    • 9.9 服务启停 systemctl
  • 10 软件管理
    • 10.1 软件管理 yum
      • 10.1.1 工具介绍
      • 10.1.2 安装软件
      • 10.1.3 卸载软件
      • 10.1.4 更新软件
      • 10.1.5 查看软件
      • 10.1.6 清除缓存
    • 10.2 软件管理 rpm
      • 10.2.1 工具介绍
      • 10.2.2 安装软件
      • 10.2.3 卸载软件
      • 10.2.4 更新软件
      • 10.2.5 查询软件
      • 10.2.6 验证软件
    • 10.3 二进制包
      • 10.3.1 软件说明
      • 10.3.2 软件安装
      • 10.3.3 软件卸载

1 前言

1.1 系统版本

  • 系统说明:本文使用的Linux系统是CentOS 7。

1.2 终端切换

  • 切换说明:用户即可以使用图形化桌面模式,也可以使用CLI控制台模式,切换方式如下所示:
    切换方式 切换快捷键
    图形化桌面 --> 控制台模式 Ctrl + Alt + F1
    控制台模式 --> 图形化桌面 Ctrl + Alt + F2 ~ F6

1.3 快捷键

  • 常用快捷键:
    快捷键 功能
    Ctrl + a 定位到行首字符
    Ctrl + e 定位到行尾字符
    Ctrl + d 删除光标后边的字符
    Ctrl + h 删除光标前边的字符
    Ctrl + l 清除屏幕
    Tab 命令自动补齐
    Ctrl + p 历史命令向上滚动一条
    Ctrl + n 历史命令向下滚动一条
    方向上键 历史命令向上滚动一条
    方向下键 历史命令向下滚动一条

1.4 帮助文档

  • 相关命令:可以使用 help 命令或 man 命令来查看具体的某个命令的帮助文档。
  • 命令语法:
    # 使用 help 命令查看指定命令的帮助文档
    命令名称 --help
    
    # 使用 man 命令查看指定命令的帮助文档
    man 命令名称
    
  • 命令示例:
    # 查看yum命令的帮助文档
    yum --help
    
    # 查看yum命令的帮助文档
    man yum
    

1.5 关机重启

  • 相关命令:shutdown(关机和重启)、reboot(重启)

  • 命令参数:shutdown 命令可以带有以下参数:

    参数 说明
    -h 关机
    -r 重启
    -t 秒数 发送警告信息和发送关机信号之间的间隔时间
    -k 仅送出警告信息,但并不会真正关机
    -f 重启时不执行fsck指令,即不检查档案系统
    -F 重启时执行fsck指令,即检查档案系统
    -c 取消前一个shutdown命令
  • 命令示例:

    # 立即关机
    shutdown -h now
    
    # 立即重启
    shutdown -r now
    
    # 设定5分钟后关机,同时发出警告信息给登录的Linux用户
    shutdown +5 "System whill shutdown after 5 minutes."
    
    # 重启
    reboot
    

2 目录命令

2.1 当前目录 pwd

  • 命令语法:

    pwd
    
  • 命令功能:显示当前所在目录。

  • 命令示例:

    # 查看当前所在目录(结果如下图所示)
    pwd
    
  • 示例结果:
    在这里插入图片描述

2.2 切换目录 cd

  • 命令语法:
    cd 目录
    
  • 命令功能:切换到指定目录。
  • 命令说明:目录可以是绝对路径的目录,也可以是相对路径的目录,也可以是特殊字符所表示的路径。
  • 命令示例:
    # 绝对路径:打开/home
    cd /home
    
    # 相对路径:打开当前目录下的admin目录
    cd admin
    
    # 特殊字符:打开当前目录
    cd .
    
    # 特殊字符:打开当前目录的上一级目录
    cd ..
    
    # 特殊字符:打开宿主目录
    cd ~
    
    # 特殊字符:打开上次访问的目录(用于在最近打开的两个目录之间切换)
    cd -
    

2.3 查看目录 ls

  • 命令语法:

    ls [选项] [文件或目录]
    
  • 命令功能:显示指定目录下所包含的文件及子目录。

  • 命令说明:ls命令输出的列表是按字母排序的;如果没有指定选项,则只会输出文件和目录的名称;如果省略文件或目录,则表示的是当前目录,如果指定了文件或目录,则会过滤输出列表。

  • 选项说明:

    选项 说明
    -a 显示所有的文件及子目录,包括隐藏文件
    -d 只显示目录,不显示文件
    -l 显示长列表,包括类型、权限、硬链接数、属主、属组、大小 、修改时间、文件名或目录名等信息
    -s 在每个文件名后输出该文件的大小
    -k 以k字节的形式表示文件的大小
    -u 以文件上次被访问的时间排序
    -t 以时间排序
    -o 显示除组信息外的详细信息
    -r 对目录反向排序
    -m 横向输出文件名,并以 “,” 作为分隔符
    -S 以文件大小排序
    -R 列出所有子目录下的文件
  • 过滤输出:在指定文件或目录时,可以使用通配符来过滤。

    通配符 说明
    ? 表示一个字符
    * 表示0个或多个字符
    [] 表示一个范围
  • 命令示例:

    # 基本用法:显示当前目录下的文件或目录的名称
    ls
    
    # 基本用法:显示当前目录下的所有文件或目录的名称
    ls -a
    
    # 基本用法:只显示当前目录下的目录
    ls -d
    
    # 基本用法:显示当前目录下的文件和目录的长信息
    ls -l
    
    # 基本用法:显示当前目录下的admin目录下的文件或目录的长信息
    ls -l admin
    
    # 目录过滤:匹配任意一个字符
    ls -l scr*pt
    
    # 目录过滤:匹配任意0个或多个字符
    ls -l scr?pt
    
    # 目录过滤:只匹配a或i
    ls -l scr[ai]pt
    
    # 目录过滤:匹配a-i之间的任意一个字符
    ls -l f[a-i]ll
    
    # 目录过滤:不匹配a
    ls -l f[!a]ll
    

2.4 创建目录 mkdir

  • 命令语法:

    mkdir [选项] 目录
    
  • 命令功能:创建指定名称的目录。

  • 命令说明:如果没有指定选项,则只能创建单层目录;可以同时创建多个同级目录。

  • 选项说明:

    选项 说明
    -m 对新建目录设置存取权限,未指定时的默认权限为 rwxrwxr-x
    -p 创建多层目录:若路径中的某些目录不存在,则自动创建。
  • 命令示例:

    # 在当前目录下创建目录a
    mkdir a
    
    # 在当前目录下创建目录b和目录c
    mkdir b c
    
    # 在当前目录下创建目录d,并指定目录b的权限为rwxrwxrwx
    mkdir -m=777 d
    
    # 在当前目录下创建多层目录e/f/g
    mkdir -p e/f/g
    
    # 在当前目录下创建目录a_c、a_d、b_c、b_d
    mkdir {a,b}_{c,d}
    

2.5 删除目录 rm

  • 命令语法:

    # rmdir只能删除空目录
    rmdir 目录
    
    # rm可以删除非空目录和多层目录
    rm 选项 目录
    
  • 命令功能:删除指定目录。

  • 命令说明:rmdir命令只能删除空目录,而rm命令可以删除非空目录和多层目录,使用rm命令删除目录时必须指定选项 -r。

  • 选项说明:rm命令具有如下选项。

    选项 说明
    -r 递归删除指定目录下的子目录(删除目录时该选项必须指定)
    -f 强制删除,在删除之前不询问是否要删除
    -i 交互式删除,在删除之前询问是否要删除
  • 命令示例:

    # 删除当前目录下的空目录a
    rmdir a
    
    # 删除当前目录下的空目录a_c和a_d
    rmdir a_c a_d
    
    # 递归删除当前目录下的目录b
    rm -r b
    
    # 递归删除当前目录下的目录b_c和b_d
    rm -r b_c b_d
    
    # 递归强制删除当前目录下的目录c
    rm -rf c
    
    # 递归交互式删除当前目录下的目录d
    rm -ri d
    

2.6 复制目录 cp

  • 命令语法:

    cp 选项 源目录 目标目录
    
  • 命令功能:把源目录及其子目录中的内容全部复制到目标目录中,如果目标目录不存在,则创建目标目录。

  • 命令说明:使用cp命令复制目录时必须指定选项 -r ,源目录和目标目录都可以绝对路径和相对路径的目录。

  • 命令选项:

    选项 说明
    -r 递归复制源目录及其子目录中的内容(复制目录时该选项必须指定)
    -a 递归复制目录时保留所有的信息,包括文件链接、文件属性等
  • 命令示例:

    # 把/home/user1目录及其子目录下的内容全部复制到/home/user1目录下
    cp -r /home/user1 /home/user2
    

2.7 移动目录 mv

  • 命令语法:

    mv 选项 源目录 目标目录
    
  • 命令功能:把源目录及其子目录中的内容全部移动到目标目录中。

  • 命令说明:如果目标目录已存在,则为移动,否则为重命名。

  • 命令选项:

    选项 说明
    -f 强制移动,如果目标目录下存在与源目录同名的目录,则直接覆盖(没有指定选项时默认就是直接覆盖)
    -i 交互式移动,如果目标目录下存在与源目录同名的目录,则询问是否要覆盖
    -n 如果目标目录下存在与源目录同名的目录,则不移动也不覆盖
  • 命令示例:

    # 把/home目录下的use1目录移动到user2目录中,如果目录user2中已存在目录user1,则直接覆盖
    mv /home/user1 /home/user2
    
    # 把/home目录下的user1目录移动到user2目录中,如果目录user2中已存在目录user1,则强制覆盖
    mv -f /home/user1 /home/user2
    
    # 把/home目录下的use1目录移动到user2目录中,如果目录user2中已存在目录user1,则交互式询问是否要覆盖
    mv -i /home/user1 /home/user2
    
    # 把/home目录下的use1目录移动到user2目录中,如果目录user2中已存在目录user1,则不移动也不覆盖
    mv -n /home/user1 /home/user2
    

2.8 改名目录 mv

  • 命令语法:

    mv 源目录 新目录
    
  • 命令功能:把源目录重命名为新目录。

  • 命令说明:如果新目录不存在,则为重命名,否则为移动。

  • 命令示例:

    # 把目录/home/user1重命名为/home/user2
    mv /home/user1 /home/user2
    

2.9 链接目录 ln

  • 命令语法:

    ln [选项] 源目录 链接名
    
  • 命令功能:给源目录创建一个链接。

  • 命令说明:没有指定选项的情况下创建的是硬链接。硬链接不占用磁盘空间,通过文件的inode来进行链接,而软链接需要占用磁盘。如果源目录是绝对路径的目录,则创建的链接移动了位置之后仍能使用,如果源目录是相对路径的目录,则只能在链接创建的目录下使用,移动位置之后则不能使用。

  • 命令选项:

    选项 说明
    -s 进行软链接
    -f 如果在目标位置存在与链接名相同的文件,则删除这个文件
    -d 允许系统管理员硬链接自己的目录
    -b 对将在链接时会被覆盖或者删除的文件进行备份
  • 命令示例:

    # 创建软链接:使用的是绝对路径,ln_user1_1文件移动位置之后仍能正常使用。
    ln -s /home/user1 ln_user1_1
    
    # 创建软链接:使用的是相对路径,ln_user1_2文件移动位置之后不能正常使用。
    ln -s user1 ln_user1_2
    
    # 创建硬链接:使用的是绝对路径,ln_user1_3文件移动位置之后仍能正常使用。
    ln /home/user1 ln_user1_3
    
    # 创建硬链接:使用的是相对路径,ln_user1_4文件移动位置之后不能正常使用。
    ln user1 ln_user1_4
    

3 文件命令

3.1 创建文件 touch

  • 命令语法:

    touch [选项] [设定的时间] 文件
    
  • 命令功能:touch命令用来改变文件的访问时间和修改时间。

  • 命令说明:如果指定文件不存在则创建此文件,如果没有指定时间,则使用当前时间。

  • 命令选项:

    选项 说明
    -a 改变文件的访问时间为系统当前时间,无须设置时间选项
    -m 改变文件的修改时间为系统当前时间,无须设置时间选项
    -c 如果文件不存在,不创建也不提示
    -d 或 -t 使用指定的时间或日期
    -r<参考文件或目录> 使用指定的时间或日期
  • 命令示例:

    # 在当前目录下创建一个名为test.txt的文件
    touch test.txt
    
    # 把当前目录下的test.txt文件的访问时间改为系统当前时间
    touch -a test.txt
    
    # 把当前目录下的test.txt文件的修改时间改为系统当前时间
    touch -m test.txt
    
    # 把当前目录下的test.txt文件的访问时间改为系统当前时间,如果test.txt文件不存在,则不创建该文件
    touch -ac test.txt
    
    # 把当前目录下的test.txt文件的修改时间设置为2019年8月19日14点39分
    touch -d "20190819 14:36" test.txt
    
    # 把当前目录下的test.txt文件的访问时间修改为test2.txt文件的访问时间
    touch -a -r test.txt test2.txt
    

3.2 删除文件 rm

  • 命令语法:

    rm [选项] 文件
    
  • 命令功能:删除指定文件。

  • 命令说明:

  • 选项说明:

    选项 说明
    -f 强制删除,在删除之前不询问是否要删除(没有指定选项时默认就是直接删除)
    -i 交互式删除,在删除之前询问是否要删除
  • 命令示例:

    # 删除当前目录下test.txt文件,直接删除
    rm test.txt
    
    # 删除当前目录下test.txt文件,直接删除
    rm -f test.txt
    
    # 删除当前目录下test.txt文件,删除之前询问是否要删除
    rm -i test.txt
    

3.3 复制文件 cp

  • 命令语法:

    cp [选项] 源文件 目标文件或目标目录
    
  • 命令功能:把源文件复制一份。

  • 命令说明:如果指定目标文件,则把源文件复制一份并命令为目标文件的名称,如果目标文件已存在,则覆盖;如果指定目录,则把源文件复制到目标目录中,如果目标目录不存在,则创建的不是目标目录,而是文件。

  • 命令选项:

    选项 说明
    -d 复制时保留链接,这样不会失去链接文件
    -p 保留文件的修改时间和存储权限
    -i 如果已经有相同文件名的文件,则提示用户是否覆盖
  • 命令示例:

    # 把当前目录下的test.txt复制一份放在当前目录下,并命名为test2.txt
    cp test.txt test2.txt
    
    # 把当前目录下的test.txt文件复制到/home/admin目录下
    cp test.txt /home/admin
    
    # 把当前目录下的test.txt文件复制到/home/admin目录下,如果存在同名的文件,则询问是否要覆盖
    cp -i test.txt /home/admin
    

3.4 移动文件 mv

  • 命令语法:

    mv [选项] 源文件 目标目录
    
  • 命令功能:把源文件移动到目标目录中。

  • 命令说明:如果目标目录已存在,则为移动,否则为重命名。

  • 命令选项:

    选项 说明
    -f 强制移动,如果目标目录下存在与源文件同名的文件,则直接覆盖(没有指定选项时默认就是直接覆盖)
    -i 交互式移动,如果目标目录下存在与源文件同名的文件,则询问是否要覆盖
    -n 如果目标目录下存在与源文件同名的文件,则不移动也不覆盖
  • 命令示例:

    # 把当前目录下的test.txt文件移动到/home/admin目录中,如果目录目录中已存在同名文件,则直接覆盖
    mv test.txt /home/admin
    
    # 把当前目录下的test.txt文件移动到/home/admin目录中,如果目标目录中已存在同名文件,则强制覆盖
    mv -f test.txt /home/admin
    
    # 把当前目录下的test.txt文件移动到/home/admin目录中,如果目标目录中已存在同名文件,则交互式询问是否要覆盖
    mv -i test.txt /home/admin
    
    # 把当前目录下的test.txt文件移动到/home/admin目录中,如果目标目录中已存在同名文件,则不移动也不覆盖
    mv -n test.txt /home/admin
    

3.5 改名文件 mv

  • 命令语法:

    mv 源文件 新文件
    
  • 命令功能:把源文件重命名为新文件。

  • 命令说明:如果新文件不存在,则重命名,如果新文件已存在,则直接覆盖。

  • 命令示例:

    # 把当前目录下的test.txt文件重命名为test2.txt
    mv test.txt test2.txt
    

3.6 链接文件 ln

  • 命令语法:

    ln [选项] 源文件 链接名
    
  • 命令功能:给源文件创建一个链接。

  • 命令说明:没有指定选项的情况下创建的是硬链接。硬链接不占用磁盘空间,通过文件的inode来进行链接,而软链接需要占用磁盘。如果源文件是绝对路径的文件,则创建的链接移动了位置之后仍能使用,如果源文件是相对路径的文件,则只能在链接创建的目录下使用,移动位置之后则不能使用。

  • 命令选项:

    选项 说明
    -s 进行软链接
    -f 如果在目标位置存在与链接名相同的文件,则删除这个文件
    -d 允许系统管理员硬链接自己的目录
    -b 对将在链接时会被覆盖或者删除的文件进行备份
  • 命令示例:

    # 创建软链接:使用的是绝对路径,ln_test1_1文件移动位置之后仍能正常使用。
    ln -s /home/user1/test1.txt ln_test1_1
    
    # 创建软链接:使用的是相对路径,ln_test1_2文件移动位置之后不能正常使用。
    ln -s test1.txt ln_test1_2
    
    # 创建硬链接:使用的是绝对路径,ln_test1_3文件移动位置之后仍能正常使用。
    ln /home/user/test1.txt ln_test1_3
    
    # 创建硬链接:使用的是相对路径,ln_test1_4文件移动位置之后不能正常使用。
    ln test1.txt ln_test1_4
    

3.7 查看文件 cat

  • 命令语法:

    # 查看文件
    cat [选项] 文件
    
    # 合并文件
    cat 文件1 文件2 > 文件3
    
  • 命令功能:cat命令用来把文件的内容输出到标准输出,或用来连接合并文件。

  • 命令说明:cat命令一般用于查看比较小的文件。

  • 命令选项:

    选项 说明
    -A 将文件中的制表符显示为 “^I” ,同时将第行的换行符显示为 “$”
    -b 将文件中的所有非空行按顺序编号,编号从1开始
    -n 将文件中的所有行按顺序编号,编号从1开始
    -T 将文件中的制表符显示为 “^I”
  • 命令示例:

    # 把当前目录下的test.txt文件的内容输出到标准输出
    cat test.txt
    
    # 把当前目录下的test.txt文件的内容输出到标准输出,并对制表符和换行符进行转换
    cat -Ab test.txt
    
    # 把当前目录下的test.txt和test2.txt这两个文件的内容合并到存放在当前目录下的test3.txt文件中
    cat test.txt test2.txt > test3.txt
    

3.8 查看文件 more

  • 命令语法:

    more [选项] 文件
    
  • 命令功能:more命令用于分页查看文件的内容,每次显示一屏,并且每屏后暂停。

  • 命令说明:

    快捷键 说明
    回车键 往前翻一行
    空格键 往前翻一页
    q 退出
  • 命令选项:

    选项 说明
    -d 在屏幕底部more提示符后显示友好的使用信息,包括继续、退出、帮助等信息
    -s 将输出文件中的多个空行减少为只有一个空行输出
    -p 先清除显示屏以前的信息,再显示文本信息
    -c 显示文件时,每屏显示都清除屏幕先前的信息,然后从最顶端显示出来
  • 命令示例:

    # 查看当前目录下的test.txt文件的内容
    more test.txt
    
    # 查看当前目录下的test.txt文件的内容,并在屏幕底部more提示符后显示友好的使用信息
    more -d test.txt
    

3.9 查看文件 less

  • 命令语法:

    less [选项] 文件
    
  • 命令功能:less命令用于分页查看文件的内容,每次显示一屏,并且每屏后暂停。

  • 命令说明:less命令是more的升级版,能够实现在文件中前后翻动,还有一些高级搜索功能。

    快捷键 说明
    回车键 往前翻一行
    空格键 往前翻一页
    Ctrl + p 往前翻一行
    Ctrl + n 往后翻一行
    Ctrl + b 往前翻一页
    Ctrl + f 往后翻一页
    q 退出
  • 命令选项:选项过多,请直接查看less命令的帮助文档,这里省略。

  • 命令示例:

    # 查看当前目录下的test.txt文件的内容
    less test.txt
    

3.10 查看文件 head

  • 命令语法:

    head [选项] 文件
    
  • 命令功能:head命令用于查看文件的前 n 行内容。

  • 命令选项:

    选项 说明
    -n 查看文件的前n行内容(如果没有指定,则是查看前10行)
  • 命令示例:

    # 查看当前目录下的test.txt文件的前10行内容
    head test.txt
    
    # 查看当前目录下的test.txt文件的前5行内容
    head -5 test.txt
    

3.11 查看文件 tail

  • 命令语法:

    tail [选项] 文件
    
  • 命令功能:tail命令用于查看文件的后 n 行内容。

  • 命令选项:

    选项 说明
    -n 查看文件的后n行内容(如果没有指定,则是查看后10行)
  • 命令示例:

    # 查看当前目录下的test.txt文件的后10行内容
    tail test.txt
    
    # 查看当前目录下的test.txt文件的后5行内容
    tail -5 test.txt
    

3.12 文件属性 wc

  • 命令语法:

    wc 文件
    
  • 命令功能:统计文件的行数、单词数、字节数。

  • 命令示例:

    # 统计当前目录下的test.txt文件内容的行数、单词数、字节数
    wc test.txt
    

3.13 文本比较 diff

  • 命令语法:

    diff [选项] 文件1 文件2
    
  • 命令功能:diff命令用来比较文件的差异,以逐行的方式比较文本文件的异同,如果指定比较的是目录,则diff会比较相同文件名的文件,但不会比较其中的子目录。

  • 命令说明:

  • 命令选项:

    选项 说明
    -c 显示全部内容,并标出不同之处
    -b 忽略行尾的空格,同时字符串中的一个或多个空格都将视为相同
    -r 文件1和文件2为目录时,会比较子目录中的文件
    -s 当两个文件相同时,显示文件的相同信息
  • 输出格式:

    n1 a n3, n4
    n1, n2 d n3
    n1, n2 c n3, n4
    < 文件1中的内容
    < 文件1中的内容
    --- 
    > 文件2中的内容
    > 文件2中的内容
    
  • 输出说明:字母a、d、c之前的n1和n2代表文件1的行号,字母a、d、c之后的n3和n4代表文件2的行号,字母a、d、c分别表示附加、删除、修改操作。在上面输出形式的每行后紧跟着两个文件的若干若干不同行,其中以 “<” 打头的行属于文件1,以 “>” 打头的行属于文件2。

  • 命令示例:

    # 比较当前目录下的test1.txt文件和test2.txt文件的内容
    diff test1.txt test2.txt
    	
    # 比较home目录下的user1目录和user2目录中的相同名称的文件的差异
    diff /home/user1 /home/user2
    

3.14 文本过滤 grep

  • 命令语法:

    grep [选项] 匹配模式 文件
    
  • 命令功能:grep命令是一种强大的文本过滤工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

  • 命令说明:匹配模式包括目标字符串、变量或者正则表达式,文件可以是一个,也可以是多个。

  • 命令选项:

    选项 含义
    -c 只打印匹配的文本行的行数,不显示匹配的内容
    -i 匹配时忽略字母的大小写
    -h 当搜索多个文件时,不显示匹配文件名前缀
    -n 列出所有的匹配的文本行,并显示行号
    -l 只列出含有匹配的文本行的文件的文件名,而不显示具体的匹配内容
    -s 不显示关于不存在或者无法读取文件的错误信息
    -v 只显示不匹配的文本行
    -w 匹配整个单词
    -x 匹配整个文本行
    -o 仅显示匹配到的字符串
    -r 递归搜索当前目录和子目录
    -q 禁止输出任何匹配结果,并以退出码的形式表示是否搜索成功(0表示成功,1表示失败)
    -b 打印匹配的文本行到文件头的偏移量,以字节为单位
    -A 数字 列出符合条件的行,并列出后续的 n 行
    -B 数字 列出符合条件的行,并列出前面的 n 行
    -E 支持扩展正则表达式
    -P 支持Perl正则表达式
    -F 不支持正则表达式,将模式按照字面意思匹配
  • 命令示例:

    # 统计content.txt中有多少行包含字符串 "is"
    grep -c "is" content.txt
    
    # 在content.txt中搜索包含字符串 "is" 的行,搜索时忽略大小写
    grep -i "is" content.txt
    
    # 在content.txt和readme.txt这两个文件中搜索包含字符串 "is" 的行,打印结果时结果前面不显示文件名前缀
    grep -h "is" content.txt readme.txt
    
    # 在content.txt中搜索包含字符串 "is" 的行,打印结果时在每行的前面打印出该行在content.txt文件中的行号
    grep -n "is" content.txt
    
    # 在content.txt和readme.txt中搜索包含字符串 "is" 的行,打印结果时只打印包含有搜索内容的文件的文件名
    grep -l "is" content.txt readme.txt
    
    # 在content.txt和readme.txt中搜索包含字符串 "is" 的行,打印结果时不打印不存在或无法读取的文件的错误信息
    grep -s "is" content.txt readme.txt
    
    # 在content.txt中搜索除了空行之外的所有行,即只打印非空行
    grep -v "^$" content.txt
    
    # 在content.txt中搜索包含有单词 is 的行
    grep -w "is" content.txt
    
    # 在content.txt中搜索内容为 I am admin. 的行
    grep -x "I am admin." content.txt
    
    # 在content.txt中搜索包含有字符串 "min" 的行,打印结果时只打印匹配到的字符串 “min”
    grep -o "min" content.txt
    
    # 在/home/admin目录下递归的搜索包含有字符串 "is" 的行
    grep -r "is" /home/admin
    
    # 在content.txt中搜索包含有字符串 "this" 的行,并以退出码的形式返回,如果返回的退出码为0表示找到了,为1表示没有找到
    grep -q "this" content.txt
    
    # 在content.txt中搜索包含有字符串 "is" 的行,并打印每一个匹配到的字符串 "is" 距文件头的偏移量(以字节为单位)
    grep -b "is" content.txt
    
    # 在content.txt中索引包含有字符串 "am" 的行,打印结果时打印出所有匹配的行,并打印出最后一个匹配行的后6行
    grep -A 6 "am" content.txt
    
    # 在content.txt中索引包含有字符串 "not" 的行,打印结果时打印出所有匹配的行,并打印出第一个匹配行的前4行
    grep -B 4 "not" content.txt
    
    # 以支持扩展的正则表达式的形式在content.txt中搜索包含有 888 的行
    grep -E "8{3}" content.txt
    

3.15 文件查找 find

  • 命令语法:

    find 目录 [选项] [-print -exec -ok linux命令 {} \;]
    
  • 命令功能:find命令用于在指定的目录下查找指定的文件。

  • 命令说明:"-exec linux命令 {} \;",在"}" 和 “\” 之间一定要用空格才行。

    选项 说明
    -print 将搜索结果输出到标准输出
    -exec 对搜索出符合条件的文件执行所给出的linux命令,而不用询问用户是否需要执行该命令。
    -ok 对索引出符合条件的文件执行所给出的linux命令,但是会询问用户是否需要执行该命令。
    { } 表示shell命令的选项即为所查找到的文件,命令的末尾必须以 “;” 结束。
  • 命令选项:

    选项 说明
    -name ‘字符串’ 查找文件名称匹配所给字符串的所有文件,字符串内可以使用通配符 *、?、[]
    -path ‘字符串’ 查找路径名称匹配所给字符串的所有文件,字符串内可以使用通配符 *、?、[]
    -mtime +n 或 -n 按时间搜索, +n表示n天之前的, -n表示今天到n天前之间的
    -type 文件类型 按指定文件类型搜索。文件类型包括:b(块设备文件)、c(字符设备文件)、f(普通文件)、
    l(符号链接)、d(目录)、p(管道)、s(socket文件)
    -size n 查找文件长度为n块的文件,带有c时表示文件长度以字节计
    -gid n 查找属于ID号为n的用户组的所有文件
    -uid n 查找属于ID号为n的用户的所有文件
    -group ‘字符串’ 查找属于用户组名为指定字符串的所有的文件
    -user ’字符串‘ 查找属于用户名为所给字符串的所有的文件
    -depth 在查找文件时,首先查找当前目录下的文件,然后再查找其子目录下的文件
    -empty 查找大小为0的目录或文件
    -prune 目录 指定搜索时不搜索该目录。如果同时使用-depth选项,那么-prune将被find命令忽略
  • 命令示例:

    # 在系统根目录下,查找文件类型为普通文件,属于admin用户,两天之前,
    # 并且查找时不包含/user/bin目录的文件名为main.c的文件,并将结果输出到屏幕
    find / -path "/usr/bin" -prune -o -name "main.c" -user admin -type f -mtime +2 -print
    
    # 对上例中搜索的结果进行删除操作
    find / -path "/usr/bin" -prune -o -name "main.c" -user admin -type f -mtime +2 -print -exec rm {} \;
    	
    # 在系统根目录下查找不在/var/log 和 /usr/bin目录下的所有普通文件,并将结果输出到屏幕
    find / \(-path /var/log -o -path /usr/bin \) -prune -o -type f -print)
    
    # 在系统根目录中查找所有大小为0的普通文件,并列出它们的完整路径
    find / -type f -size 0 -exec ls -al {} \;
    
    # 在/var/log目录中查找修改时间在7天之前的普通文件,然后以交互方式删除
    find /var/log -type f -mtime +7 -ok rm {} \;
    
    # 在当前目录及其子目录下查找所有后缀名为txt的文件
    find . -name "*.txt" -print
    
    # 在用户宿主目录下查找文件名以一个大写字母开头,紧接着一个小写字母和两个数字,最后以.txt结尾的文件
    find ~ -name "[A-Z][a-z][0-9][0-9]*.txt" -print
    
    # 在/etc目录下查找文件属主为admin用户的所有文件
    find /etc -user admin -print
    

3.16 文件分割 split

  • 命令语法:

    split [选项] [需要分割的文件] [分割成的文件序列]
    
  • 命令功能:split命令用于把一个文件分割成数个文件。

  • 命令说明:

  • 命令选项:

    选项 说明
    -b size 指定分割出来的文件大小,size可加入单位,b代表512字节,k代表1KB,m代表1MB
    -n 指定分割的每个文件的长度,默认为1000行
    -d 将生成的文件序列以数字形式命名
    -a 将生成的文件序列的长度,默认长度为2
  • 命令示例:

    # 将当前目录下的access_log文件进行分割,指定每个分割文件的大小为10MB
    # 执行完后,在当前目录下生成类似access_log_bakaa、access_log_bakab等文件,每个文件大小10MB
    split -b 10M access_log access_log_back
    
    # 将/opt/etc.zip文件进行分割,指定每个分割文件的大小为2MB,以数字形式命名,序列长度为3
    # 执行完后,在/opt目录下生成类似etc.zip_back001、etc.zip_back002等文件,每个文件2MB
    split -b 2M -d -a 3 /opt/etc.zip /opt/etc.zip_back
    

4 用户和组

4.1 当前用户 whoami

  • 命令语法:

    whoami
    
  • 命令功能:whoami命令用于显示当前登录用户。

  • 命令说明:该命令不带有任何选项和参数。

  • 命令示例:

    # 查看当前登录肪
    whoami
    

4.2 切换用户 su

  • 命令语法:

    su [选项] [用户]
    
  • 命令功能:su命令用于切换用户。

  • 命令选项:

    选项 说明
    - 加载相应用户下的环境变量
    -l 使目前的shell成为切换用户后用户默认的shell
    -c 切换用户运行一个指令后就结束
    -m 切换用户,但不改变环境变量
  • 命令示例:

    # 普通用户切换到超级用户root(执行命令后按提示输入超级用户密码,即可转变为超级用户)
    su
    
    # 普通用户切换到超级用户root(执行命令后按提示输入超级用户密码,即可转变为超级用户)
    su -
    
    # 在当前普通用户登录的情况下,修改超级用户root的密码(执行命令后按提示输入超级用户密码)
    su -c passwd
    
    # 从当前用户切换到普通用户user1
    su user1
    
    # 退回到之前的用户
    exit
    

4.3 创建用户 useradd

  • 命令语法:

    useradd [选项] 用户名
    
  • 命令功能:useradd命令用于创建一个新用户。

  • 命令说明:useradd命令不加任何选项创建用户时,系统首先读取用于添加用户的配置文件 /etc/login.defs 和 /etc/default/useradd,根据这两个配置文件中定义的规则添加用户;然后向 /etc/passwd 和 /etc/group 文件添加用户和用户组记录,同时 /etc/passwd 和 /etc/group 对应的加密文件也会自动生成记录;接着系统会自动在 /etc/default/useradd 文件设置的宿主目录下建立用户宿主目录;最后复制 /etc/skel 目录中的所有文件到新用户的宿主目录中,这样一个新用户就创建完成了。

  • 命令选项:

    选项 说明
    -u uid 为新建用户指定一个唯一的标识号
    -g group 为新建用户指定一个默认组(也叫主组),此组必须已经存在。默认是100
    -G group 为新建用户指定一个或多个附加组,此组必须已经存在
    -p password 为用户账户指定默认的密码
    -d home 指定新建用户的默认宿主目录。默认是/home
    -m 创建用户的宿主目录
    -M 不创建用户的宿主目录(当默认设置里要求创建时才使用这个选项)
    -s shell 指定新建用户使用的默认shell。默认是/bin/bash
    -r 创建系统账户
    -n 创建一个与新建用户同名的新组
    -c comment 给新建用户添加备注
    -e expire 指定用户账户的过期时间,日期格式为 MM/DD/YY
    -f inactive_days 指定账号过期多少天后永久停用。0表示一过期就立即被停用,-1表示禁用这个功能。默认是 -1
  • 命令示例:

    # 创建一个名为zhangsan的新用户,指定用户组为admin,宿主目录为/home/zhangsan,创建宿主目录,且用户密码为00000000
    useradd -g admin -d /home/zhangsan -m -p 00000000 zhangsan
    

4.4 删除用户 userdel

  • 命令语法:

    userdel [选项] 用户
    
  • 命令功能:userdel命令用于删除一个用户。

  • 命令说明:不加任何选项时,默认只会删除 /etc/passwd 中的用户信息,而不会删除系统中属于该账户的任何文件。

  • 命令选项:

    选项 说明
    -r 删除用户的同时删除用户的宿主目录和邮件目录
  • 命令示例:

    # 删除zhangsan用户,并同时删除该用户的宿主目录和邮件目录
    userdel -r zhangsan
    

4.5 修改用户 usermod

  • 命令语法:

    # 修改用户信息(也能够修改账户密码)
    usermod [选项] 用户
    
    # 用于修改账户密码
    passwd 用户
    
  • 命令功能:usermod命令用于修改用户的信息

  • 命令说明:

  • 命令选项:

    选项 说明
    -u uid 修改用户的唯一标识号
    -g group 修改用户所属的组,此组必须已经存在
    -G group 修改用户所属的附加组,此组必须已经存在
    -p password 修改用户账户的密码
    -d home 修改用户的宿主目录
    -s shell 修改用户使用的shell
    -c comment 修改用户的备注
    -e expire 修改用户账户的过期时间,日期格式为 MM/DD/YY
    -l new_name 修改用户账户的名称
    -f inactive_days 修改用户账号过期多少天后永久停用。0表示一过期就立即被停用,-1表示禁用这个功能。默认是 -1
    -L 锁定账户,使用户无法登录
    -U 解除锁定,使用户能够登录
  • 命令示例:

    # 修改用户zhangsan所属的组为root、所属的附加组为user1和user2、使用的shell为/bin/bash
    usermod -g root -G user1,usr2 -s /bin//bash zhangsan
    
    # 锁定用户zhangsan的账户
    usermod -L zhangsan
    
    # 解除锁定用户zhangsan的账户
    usermod -U zhangsan
    
    # 修改用户zhangsan的密码,执行该命令后会进一步提示输入新密码
    passwd zhangsan
    

4.6 当前组 groups

  • 命令语法:

    groups [用户]
    
  • 命令功能:groups命令用于查看指定用户所属的全部组。

  • 命令说明:如果省略用户,则查看的是当前已登录用户所属的全部组。

  • 命令示例:

    # 查看当前已登录用户的全部组
    groups
    
    # 查看超级用户root所属的全部组
    groups root
    

4.7 切换组 newgrp

  • 命令语法:

    newgrp 用户组
    
  • 命令功能:newgrp命令用于切换用户组,以便具有其它用户组的权限。

  • 命令说明:切换用户组的前提是用户同时属于多个用户组。

  • 命令示例:

    # 把当前已登录用户切换到用户组group2(用户同时属于多个用户组,且包含用户组group2)
    newgrp group2
    

4.8 创建组 groupadd

  • 命令语法:

    groupadd [选项] 用户组
    
  • 命令功能:groupadd命令用于创建一个新用户组。

  • 命令说明:

  • 命令选项:

    选项 说明
    -g gid 指定新建用户组的唯一标识号,此标识号必须唯一,不能和其它用户组的gid重复
    -o 一般与 -g 选项同时使用,表示新建的用户组的gid可以与系统已有用户组的gid相同
  • 命令示例:

    groupadd -g 1020 linuxfans
    

4.9 修改组 groupmod

  • 命令语法:

    groupmod [选项] 用户组
    
  • 命令功能:groupmod命令用于修改用户组的信息。

  • 命令选项:

    选项 说明
    -g gid 修改用户组的唯一标识号
    -n new_name 修改改用户组的名称
    -o 允许使用重复的gid
  • 命令示例:

    # 修改用户组group的名称为group1
    groupmod -n group group1
    

4.10 删除组 groupdel

  • 命令语法:

    groupdel  用户组
    
  • 命令功能:groupdel命令用于删除一个用户组。

  • 命令说明:如果用户组中包括某些用户,则必须先删除这些用户之后,才能删除用户组。

  • 命令示例:

    groupdel linuxfans
    

5 文件权限

5.1 查看权限 ls

  • 命令语法:

    ls -al
    
  • 命令说明:ls 命令带有选项 -al 时,可以查看文件以及目录的长信息,包括:文件类型和权限、链接数、属主、属组、大小、最后修改日期、名称。示例如下图所示:
    在这里插入图片描述

  • 文件类型:

    类型 说明
    - 代表文件
    d 代表目录
    l 代表链接
    c 代表字符型设备文件
    b 代表块型设备文件
    n 代表网络设备文件
  • 权限符号:

    类型 说明
    r 代表具有读的权限
    w 代表具有写的权限
    x 代表具有执行的权限
    - 代表没有对应的权限
  • 权限组合:权限包括9位,前3位表示文件属主的权限、中间3位表示文件属组的权限、最后3位表示其它用户的权限。每3位都是按照读权限、写权限、执行权限的顺序组合的。

  • 权限码值:

    权限 二进制值 八进制值 说明
    - - - 000 0 没有任何权限
    - - x 001 1 只有执行的权限
    - w - 010 2 只有写的权限
    - w x 011 3 有写和执行的权限
    r - - 100 4 只有读的权限
    r - x 101 5 有读和执行的权限
    r w - 110 6 有读和写的权限
    r w x 111 7 有全部权限

5.2 修改权限 chmod

  • 命令语法:

    # 使用字符设定法设置权限
    chmod [操作对象] [操作符] [权限组合] 文件或目录
    
    # 使用数字设定法设置权限
    chmod [属主权限的数字组合][属组权限的数字组合][其他用户权限的数字组合] 文件或目录
    
  • 命令功能:chmod命令用于修改文件或目录的访问权限。

  • 命令说明:即可以使用字符设定法设置权限,也可以使用数字设定法设置权限。

  • 命令选项:
    操作对象:

    选项 说明
    u 表示用户(user),即属主
    g 表示用户组(group),即属组
    o 表示其他人(other)
    a 表示所有人(all),默认选项

    操作符号:

    选项 说明
    + 表示添加某个权限
    - 表示取消某个权限
    = 表示赋予给定权限
  • 命令示例:

    # 修改test.txt文件的权限:属主具有全部权限,属组添加写的权限,其他人取消写的权限
    chmod u=rwx,g+w,o-w test.txt
    
    # 修改test.txt文件的权限:属主权限为7(rwx),属组权限为6(rw-),其他人权限为5(r-x)
    chmod 765 test.txt
    

5.3 修改属主和属组 chown

  • 命令语法:

    # 只修改属主
    chown [选项] 用户 文件或目录
    
    # 同时修改属主和属组
    chown [选项] 用户:用户组 文件或目录
    
  • 命令功能:chown命令用于修改文件或目录的属主和属组。

  • 命令说明:

  • 命令选项:

    选项 说明
    -R 递归修改某个目录及其子目录下的所有的文件和目录
  • 命令示例:

    # 把当前目录下的test.txt文件的属主修改为root用户
    chown root test.txt
    
    # 把当前目录下的test.txt文件的属主修改为root用户、属组修改为root用户组
    chown root:root test.txt
    
    # 递归地把/home/admin目录及其子目录下的文件和目录的属主修改为root用户
    chown -R root /home/admin
    
    # 递归地把/home/admin目录及其子目录下的文件和目录的属主修改为root用户、属组修改为root用户组
    chown -R root:root /home/admin
    

6 压缩解压

6.1 打包归档 tar

  • 命令语法:

    # 打包
    tar [主要选项+辅助选项] 要生成的文件 要打包的文件或目录
    
    # 还原
    tar [主要选项+辅助选项] 要还原的文件 -C 还原后存放的目录
    
  • 命令功能:tar是linux下经常使用的打包和还原的工具,能够把多个文件或目录打包归档成为一个文件,也能把打包归档文件还原出各个文件。

  • 命令说明:打包时必须指定 -c 选项,还原时必须指定 -x 选项。如果不指定 -z 或 -j 选项,打包时不会进行压缩,还原时不会进行解压。还原时,指定的存放目录必须已经存在。

  • 命令选项:
    主要选项:

    选项 说明
    -c 创建归档文件:用于把多个文件打包归档成为一个文件
    -x 还原归档文件:用于从打包归档的文件中还原出各文件
    -t 查看档案文件中已经归档的文件列表
    -r 追加文件到已存在的档案文件的末尾
    -u 更新档案文件中的旧文件为新的文件

    辅助选项:

    选项 说明
    -z 调用 gzip 命令在文件打包的过程中压缩 / 解压文件
    -j 调用 bzip2 命令在文件打包的过程中压缩 / 解压文件
    -v 显示处理的各个文件的详细信息
    -f -f 选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名(即包含路径的文件名)。
    如果是磁带,只需要指定磁带设备名即可。
    注意 -f 选项之后不能再跟任何其它选项,也就是说 -f 选项必须是tar命令的最后一个选项。
    -C 目录 在还原文件时,指定还原后所存放的目录
    -w 在还原文件时,把所有文件的修改时间设定为现在时间
    -Z 调用compress命令过滤档案
    -p 在文件归档的过程中,保持文件的属性不发生变化
    -N “yyyy/mm/dd” 在指定日期之后的文件才会打包到档案文件中
    --exclude 文件列表 在打包过程中,不将指定文件打包
  • 命令示例:

    # 打包:把/etc目录下的所有文件打包为etc.tar文件,且存在/opt目录下,打包时显示各个文件的详细信息
    tar -cvf /opt/etc.tar /etc
    
    # 还原:把/opt目录下的etc.tar文件还原到/home/admin/etc1目录下
    tar -xvf /opt/etc.tar -C /home/admin/etc1
    
    # 查看:查看当前目录下的files.tar文件中的所有文件列表
    tar -tvf files.tar
    
    # 追加:把当前目录下的files/a目录追加到files.tar的末尾
    tar -rvf files.tar files/a
    
    # 更新:修改了当前目录下的files目录中的test1.txt文件,并把修改后的文件更新到当前目录下的files.tar文件中
    tar -uvf files.tar files/test1.txt
    	
    # 日期:把当前目录下的files目录中2019年8月19日以后的文件打包为files.tar文件,且存在当前目录下
    tar -N "2019/08/19" -cvf files.tar files
    
    # 排除:把当前目录下的files目录打包为files.tar文件,且存在当前目录下,但打包时排除files目录下的a目录
    tar --exclude files/a -cvf files.tar files
    
    
    
    # 压缩打包:把当前目录下的files目录中的所有文件打包为file.tar.gz文件,且存在/home目录下,打包时使用gzip进行压缩
    tar -zcvf /home/files.tar.gz files
    
    # 压缩打包:把当前目录下的files目录中的所有文件打包为file.tar.bz2文件,且存在/home目录下,打包时使用bzip2进行压缩
    tar -jcvf /home/files.tar.bz2 files
    
    # 解压还原:把/home目录下的files.tar.gz文件还原到当前目录下的file1目录中,还原时使用gzip进行解压
    tar -zxvf /home/files.tar.gz -C files1
    
    # 解压还原:把/home目录下的files.tar.bz2文件还原到当前目录下的file2目录中,还原时使用bzip2进行解压
    tar -jxvf /home/files.tar.bz2 -C files2
    

6.2 压缩解压 gzip / gunzip

  • 命令语法:

    # 压缩和解压
    gzip [选项] 要压缩或解压的文件
    
    # 解压
    gunzip 要解压的文件
    
  • 命令功能:gzip命令用于将一般的文件进行压缩和解压,压缩文件预设的扩展名为 “.gz”,而gunzip是gzip的硬链接,所以无论是压缩或者解压都可以通过gzip来完成。

  • 命令说明:gzip命令只能对文件进行压缩,而不能压缩目录。如果指定压缩目录,则只能压缩目录内的所有文件。压缩时,每个文件单独压缩成为一个.gz文件。

  • 命令选项:

    选项 说明
    -r 递归式压缩指定目录及其子目录下的所有文件
    -d 对压缩的文件进行解压
    -v 对于每个压缩和解压的文档,显示相应文件名和压缩比
    -num 指定压缩比,-1 或 -fast 表示最低压缩比,-9 或 -best 表示最高压缩比。默认为6
    -t 检查压缩文件的完整性
    -l 显示压缩文件的压缩信息,显示字段为压缩文档大小、未压缩文档大小、压缩比和未压缩文档名称
  • 命令示例:

    # 压缩文件:把当前目录下的files目录中的test1.txt文件压缩成test1.txt.gz
    gzip files/test1.txt
    
    # 递归压缩目录:递归压缩当前目录下的files目录及其子目录中的文件
    gzip -r files
    
    # 压缩显示压缩比:递归压缩当前目录下的files目录及其子目录中的文件,并显示相应文件名和压缩比
    gzip -rv files
    
    # 压缩指定压缩比:压缩当前目录下的files目录中的test1.txt文件,并指定压缩比为最高压缩比
    gzip -9 files/test1.txt
    
    
    # 解压文件:解压当前目录下的files目录中的压缩文件test.txt.gz
    gzip -d files/test1.txt.gz
    
    # 解压显示压缩比:解压当前目录下的files目录中的压缩文件test.txt.gz,并显示相应文件名和压缩比
    gzip -dv files/test1.txt.gz
    
    
    # 检查完整性:检查当前目录下的files目录中的压缩文件test1.txt.gz的完整性
    gzip -t files/test1.txt.gz
    
    # 显示压缩信息:查看当前目录下的files目录中的压缩文件test1.txt.gz的压缩信息
    gzip -l files/test1.txt.gz
    
    
    # 解压文件:解压当前目录下的files目录中的压缩文件test1.txt.gz
    gunzip files/test1.txt.gz
    

6.3 压缩解压 bzip2 / bunzip2

  • 命令语法:

    bzip2 [选项] 要压缩或解压的文件
    
    bunzip2 要解压的文件
    
  • 命令功能:bzip2命令用于将一般的文件进行压缩和解压,压缩文件预设的扩展名为 “.bz2”,而bunzip2是bzip的软链接,所以无论是压缩或者解压都可以通过bzip2来完成。

  • 命令说明:bzip2命令只能对文件进行压缩,而不能压缩目录。如果指定压缩目录,则只能压缩目录内的所有文件。压缩时,每个文件单独压缩成为一个.bz2文件。

  • 命令选项:

    选项 说明
    -d 解压时,该选项后面紧跟要解压的文件
    -v 压缩或解压文件时,显示详细信息
    -k 压缩或解压后,会删除原始文件,若要保留原始文件,则可以使用该选项
    -f 压缩或解压时,如果已经存在同名文件,则覆盖。默认不覆盖
    -t 检查压缩文件的完整性
    -num 指定压缩级别,压缩级别为1-9的数字,数字越大,压缩率越高
  • 命令示例:

    # 压缩:把当前目录下的files目录中的test1.txt文件和test2.txt文件分别压缩成为test1.txt.bz2和test2.txt.bz2
    bzip2 files/test1.txt files/test2.txt
    
    # 压缩:把当前目录下的files目录中的txt文件进行压缩,压缩时显示详细信息、保留原文件、存在同名文件则覆盖、最高压缩比
    bzip2 -9vkf files/*.txt
    
    # 解压:解压当前目录下的files目录中的test1.txt.bz2文件
    bzip2 -d files/test1.txt.bz2
    
    # 解压:解压当前目录下的files目录中的test2.txt.bz2言论的,显示详细信息、保留原文件、存在同名文件则覆盖
    bzip2 -dvkf files/test2.txt.bz2
    
    # 解压:解压当前目录下的files目录中的所有bz2文件,显示详细信息、保留原文件、存在同名文件则覆盖
    bunzip -vkf files/*.bz2
    

6.4 压缩解压 zip / unzip

  • 命令语法:

    # 压缩
    zip [选项] 要生成的压缩文件 需要压缩的文件或目录
    
    # 解压
    unzip [选项] 要解压的压缩文件 -d 解压后存放的目录
    
  • 命令功能:zip命令用于把文件或目录进行压缩成为后缀名为 .zip 的压缩包;unzip命令用于解压压缩包。

  • 命令说明:使用unzip命令解压时,解压后存放的目录如果不存在,则自动创建。

  • 命令选项:

    zip 的选项:

    选项 说明
    -r 递归压缩:把指定目录下的文件及子目录全部压缩
    -i 文件列表 只压缩文件列表中的文件
    -x 文件列表 压缩时排除文件列表中的文件
    -d 从压缩文件中删除指定的文件
    -u 把修改后的文件更新到压缩文件中
    -m 把文件移动到压缩文件中
    -F 尝试修复损坏的压缩文件
    -T 检查压缩文件中的每个文件是否正确无误
    - 压缩级别 设置压缩级别:压缩级别是 1-9 之间的一个数字

    unzip 的选项:

    选项 说明
    -d 目录 把压缩文件解压到指定目录下
    -x 文件列表 解压文件,但不包含文件列表中的文件
    -n 解压时不覆盖已经存在的文件
    -o 解压时覆盖已经存在的文件,并且不要求用户确认
    -t 测试压缩文件有无损坏,但不解压
    -v 查看压缩文件的详细信息,具体包括压缩文件中包含的文件大小、文件名和压缩比等,但不解压
  • 命令示例:

    # 压缩文件:把当前目录下的files目录中的test1.txt文件和test2.txt文件压缩到test.zip文件,且存在/home目录下
    zip /home/test.zip files/test1.txt files/test2.txt
    
    # 压缩目录:把当前目录下的files目录及其子目录压缩为files.zip文件,且存在/home目录下
    zip -r /home/files.zip files
    
    # 指定文件:把当前目录下的files目录及其子目录中的.txt文件压缩为files.zip文件,且存在/home目录下
    zip -r /home/files.zip files -i "*.txt"
    
    # 排除文件:把当前目录下的files目录及其子目录中的除了.sh文件之外所有文件压缩为files.zip文件,且存在/home目录下
    zip -r /home/files.zip files -x "*.sh"
    
    # 删除文件:把/home目录下的压缩文件files.zip中的files/test1.txt文件从压缩文件中删除
    zip /home/files.zip -d files/test1.txt
    
    # 更新文件:修改了当前目录下的files目录中的test1.txt文件,并把更新后的文件更新到/home目录下的files.zip压缩文件中
    zip /home/files.zip -u files/test1.txt
    
    # 移动文件:把当前目录下的test1.sh文件移动到/home目录下的files.zip压缩文件中
    zip /home/files.zip -m test1.sh
    
    # 压缩级别:把当前目录下的files目录及其子目录压缩为files.zip文件,并指定压缩级别为9,且存在/home目录下
    zip -9r /home/files.zip files
    
    
    # 解压文件:把/home目录下的files.zip压缩文件解压到当前目录下
    unzip /home/files.zip
    
    # 解压文件:把/home目录下的files.zip压缩文件解压到当前目录下的files1目录中
    unzip /home/files.zip -d files1
    
    # 排除文件:把/home目录下的files.zip压缩文件解压到当前目录下的files2目录中,解压时排除files/目录下的test1.txt文件
    unzip /home/files.zip -x files/test1.txt -d files2
    
    # 压缩覆盖:把/home目录下的files.zip压缩文件解压到当前目录下的files3目录中,解压时如果已经存在对应的文件则覆盖
    unzip -o /home/files.zip -d files3
    

7 磁盘管理

7.1 系统分区 df

  • 命令语法:

    df [选项]
    
  • 命令功能:df 命令用来检查Linux系统的磁盘空间占用情况。

  • 命令选项:

    选项 说明
    -h 以容易理解的格式输出文件系统分区占用情况,如 32KB、120MB、5GB
    -k 以KB为单位输出文件系统分区占用情况
    -m 以MB为单位输出文件系统分区占用情况
    -a 列出所有的文件系统分区,包含大小为0的文件系统分区
    -i 列出文件系统分区的inode信息
    -T 显示磁盘分区的文件系统类型
  • 命令示例:

    # 查看当前系统磁盘分区情况,并显示文件系统类型,输出文件系统的inode信息、并以容易理解的格式输出(结果如下图所示)
    df -hiT
    
  • 示例结果:
    Linux命令学习笔记_第1张图片

7.2 占用空间 du

  • 命令语法:

    du [选项] [文件或目录]
    
  • 命令功能:du 命令用来显示文件或目录所占用的磁盘空间情况。

  • 命令说明:如果省略了文件或目录,则显示的是当前目录的大小。

  • 命令选项:

    选项 说明
    -sh 以容易理解的格式显示文件的大小或者整个目录的大小,如 32KB、120MB、5GB
    -b 以字节为单位显示文件的大小或者目录下每个文件的大小
    -s 以KB为单位显示文件的大小或者整个目录的大小
    -sm 以MB为单位显示文件的大小或者整个目录的大小
  • 命令示例:

    # 以容易理解的格式显示当前目录下每个文件的大小
    du -sh ./*
    
    # 以容易理解的格式显示/etc目录的总大小
    du -sh /etc
    
    # 以MB为单位显示/etc目录的总大小
    du -sm /etc
    
  • 示例结果:
    Linux命令学习笔记_第2张图片

7.3 分区修复 fsck

  • 命令语法:

    fsck [选项] [-t <文件系统类型>] [设备名]
    
  • 命令功能:fsck命令用来检查文件系统并尝试修复错误。

  • 命令说明:"-t <文件系统类型>" 是指要检查的文件系统类型。

  • 命令选项:

    选项 说明
    -a 自动修复文件系统,没有任何提示
    -r 交互式修复文件系统,修复前进行确认
    -A 依照 /etc/fstab 配置文件的内容,检查文件内所列的全部文件系统
    -T 执行 fsck 命令时,不显示标题信息
    -V 显示 fsck 命令的执行过程
    -N 不执行命令,仅列出实际执行会进行的操作
  • 命令示例:

    # 检查并尝试修复出问题的磁盘分区 /dev/sda2,在执行修复前进行修复确认,并且显示修复的详细过程
    fsck -rV -t xfs /dev/sda2
    

7.4 同步内存 sync

  • 命令语法:

    sync
    
  • 命令功能:sync命令用来强制把内存中的数据写回磁盘,以免数据的丢失。

  • 命令说明:Linux系统中,修改过的操作会缓存到内存中,不会马上写入磁盘,等待适当的时候再从内存写入磁盘,这样可以提高系统读写效率。Linux下默认每隔3秒系统执行一个sync命令,系统正常关机时也会执行sync操作,保证所有操作全部从内存写入磁盘。如果非法关机,系统内存信息无法及时同步到磁盘,就会造成数据丢失或者文件损坏,由此可见,Linux系统中正常关机 是非常重要的.

  • 命令示例:

    # 强制把内存中的数据写回磁盘
    sync
    

8 网络管理

8.1 网卡管理 ifconfig

  • 命令语法:

    ifconfig [选项] [网络接口 [操作]
    
  • 命令功能:ifconfig 命令用来配置网络或显示当前网络接口状态。

  • 命令说明:ifconfig 命令必须以root用户来执行。ifconfig 命令与 windows 下的 ipconfig 命令具有相同的功能。

  • 命令选项:

    选项 说明
    -a 显示所有的网络接口信息,包括活动的和非活动的
    -s 仅显示每个网络接口的摘要数据(关于网络接口活动性的数据)
    -v 如果某个网络接口出现错误,将返回错误信息,以帮助发现和处理故障
  • 命令操作:

    操作 说明
    ip地址 给网络接口设置ip地址
    netmask 子网掩码 给网络接口设置子网掩码
    up 激活网络接口
    down 禁用网络接口
  • 命令示例:

    # 查看当前系统所有网络接口信息
    ifconfig
    
    # 设置网卡ens33的ip地址
    ifconfig ens33 192.168.142.128
    
    # 设置网卡ens33的ip地址和子网掩码
    ifconfig ens33 192.168.142.128 netmask 255.255.255.0
    
    # 禁用网卡ens33
    ifconfig ens33 down
    
    # 启用网卡ens33
    ifconfig ens33 up
    

8.2 网络连接 netstat

  • 命令语法:

    netstat [选项]
    
  • 命令功能:netstat 命令用来显示本机网络连接、监听端口号和路由表等信息。

  • 命令选项:

    选项 说明
    -a 显示本机所有连接和监听端口号
    -n 以IP地址的形式显示当前建立的有效连接和端口号
    -r 显示路由表信息
    -s 显示按协议的统计信息
    -v 显示当前的有效连接
    -t 显示所有的TCP协议连接情况
    -u 显示所有的UDP协议连接情况
    -c 秒数 表示每隔几秒就刷新显示一次
    -i 显示自动配置接口的状态
    -l 仅显示连接状态为 LISTEN 的服务的网络状态
    -p 显示连接对应的 PID 与程序名
  • 命令示例:

    # 显示当前系统的路由信息
    netstat -rn
    
    # 显示当前系统中所有有效的TCP连接和端口号
    netstat -ant
    
    # 显示目前系统中已经启动的TCP连接和UDP连接以及对应的端口号
    netstat -ntulp
    
    # 查看当前处理连接状态的资源信息
    netstat -antup
    

8.3 网络测试 ping

  • 命令语法:

    ping [选项] ip地址或域名
    
  • 命令功能:ping 命令用来检测网络的连通情况和分析网络速度。

  • 命令选项:

    选项 说明
    -i ttl 指定"生存时间",即每隔多久ping一次,单位为毫秒
    -w timeout 指定超时时间,单位为毫秒
    -c count 指定发送的数据包的个数,即ping的次数
    -s size 指定发送的数据包的大小,默认为64字节,最大值是65527字节
    -f 极限检测,快速连续ping一台主机,ping的速度达到100次每秒
    -a 将地址解析为计算机名
    -b 允许ping一个广播地址
    -t ping指定的主机直到中断
    -4 强制使用ipv4
    -6 强制使用ipv6
  • 命令示例:

    # ping一个ip地址
    ping 192.168.142.128
    
    # ping一个域名
    ping www.baidu.com
    
    # 每隔 2 秒ping一次,共 5 次
    ping -i 2 -c 5 www.baidu.com
    
    # 以最快的速度,并使用最大的包进行ping,可用于测试目标主机的承压能力
    ping -f -s 65527 192.168.142.128
    
    # ping网关
    ping -b 192.168.142.128
    

8.4 网络传输 scp

  • 命令语法:

    # 把远程Linux系统上的某个文件或目录复制到本地
    scp [选项] 远程用户名@ip地址:远程Linux系统的文件或目录 本址Linux系统的目录
    
    # 把本地的某个文件或目录复制到远程Linux系统上
    scp [选项] 本地Linux系统的文件或目录 远程用户名@ip地址:远程Linux系统的目录
    
  • 命令功能:scp 命令用于把文件或目录从一个Linux系统复制到另一个Linux系统中。

  • 命令说明:scp 命令传输数据用的是SSH协议,保证了数据传输的安全。命令执行之后要求输入账户密码才开始复制。

  • 命令选项:

    选项 说明
    -r 复制目录时,递归的复制目录中的文件及其子目录
  • 命令示例:

    # 把本地/home/admin目录下的files.tar.gz文件复制到远程系统的/home目录下
    scp /home/admin/files.tar.gz [email protected]:/home
    
    # 把远程系统的/home目录下的files.tar.gz文件复制到本地的/home目录下
    scp [email protected]:/home/files.tar.gz /home
    
    # 把本地/home/admin目录下的files目录中所有文件和子目录复制到远程系统的/home目录下
    scp -r /home/admin/files [email protected]:/home
    	
    # 把远程系统的/home目录下的files目录中秘有文件和子目录复制到本地的/home目录下
    scp -r [email protected]:/home/files /home
    

8.5 网络下载 wget

  • 命令语法:

    wget [选项] [URL]
    
  • 命令功能:wget 命令用来从网络上下载某个资源文件。

  • 命令选项:

    选项 说明
    -V 显示 wget 的版本信息并退出
    -b 启动后转入后台(不打印下载信息)
    -d 调试模式下载(打印调试信息)
    -q 安静模式下载(不打任何信息)
    -v 详尽模式下载(打印下载信息),默认模式
    -nv 关闭详尽模式,但不进入安静模式
    -o FILE 将下载信息写入到 FILE
    -a FILE 将下载信息追加到 FILE
    -i FILE 下载 FILE 中的 URLs
    -O FILE 将下载的文件保存为 FILE
    -nc 不重复下载已存在的文件
    -c 继续下载部分下载的文件
    -N 只下载比本地文件新的文件
    -S 下载文件并打印服务器响应
    --tries=NUM 设置重试次数为 NUM (0 代表无限制)
    --limit-rate=RATE 限制下载速率为 RATE(例如 300k)
    --spider 测试下载链接是否有效,但不下载文件
    --user=USER 将 http 和 ftp 的用户名均设置为 USER
    --password=PASS 将 http 和 ftp 的密码均设置为 PASS
    --http-user=USER 设置 http 用户名为 USER
    --http-password=PASS 设置 http 密码为 PASS
    --ftp-user=USER 设置 ftp 用户名为 USER
    --ftp-password=PASS 设置 ftp 密码为 PASS
    -nd 不创建目录
    -x 强制创建目录
    -r 指定递归下载
    –level=NUM 最大递归深度( inf 或 0 代表无限制,即全部下载)
  • 命令示例:

    # 下载单个文件
    wget https://github.com/macrozheng/mall/blob/master/pom.xml
    
    # 下载多个文件:下载urls.txt文件里的url(urls.txt中每行都是一个url)
    wget -i urls.txt 
    
    # 设置文件保存的名称
    wget -O pom2.xml https://github.com/macrozheng/mall/blob/master/pom.xml
    
    # 后台下载
    wget -b http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso
    
    # 断点下载
    wget -c http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso 
    
    # 下载文件并打印服务器响应
    wget -S  https://github.com/macrozheng/mall/blob/master/pom.xml
    
    # 指定重试次数
    wget --tries=40 https://github.com/macrozheng/mall/blob/master/pom.xml
    
    # 限制下载速度
    wget --limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
    
    # 测试下载链接是否有效
    wget --spider https://github.com/macrozheng/mall/blob/master/pom.xml
    
    

8.6 远程登录 ssh

  • 命令语法:

    ssh [选项] 登录名@ip地址 [命令]
    
  • 命令功能:ssh 命令命令用来登录到远程主机或者远程执行命令,采用了加密技术,安全可靠。

  • 命令说明:ssh 默认的端口号是22,进程名为sshd。

  • 命令选项:

    选项 说明
    -1 强制使用ssh协议版本1
    -2 强制使用ssh协议版本2
    -4 强制使用IPv4地址
    -6 强制使用IPv6地址
    -A 开启认证代理连接转发功能
    -a 关闭认证代理连接转发功能
    -b 使用本机指定地址作为对应连接的源ip地址
    -C 压缩所有数据
    -F 指定ssh指令的配置文件
    -f 后台执行ssh指令
    -g 允许远程主机连接主机的转发端口
    -i 指定身份文件
    -l 指定连接远程主机使用的登录名
    -N 不执行远程指令
    -o 指定配置选项
    -p 指定远程服务器上的端口
    -q 进入安静模式
    -t 指定远程执行脚本
  • 命令示例:

    # 远程登录:使用登录名root登录远程主机192.168.142.128
    ssh [email protected]
    
    # 远程登录:使用登录名root登录远程主机192.168.142.128,并使用 -p 选项指定端口号
    ssh [email protected] -p 22
    
    # 远程登录:使用登录名root登录远程主机192.168.142.128,并使用 -b 选项绑定源地址
    ssh [email protected] -b 192.168.142.126 
    
    # 远程登录:使用本地当前登录用户的用户名登录远程主机192.168.142.128
    ssh 192.168.142.128
    
    # 远程登录:登录远程主机192.168.142.128,并使用 -l 选项指定登录名
    ssh 192.168.142.128 -l root
    
    # 远程登录:使用 -C 选项指定压缩所有数据
    ssh -C [email protected]
    
    # 远程登录:使用 -v 选项打开调试模式
    ssh -v [email protected]
    
    # 远程执行命令:连接到远程主机并执行命令(不会登录到远程主机)
    ssh [email protected] "ls -al"
    
    # 远程执行命令:连接到远程主机并执行脚本(不会登录到远程主机)
    ssh [email protected] -t "/home/root/test.sh"
    

9 系统管理

9.1 时间日期 date

  • 命令语法:

    date [选项] [+时间格式]
    
  • 命令功能:date 命令用来显示或者修改系统时间与日期。

  • 命令说明:只有超级用户才能用 date 命令设置时间,一般用户只能用 date 命令显示时间。时间格式前面要有 “+”。

  • 命令选项:

    选项 说明
    -s --set 设置系统时间
    -d --date 显示描述的日期
  • 时间格式:

    格式 说明
    %c 显示日期和时间,格式为 yyyy 年 MM 月 dd 日 星期几 HH 时 mm 分 ss 秒
    %x 显示日期,格式为 yyyy 年 MM 月 dd 日
    %D 显示日期,格式为 MM/dd/yy
    %y 或 %Y 显示年份,%y显示年份的最后两位,%Y显示完整的年份
    %b 或 %B 显示月份,%b是月的简称,%B是月的全称
    %m 显示月份,格式为 01 ~ 12
    %d 显示日,格式为 01 ~ 31
    %r 显示时间,格式为 AM / PM HH 时 mm 分 ss 秒
    %T 显示时间,格式为 HH:mm:ss
    %X 显示时间,格式为 HH 时 mm 分 ss 秒
    %H 显示小时,格式为 00 ~ 23
    %k 显示小时,格式为 0 ~ 23
    %I(大写字母) 显示小时,格式为 01 ~ 12
    %l(小写字母) 显示小时,格式为 1 ~ 12
    %M 显示分钟,格式为 00 ~ 59
    %S 显示秒钟,格式为 00 ~ 59
    %Z 显示时区
    %d 显示当天是当月的第几天
    %a 显示星期几
    %p 显示AM(上午)还是PM(下午)
  • 命令示例:

    # 显示当前日期、星期、时间、时区,输出结果如下行所示:
    # 2019年 08月 22日 星期四 15:23:03 CST
    date 
    
    # 显示当前日期、星期、时间,输出结果如下行所示:
    # 2019年08月22日 星期四 00时04分34秒
    date '+%c'
    
    # 显示当前日期,输出结果如下行所示:
    # 2019-08-22
    date '+%Y-%m-%d'
    
    # 用指定的格式显示时间和日期,输出结果如下行所示:
    # This date now is:2019年08月22日, time is now:15时17分22秒, thanks!
    date '+This date now is:%x, time is now:%X, thanks!'
    
    # 修改日期
    date -s 20190822
    
    # 修改时间
    date -s 15:19
    
    # 修改日期和时间
    date -s "20190822 15:19"
    
    # 显示两天前的日期,输出结果如下行所示:
    # 2019-08-20
    date -d "2 days ago" '+%Y-%m-%d'
    

9.2 当前用户 who

  • 命令语法:

    who [选项] [file]
    
  • 命令功能:who 命令用来显示目录登录到系统的用户的相关信息。

  • 命令说明:输出格式为:用户名 [状态] 终端 时间 [活动] [进程标识] (主机名)

  • 命令选项:

    选项 说明
    -a 列出所有信息,相当于所有选项
    -b 列出系统最近启动的日期
    -l 列出所有可登录的终端信息
    -m 仅列出关于当前终端的信息
    -q 列出在本地系统上的用户和用户数的清单
    -r 显示当前系统的运行级别
    -s 仅显示名称、终端和时间字段信息(这是who默认的输出)
    -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动和进程标识
    -T 或 -w 显示 tty 终端的状态:"+" 表示对任何人可写,"-" 表示仅对root用户或所有者可写,"?" 表示遇到终端故障
  • 命令示例:

    # 显示所有信息
    who -a
    
    # 显示系统的运行级别
    who -r
    
    # 显示系统最近启动日期,以及当前每个用户的登录详情、终端状态
    who -buT
    
  • 示例结果:
    Linux命令学习笔记_第3张图片

9.3 密码修改 passwd

  • 命令语法:

    passwd [用户名]
    
  • 命令功能:passwd 命令用于设置用户密码。

  • 命令说明:普通用户修改自己的密码时不需要指定用户名,超级用户修改某个用户的密码时需要指定用户名。

  • 命令示例:

    # 普通用户修改自己的密码(执行命令后要输入两次输入密码即可)
    passwd
    
    # 超级用户root修改普通用户user1的密码(执行命令后要输入两次输入密码即可)
    passwd user1
    

9.4 操作系统 uname

  • 命令语法:

    uname [选项]
    
  • 命令功能:uname 命令用来显示操作系统的相关信息。

  • 命令选项:

    选项 说明
    -a 显示操作系统的全部信息
    -m 显示系统CPU类型,是32位还是64位
    -n 显示操作系统的主机名
    -s 显示操作系统类型
    -r 显示操作系统内核版本
  • 命令示例:

    # 显示操作系统的全部信息
    uname -a
    
  • 示例结果:
    Linux命令学习笔记_第4张图片

9.5 内存状态 free

  • 命令语法:

    free [选项] [-s 间隔秒数]
    
  • 命令功能:free 命令用来显示系统内存状态,包括:物理内存、虚拟内存、共享内存、系统缓存。

  • 命令说明:

  • 命令选项:

    选项 说明
    -b 以字节为单位显示内存使用情况
    -k 以KB为单位显示内存使用情况
    -m 以MB为单位显示内存使用情况
    -g 以GB为单位显示内存使用情况
    -t 显示内存总和列
    -s 间隔秒数 根据指定的间隔秒数持续显示内存使用情况
  • 命令示例:

    # 默认以KB为单位显示内存使用情况
    free
    
    # 指定以MB为单位显示内存使用情况
    free -m
    
    # 指定以MB为单位显示内存使用情况,并且每隔3秒显示一次
    free -m -s 3
    
  • 示例结果:
    Linux命令学习笔记_第5张图片

9.6 系统监控 top

  • 命令语法:

    top [选项]
    
  • 命令功能:top 命令提供了对系统处理器状态的实时监控,它能够实时显示系统中各个进程的资源占用状态。该命令可以按照对CPU的使用、内存使用、执行时间对系统任务进程进行排序显示,同时 top 命令还可以通过交互式命令进行设定显示。

  • 命令说明:top 命令的功能类似于 windows 系统的任务管理器。

  • 命令选项:

    选项 说明
    -d 指定每隔多久刷新一次屏幕信息,单位是秒。默认是5秒刷新一次
    -i 不显示空闲进程和僵死进程的信息
    -c 显示进程的整个命令路径,而不是只显示命令名称
    -s 使 top 命令在安全模式下运行,此时 top 命令的交互指令被禁止,避免潜在危险
    -b 分屏显示输出信息,结合 -n 选项可以将屏幕信息输出到文档
    -n 输出信息更新的次数,完成后将退出 top 命令
  • 交互指令:在运行了 top 命令之后,即可以输入以下内容进行交互。

    指令 说明
    h 显示帮助信息,给出交互式命令的一些说明
    k 终止一个进程,系统将提示用户输入一个需要终止进程的PID
    i 忽略空闲进程和僵死进程,这是一个开关式命令
    s 改变屏幕信息刷新的时间间隔,系统将提示输入新的时间,单位是秒。
    如果输入小数,就换算成毫秒;如果输入0,则不断刷新;默认是5秒。
    m 切换显示内存信息
    t 切换显示进程和CPU信息
    l 切换显示平均负载和启动时间信息
    c 切换显示完整命令行和命令名称信息
    M 根据驻留内存大小进行排序输出
    P 根据CPU使用百分比进行排序输出
    T 根据时间/累计时间进行排序输出
    S 切换到累计模式
    W 将当前 top 设置写入 ~/.top 文件中
    q 退出 top 命令
  • 命令示例:

    # 显示系统处理器状态的实时监控信息,并指定不显示空闲进程和僵死进行的信息
    top -i
    
  • 示例结果:
    Linux命令学习笔记_第6张图片

9.7 查看进程 ps

  • 命令语法:

    ps [选项]
    
  • 命令功能:ps 命令用来显示系统进程在瞬间的运行状态。

  • 命令说明:ps 命令默认只显示使用者自己的进程。

  • 命令选项:

    选项 说明
    -a 显示所有用户的进程,包含每个程序的完整路径
    -x 显示所有系统程序,包括那些没有终端的程序
    -u 显示使用者的名称和起始时间
    -f 详细显示程序执行的路径群
    -c 只显示进程的名称,不显示进程的完整路径
    -e 只显示除内核进程以外的所有进程的信息
  • 命令示例:

    ps
    
    # 只查看用户的进程
    ps -a
    
    # 显示所有者的名称和起始时间
    ps -u
    
    # 显示进程的名称
    ps -c
    
    # 显示所有进程的详细信息
    ps -axuf
    
  • 命令示例:
    Linux命令学习笔记_第7张图片
    Linux命令学习笔记_第8张图片

9.8 结束进程 kill

  • 命令语法:

    kill [选项] [PID]
    
  • 命令功能:kill 命令用来给指定进程发送指定信号。如果没有指定信号,kill 命令就会发出 TERM(15) 信号,这个信号可以杀死不能捕获这个信号的进程。如果无法终止某个进程,则可以指定信号为 KILL(9) ,将强制结束进程。

  • 命令说明:kill 命令可以带有进程ID,当用 kill 命令向这些进程发送信号时,必须是这些进程的主人。

  • 命令选项:

    选项 说明
    -l 信号 如果不加信号的编号参数,则使用 -l 选项会列出全部的信号名称
    -a 当处理当前进程时,不限制命令名和进程号的对应关系
    -p 指定 kill 命令只打印相关进程的进程号,而不发送任何信号
    -s 指定发送信号
    -u 指定用户
  • 常用信号:

    信号码 信号名称 说明
    1 HUP 终端断线
    2 INT 中断(同 Ctrl + C)
    3 QUIT 退出(同 Ctrl + \)
    9 KILL 强制终止
    15 TERM 终止
    18 CONT 继续
    19 STOP 暂停
  • 命令示例:

    # 列出所有的信号名称
    kill -l
    
    # 获取KILL信号的信号码
    kill -l KILL
    kill -l SIGKILL
    
    # 结束进程ID为3268的进程
    kill 3268
    
    # 强制结束进程ID为3268的进程
    kill –9 3268
    
    # 结束用户user1的进程
    kill -u user1
    

9.9 服务启停 systemctl

  • 命令语法:

    systemctl 操作 服务名称
    
  • 命令功能:systemctl 命令可以用来启动、停止、重启、查看、启用、禁用服务。

  • 命令说明:

  • 命令操作:

    操作 说明
    start 启动一个服务
    stop 停止一个服务
    restart 重启一个服务:如果服务在运行中,则重启服务;如果服务不在运行中,则启动服务
    try-start 重启一个服务:只在服务已经是运行状态的情况下重启服务
    reload 重启一个服务:会重新加载配置文件
    status 查看服务的运行状态
    enable 允许服务开机启动
    disable 禁止服务开机启动
  • 命令示例:

    # 启动服务
    systemctl start httpd.service
    
    # 停止服务
    systemctl stop httpd.service
    
    # 重启服务
    systemctl restart httpd.service
    
    # 重启服务
    systemctl try-start httpd.service
    
    # 重启服务
    systemctl reload httpd.service
    
    # 查看服务的运行状态
    systemctl status httpd.service
    
    # 允许服务开机启动
    systemctl enable httpd.service
    
    # 禁止服务开机启动
    systemctl disable httpd.service
    

10 软件管理

10.1 软件管理 yum

10.1.1 工具介绍

  • 命令语法:

    yum [选项] [命令] [软件包]
    
  • 命令功能:yum 是Linux下进行软件安装和升级的一个工具,通过yum工具配合网络可实现软件的便捷安装的自动升级。

  • 命令选项:

    选项 说明
    -h 显示帮助信息
    -y 对所有的提问都回答 “yes”
    -c 指定配置文件
    -q 安静模式
    -v 详细模式
    -d 设置调试等级(0-10)
    -e 设置错误等级(0-10)
    -R 设置yum处理一个命令的最大等待时间
    -C 完全从缓存中运行,而不去下载或者更新任何头文件
    --skip-broken 忽略依赖问题
    --nogpgcheck 忽略GPG验证
  • 命令说明:yum 会自动解决安装和卸载rpm包时遇到的依赖性问题,而且可以配置多个资源库。

  • 配置说明:yum 的配置文件有主配置文件 /etc/yum.conf、资源库配置文件 /etc/yum.repos.d/CentOS-Base.repo。

  • 下载说明:yum 会自动下载所有所需的升级资源包并默认放置在 /var/cache/yum 目录下。

10.1.2 安装软件

  • 命令语法:

    # 在线安装软件包
    yum install package_name
    
    # 本地安装软件包
    yum localinstall package_name
    
    # 重新安装软件包
    yum reinstall package_name
    
  • 命令示例:

    # 安装dhcp
    yum install dhcp
    

10.1.3 卸载软件

  • 命令语法:

    # 卸载软件包:保留配置文件和用户数据
    yum remove package_name
    
    # 卸载软件包:删除配置文件和用户数据
    yum erase package_name
    
  • 命令示例:

    # 卸载dhcp
    yum remove dhcp
    yum erase dhcp
    

10.1.4 更新软件

  • 命令语法:

    # 检查可以更新的软件包
    yum check-update
    
    # 在线更新所有可以更新的软件包
    yum update
    
    # 在线更新指定软件包
    yum update package_name
    
    # 本地更新指定软件包
    yum localupdate package_name
    
    # 在线升级指定软件包
    yum upgrade package_name
    
  • 命令示例:

    # 更新dhcp
    yum update dhcp
    
    # 升级dhcp
    yum upgrade  dhcp
    

10.1.5 查看软件

  • 命令语法:

    # 查看已配置的资源库
    yum repolist
    
    # 查看软件包的所有依赖关系
    yum deplist package_name
    
    
    # 查看资源库中所有可以安装或可以更新的软件包的信息
    yum info
    
    # 查看资源库中指定软件包的信息
    yum info package_name
    
    # 查看已安装的软件包的信息
    yum info installed
    
    # 查看资源库中可以更新的软件包的信息
    yum info updates
    
    
    # 查看资源库中所有可以安装或可以更新的软件包的信息
    yum list
    
    # 查看资源库中指定软件包的信息
    yum list package_name
    
    # 查看已安装的软件包的信息
    yum list installed
    
    # 查看资源库中可以更新的软件包的信息
    yum list updates
    
  • 命令示例:

    # 查看dhcp的依赖关系
    yum deplist dhcp
    
    # 查看dhcp安装包的信息
    yum info dhcp
    
    # 查看dhcp安装包的信息
    yum list dhcp
    

10.1.6 清除缓存

  • 命令语法:

    # 清除缓存的rpm包文件和头文件
    yum clean all
    
    # 清除缓存的rpm包文件
    yum clean packages
    
    # 清除缓存的rpm头文件
    yum clean headers
    
    # 清除缓存的旧的rpm头文件
    yum clean oldheaders
    

10.2 软件管理 rpm

10.2.1 工具介绍

  • 命令语法:

    rpm 主选项 [辅助选项] 软件包
    
  • 命令功能:rpm 是Red Hat Package Manager的缩写,它是 Red Hat 软件包管理一个工具。

  • 命令选项:主选项如下所示:

    选项 说明
    -i 安装软件
    -e 卸载软件
    -U 更新软件
    -q 查询软件
    -V 验证已安装的软件包
    -K 验证未安装的软件包
  • 优点说明:安装简单、方便,因为软件已经编译完成且打包完毕,安装只是个验证环境和解压的过程,此外,通过 rpm 方式安装的软件,rpm 工具会记录软件的安装信息,这样方便了软件日后的查询、升级和卸载。

  • 缺点说明:对操作系统环境的依赖很大,它要求 rpm 包的安装环境必须与 rpm 包封装时的环境一致或相当。

10.2.2 安装软件

  • 命令语法:

    rpm -i [辅助选项] 软件包
    
  • 命令选项:辅助选项如下所示:

    选项 说明
    -v 显示附加信息
    -h 安装时输出标记 “#”
    --test 只对安装进行测试,并不实际安装
    --nodeps 不检查软件之间的依赖关系,加入此项可能会导致软件不可用
    --force 忽略软件包以及软件冲突
    --replacepkgs 强制重新安装已经安装的软件包
    --prefix 将软件包安装不对劲由prefix选项指定的路径下
    --percent 以百分比的形式输出安装的进度
    --excludedocs 安装软件包,不包含说明文件
    --includedocs 安装软件包,包含说明文件
  • 命令示例:

    # 安装ipvsadm-1.27-7.el.x86_64.rpm
    rpm -ivh ipvsadm-1.27-7.el.x86_64.rpm
    

10.2.3 卸载软件

  • 命令语法:

    rpm -e [辅助选项] 软件包
    
  • 命令选项:辅助选项如下所示:

    选项 说明
    --test 只执行卸载的测试,并不真正卸载
    --nodeps 不检查软件之间的依赖关系
  • 命令示例:

    # 删除rsh软件包
    rpm -e rsh
    

10.2.4 更新软件

  • 命令语法:

    rpm -U [辅助选项] 软件包
    
  • 命令选项:辅助选项如下所示:

    选项 说明
    --oldpackage 表示允许升级到一个老版本,即软件版本降级
    -v 显示附加信息
    -h 安装时输出标记 “#”
    --test 只对安装进行测试,并不实际安装
    --nodeps 不检查软件之间的依赖关系,加入此项可能会导致软件不可用
    --force 忽略软件包以及软件冲突
    --replacepkgs 强制重新安装已经安装的软件包
    --prefix 将软件包安装不对劲由prefix选项指定的路径下
    --percent 以百分比的形式输出安装的进度
    --excludedocs 安装软件包,不包含说明文件
    --includedocs 安装软件包,包含说明文件
  • 命令示例:

    # 升级rsh到rsh-0.17-76版本
    rpm -Uvh rsh-0.17-76.el7.x86_64.rpm
    

10.2.5 查询软件

  • 命令语法:

    rpm -q [辅助选项] 软件包
    
  • 命令选项:辅助选项如下所示:

    选项 说明
    -f 查询操作系统中某个文件属于哪个对应的rpm软件包
    -p 查询以".rpm"为后缀的软件包安装后对应的包名称
    -l 显示软件包中的所有文件列表。
    切记:此选项后面跟软件包安装后对应的包名,而不是以 “.rpm” 为后缀的rpm包
    -i 显示软件包的概要信息,如果软件名称、版本、适应平台 、大小等。
    切记:此选项后面跟完整的包名,而不是以 “.rpm” 为后缀的名。
    -g 查询系统有哪些软件包属于指定的类型
    -d 显示软件包中的说明文件列表,rpm 将软件民中的文件分为三类:配置文件、说明文件、可执行文件。
    切记:此选项后面跟完整的包名,而不是以 “.rpm” 为后缀的名。
    -S 显示软件包所需的功能,所谓功能,可以是软件包标识,也可以是共享动态库文件等。
    软件包的依赖关系就是依靠功能来实现的,如果所需的功能不存在,则依赖关系一定得不到满足,软件安装就会失败。
    --provides 显示软件包提供的功能,这个功能可以是动态库文件,也可以是虚拟软件的包名等
  • 命令示例:

    # 查询/bin/bash文件属于哪个对应的rpm软件包
    rpm -qf /bin/bash
    
    # 查询gcc软件安装后对应的包名称
    rpm -qp gcc-4.8.3-9.el7.x86_64.rpm
    
    # 显示gcc软件包中的所有文件列表
    rpm -ql gcc-4.8.3-9.el7.x86_64
    
    # 显示gcc软件包的概要信息
    rpm -qi gcc-4.8.3-9.el7.x86_64
    
    # 查看gcc软件包中的说明文件
    rpm -qd gcc-4.8.3-9.el7.x86_64
    
    # 查看gcc软件包提供的功能
    rpm -qp --provides gcc-4.8.3-9.el7.x86_64.rpm
    

10.2.6 验证软件

  • 命令语法:

    # 验证已安装的软件包
    rpm -V [辅助选项] 软件包
    
    # 验证未安装的软件包
    rpm -K [辅助选项] 软件包
    
  • 命令功能:校验软件包比较的是某个软件包安装的文件和原始软件包中同一文件是否一致。它校验每个文件的大小、权限、MD5值、类型、所有者以及组群。

  • 命令选项:辅助选项如下所示:

    选项 说明
    -p 验证软件包中的文件
    -f 校验文件在所属的软件包的状态
    -a 校验所有的软件包
    -g 校验所有属于组的软件包
  • 命令示例:

    # 验证rsh软件包的安装状态
    rpm -V rsh-0.17-76.el7.x86_64.rpm
    
    # 验证rsh软件包中的文件
    rpm -Vp rsh-0.17-76.el7.x86_64.rpm
    
    # 验证libganglia软件包是否被篡改或者是否损坏
    rpm -K libganglia-3.4.0-1.x86_64.rpm
    

10.3 二进制包

10.3.1 软件说明

  • 说明:二进制格式的软件是指事先已经在各种平台编译安装好相关软件,然后打压缩包,在安装时只需要解压即可。
  • 优点:安装简单、容易。
  • 缺点:缺乏灵活性,相应的软件包只能在对应平台下安装,离开这个环境就无法运行。
  • 格式:二进制软件包提供了多种类型的打包方式,例如 " *.tar.gz " 和 " *.tar.bz2 " 等形式的二进制软件包。

10.3.2 软件安装

  • 安装说明:对于 " *.tar.gz " 和 " *.tar.bz2 " 格式的二进制软件包,只需要简单的解压即可。

  • 解压命令:

    # 解压后缀为 .tar.gz 类型的压缩包
    tar -zxvf ***.tar.gz
    
    # 解压后缀为 .tar.bz2 类型的压缩包
    tar -jxvf ***.tar.bz2
    

10.3.3 软件卸载

  • 卸载说明:对于解压安装类型的软件,由于解压后只有单一的目录,可以直接删除对应软件目录即可,如果解压后文件分散在几个目录中,只需要一一删除即可。
  • 制裁命令:
    rm -rf 安装目录
    

如果觉得本文对您有帮助,请关注博主的微信公众号,会经常分享一些Java和大数据方面的技术案例!
在这里插入图片描述

你可能感兴趣的:(Linux,Linux,命令,教程,笔记)