当前位置: 首页 > article >正文

Linux系统常用命令详解

文章目录

  • 一、Linux概述
    • 1、常见的操作系统
    • 2、Linux发展史
    • 3、Linux目录结构
    • 4、终端操作快捷键
  • 二、文件和目录操作
    • 1、pwd - 显示当前目录
    • 2、cd - 切换目录
    • 3、ls - 列出目录内容
    • 4、mkdir - 创建目录
    • 5、touch - 创建空文件
    • 6、cp - 复制文件或目录
    • 7、mv - 移动或重命名文件
    • 8、rm - 删除文件或目录
    • 9、tree - 树形结构显示目录内容
    • 10、软链接与硬链接
  • 三、文件内容编辑
    • 1、vi、vim、view概述
    • 2、命令模式
    • 3、编辑模式
  • 四、文件内容查看
    • 1、cat - 查看文件所有内容
    • 2、more/less - 分页查看文件内容
    • 3、head - 显示文件头部内容
    • 4、tail - 显示文件尾部内容
  • 五、搜索查找
    • 1、grep - 内容查找
    • 2、find - 文件目录查找
    • 3、locate - 全局搜索
  • 六、压缩和解压
    • 1、使用zip和unzip
    • 2、使用tar(打包与压缩)
  • 七、上传下载
    • 1、rz - 上传文件
    • 2、sz - 下载文件
    • 3、wget - 网络下载工具
  • 八、进程管理
    • 1、ps - 显示当前进程
    • 2、jps - 查看Java运行程序
    • 3、kill - 终止进程
    • 4、netstat - 查看网络连接状态及端口
    • 5、lsof - 列出被进程打开的文件
    • 6、nohup/& - 后台运行
  • 九、系统命令
    • 1、date - 查看/设置时间
    • 2、重定向
      • 2.1、>输出重定向
      • 2.2、>>追加重定向
      • 2.3、多种重定向方式
      • 2.4、标准输出(stdout)和标准错误(stderr)
      • 2.5、1、2、&表示什么意思
    • 3、| - 管道符
    • 4、which - 搜索命令
    • 5、df - 查询磁盘空间
    • 6、free - 查询系统内存
    • 7、alias - 别名
  • 十、软件安装方式
    • 1、APT (Advanced Package Tool)
    • 2、YUM (Yellowdog Updater, Modified)
    • 3、DNF (Dandified Yum)

一、Linux概述

1、常见的操作系统

  1. Windows操作系统:由微软公司开发的操作系统,广泛应用于个人电脑、服务器、游戏机等设备中
    • win xp
    • win7/win8/win10/win11等
  2. Unix操作系统(1960年代诞生):由贝尔实验室开发的一类操作系统,主要应用于服务器、工作站、超级计算机等领域,具有稳定、安全等特点
    • Solaris:SUN公司开发
    • AIX:IBM开发
    • HP-UX:惠普公司开发
    • macOS:苹果公司开发,主要应用于苹果公司的电脑和笔记本电脑上
  3. Linux 操作系统(1991年诞生):Linux 操作系统是一种开源的、免费的、类 UNIX 操作系统,用于服务器、工作站、超级计算机等领域
    • Debian:一种流行的稳定Linux操作系统
    • Ubuntu:基于Debian构建的一种流行的Linux桌面操作系统
    • Red Hat:一种商业Linux操作系统,由Red Hat公司开发
    • CentOS:通过重新编译Red Hat而得到的Linux操作系统,免费且源代码开放
    • Fedora:由Red Hat公司赞助的基于开源的Linux桌面和服务器操作系统
  4. Chrome OS操作系统:由Google公司开发的基于Chrome浏览器的操作系统,主要应用于Chromebook笔记本电脑上
  5. Android操作系统:由Google公司开发的操作系统,主要应用于手机、平板电脑等移动设备中
  6. iOS操作系统:由苹果公司开发的操作系统,主要应用于iPhone、iPad等移动设备中
  7. HarmonyOS鸿蒙操作系统,由华为公司自主开发

2、Linux发展史

  • 1991年:Linux诞生
    • Linus Torvalds(林纳斯·托瓦兹)在芬兰赫尔辛基大学开始开发Linux内核,发布了第一个版本(0.01),最初只是为了个人使用,替代Minix操作系统
  • 1992年:结合GNU工具
    • Linux内核与GNU项目的工具(如GNU C库、bash、编译器等)结合,形成了一个完整的开源操作系统,这个系统后来被称为GNU/Linux
  • 1993年:Debian发布
    • Debian作为一个完全由社区管理的发行版发布,强调自由软件,成为许多Linux发行版的基础
  • 1994年:Linux 1.0发布
    • Linux 1.0发布,标志着内核的第一次稳定版,Linux开始逐步走向成熟
  • 1996年:Red Hat Linux发布
    • Red Hat推出商业化的Linux版本,专注于企业市场,提供了稳定性和技术支持,同时采用RPM软件包管理系统
  • 2000年:Linux进入企业市场
    • 随着IBM等大型企业的支持,Linux开始在企业级环境中得到应用,特别是在Web服务器、数据库和高性能计算等领域
  • 2004年:Ubuntu发布
    • Ubuntu由Mark Shuttleworth创建,目标是让Linux更加易用和友好,特别面向普通用户,迅速成为流行的桌面操作系统
  • 2007年:Android发布
    • Android系统基于Linux内核发布,成为全球最广泛使用的移动操作系统,推动Linux在移动设备市场的普及
  • 2010年代:云计算与容器化
    • Linux在云计算(如AWS)和容器化(如Docker、Kubernetes)领域中成为主流操作系统,广泛应用于数据中心和开发环境
  • 2020年代:Linux在各领域应用
    • Linux继续主导服务器市场,尤其是在超级计算机、物联网(IoT)和人工智能领域的应用,成为全球最重要的操作系统之一

3、Linux目录结构

linux系统中一切皆文件

在这里插入图片描述

以下是每个目录的一些详细解释:

  1. /root: 该目录为系统管理员root,也称为超级权限者的用户主目录

  2. /home: 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账户命名

  3. /etc: 所有的系统管理员所需要的配置文件和子目录

  4. /usr:非常重要的目录,用户的很多应用程序和文件都在这个目录,类似windows下的program files目录

  5. /bin: 存放系统启动和运行所需的基本可执行文件(快捷方式,真正存储在/usr/bin),例如常用的命令 lscatcp

  6. /sbin: 存放系统管理工具和命令(快捷方式,真正存储在/usr/sbin),例如 ifconfig

  7. /opt: 存放第三方软件的安装目录,比如安装一个MySQL数据库就放到这个目录下,默认是空的

  8. /var: 存储经常变化的文件,如日志(/var/log)、缓存(/var/cache

  9. /tmp: 存放临时文件,系统重启后通常会清空

  10. /data: 通常用于存储用户数据文件(自定义目录)

  11. /www: 通常存放网站的文件(自定义目录,不是所有系统都有)

  12. /lib/lib64: 包含系统程序和内核模块的共享库(快捷方式,真正存储在/usr/lib和/usr/lib64)

  13. /media/mnt: 用于临时挂载外部设备(如 USB、光盘)

  14. /dev: 类似于windows的设备管理器,把所有的硬件用文件的形式存储

  15. /boot: 包含引导加载器相关文件(如 GRUB),以及 Linux 内核(vmlinuz

  16. /proc: 一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统的信息

  17. /run: 存放系统启动时创建的临时文件,如进程的PID文件

  18. /srv: 存储服务相关的数据(如 HTTP 服务的网页文件)

  19. /sys: 虚拟文件系统,提供设备和驱动程序的信息

4、终端操作快捷键

快捷键功能描述
Ctrl + C终止当前运行的命令
Ctrl + Z暂停当前命令,将其放入后台
Ctrl + L清屏(相当于执行 clear 命令)
Ctrl + A将光标移动到当前行的行首
Ctrl + E将光标移动到当前行的行尾
查看上一条历史命令
查看下一条历史命令
Tab命令或文件名自动补全

二、文件和目录操作

1、pwd - 显示当前目录

  pwd用于用于显示当前工作目录的完整路径

常用示例

在这里插入图片描述

2、cd - 切换目录

  cd用于切换工作目录的命令。

基本语法

cd [目录路径]
  • 目录路径可以是绝对路径相对路径
    • 绝对路径:从根目录/开始的完整路径
    • 相对路径:基于当前目录的路径

常用示例

  1. 切换到某个目录
    cd /home/user/documents
    
  2. 切换到上级目录
    cd ..
    
  3. 切换到用户主目录
    cd ~
    # 或者
    cd
    
  4. 切换到上次所在的目录
    cd -
    
  5. 切换到根目录
    cd /
    

3、ls - 列出目录内容

  ls是用于列出目录内容的命令。它可以显示当前目录(或指定目录)下的文件和子目录,并提供多种选项查看详细信息。

基本语法

ls [选项] [目录]

常用示例

  1. 列出当前目录的文件和子目录的名称
    在这里插入图片描述
  2. 列出所有文件,包括隐藏文件(以 . 开头的文件)。其中.表示当前目录,..表示上级目录
    在这里插入图片描述
  3. 显示详细信息(ls -l 可以简写为:ll
    在这里插入图片描述
    在这里插入图片描述
  4. 显示易读的文件大小(例如,KB、MB等)
    在这里插入图片描述

4、mkdir - 创建目录

  mkdir用于创建目录

基本语法

mkdir [选项] 目录名

常用示例

  1. 创建单个目录
    mkdir mydir
    
  2. 创建多个目录
    mkdir dir1 dir2 dir3
    
  3. 递归创建多级目录
    mkdir -p /home/user/projects/2024/report
    

5、touch - 创建空文件

  touch用于创建空文件

基本语法

touch [选项] 文件名

常用示例

  1. 创建一个名为example.txt的空文件
    touch example.txt
    
  2. 同时创建多个空文件
    touch file1.txt file2.txt file3.txt
    

6、cp - 复制文件或目录

  cp用于复制文件或目录的命令。它可以将文件从一个位置复制到另一个位置,也可以递归复制整个目录。

基本语法

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

常用示例

  1. 复制单个文件(如果file2.txt不存在,创建它;如果已存在,覆盖它)
    cp file1.txt file2.txt
    
  2. 复制文件到目录(复制单个文件目录会自动创建,复制多个文件目录必须存在
    # 复制单个文件
    cp file1.txt /home/user/documents/
    
    # 复制多个文件
    cp file2.txt file3.txt directory/
    
  3. 递归复制目录(将整个docs目录及其内容复制到/home/user/backup/
    cp -r /home/user/docs /home/user/backup/
    
    /home/user/backup/
    └── docs/
        ├── file1.txt
        ├── file2.txt
        ├── subdir/
        │   ├── subfile1.txt
        │   └── subfile2.txt
    

7、mv - 移动或重命名文件

  mv用于移动文件或目录,或者重命名文件或目录

基本语法

mv [选项] 源文件 目标位置

常用示例

  1. 重命名文件将oldfile.txt重命名为newfile.txt
    mv oldfile.txt newfile.txt
    
  2. 移动文件到目录(默认会直接覆盖
    # 移动单个文件
    mv file1.txt /home/user/documents/
    # 移动多个文件
    mv file1.txt file2.txt /home/user/documents/
    
  3. 移动并重命名文件(将file1.txt移动到/home/user/并重命名为renamed_file.txt)
    mv file1.txt /home/user/renamed_file.txt
    
  4. 移动整个目录(将整个docs目录移动到/home/user/backup/
    mv /home/user/docs /home/user/backup/
    

8、rm - 删除文件或目录

  rm用于删除文件或目录的命令。它是一个非常强大的工具,操作不当可能会导致数据永久丢失,因为被删除的文件通常无法恢复。

基本语法

rm [选项] 文件或目录

常用示例

  1. 删除单个文件
    rm file1.txt
    
  2. 删除多个文件
    rm file1.txt file2.txt file3.txt
    
  3. 删除目录及其所有子目录和文件
    rm -r my_directory
    
  4. 强制删除目录及其内容(跳过不存在文件的错误提示,同时取消删除确认)
    rm -rf my_directory
    

9、tree - 树形结构显示目录内容

  tree用于以树形结构显示目录及其内容。它非常直观,可以清晰地显示目录层级结构,包括文件和子目录。

常用示例

在这里插入图片描述

10、软链接与硬链接

软链接

  软链接是一个指向另一个文件或目录的指针文件。它类似于Windows中的快捷方式

特点

  • 软链接可以指向文件目录
  • 如果目标文件被删除,软链接会变成一个无效链接

创建软链接基本语法

ln -s [目标文件或目录] [软链接名称]

常用示例

  1. 创建文件的软链接link_to_file.txt 是指向 file.txt 的软链接)
    ln -s /home/user/file.txt /home/user/link_to_file.txt
    
  2. 创建目录的软链接
    ln -s /home/user/docs /home/user/link_to_docs
    

硬链接

  硬链接是一个指向目标文件实际数据块的链接。它本质上是另一个文件名,但与原文件共享同一数据

特点

  • 硬链接和原文件在操作上完全相同,删除任意一个,另一个仍然可用
  • 硬链接只能指向文件,不能指向目录
  • 硬链接和原文件共用同一组数据块,文件的修改会反映到所有硬链接上

创建硬链接基本语法

ln [目标文件] [硬链接名称]

常用示例

  1. 创建硬链接hardlink_to_file.txtfile.txt 的硬链接)
    ln /home/user/file.txt /home/user/hardlink_to_file.txt
    

三、文件内容编辑

1、vi、vim、view概述

  在Linux系统中,vivimview 是常用的文本编辑工具,尽管它们具有类似的功能,但也存在一些差异和各自的适用场景。

功能对比表

特性vivimview
定位基础文本编辑器增强版文本编辑器vim的只读模式
模式支持三种模式三种模式 + 多窗口、多缓冲区三种模式(默认只读)
语法高亮不支持支持支持
插件支持不支持支持支持
自动补全不支持支持支持
运行速度较快略慢(功能多,启动时消耗资源)同 vim
修改权限可读写可读写默认只读

适用场景

  • vi:需要一个基础编辑器、处理小文件、或在系统无 vim 的情况下使用
  • vim:用于编写代码、处理复杂文档、需要插件扩展的高级编辑
  • view:用于查看文件内容且不想修改文件

2、命令模式

  • 命令模式是vi/vim/view的默认模式,启动编辑器后即进入此模式
  • 在此模式下,你无法直接输入文本,只能执行控制和操作命令,例如光标移动、删除、复制等

常用命令

命令作用
x删除光标所在位置的字符
dd删除光标所在行
yy复制当前行
p在光标后粘贴内容
u撤销上一步操作
^跳到当前行的行首
$跳到当前行的行尾
gg跳到文件开头
G跳到文件末尾
/关键字n查找下一个,N向上查找
:wq保存并退出
:q!不保存退出

3、编辑模式

  • 在编辑模式下,可以直接输入文本,类似于普通文本编辑器的功能
  • 进入编辑模式后,屏幕底部会显示 -- INSERT --,表明你可以输入内容

进入编辑模式的方法

命令作用
i在光标当前位置前插入文本
I在当前行的行首插入文本
a在光标当前位置后插入文本
A在当前行的行尾插入文本
o在当前行的下方插入一个新行
O在当前行的上方插入一个新行

退出编辑模式的方法

  • 按下Esc键退出编辑模式,返回到命令模式

四、文件内容查看

1、cat - 查看文件所有内容

  cat用于查看内容较少的文件。

基本语法

cat [选项] 文件名

常用示例

  1. 查看文件内容(在终端中显示文件的完整内容
    cat file.txt
    
  2. 查看内容并添加行号
    在这里插入图片描述

2、more/less - 分页查看文件内容

  • more:简单的分页查看工具,主要支持向下翻页,功能有限
  • less:功能强大的分页查看工具,支持上下翻页搜索跳转,更适合查看大文件

基本语法

less [选项] 文件名

常用操作键

按键功能
pagedown/空格键向下翻一页
pageup/b返回上一页
上/下箭头向上或向下滚动一行
/text搜索text,按n查看下一个,N上一个
?text搜索text(向上),按n查看下一个,N上一个
g跳转到文件开头
G跳转到文件末尾
q退出less

常用示例

  1. 查看文件内容(内容以分页形式显示)
    less file.txt
    
  2. 使用-N显示行号,-m显示百分比
    在这里插入图片描述

3、head - 显示文件头部内容

  head用于显示文件的开头部分内容。默认情况下,它会输出文件的前10行

基本语法

head [选项] 文件名

常用示例

  1. 默认显示前10行
    head file.txt
    
  2. 显示前20行
    head -n 20 file.txt
    # 或者
    head -20 file.txt
    
  3. 显示前50个字节
    head -c 50 file.txt
    

4、tail - 显示文件尾部内容

  tail用于显示文件的尾部部分内容。默认情况下,它会输出文件的最后10行

基本语法

tail [选项] 文件名

常用示例

  1. 默认显示最后10行
    tail file.txt
    
  2. 显示最后20行
    tail -n 20 file.txt
    # 或者
    tail -20 file.txt
    
  3. 显示最后50个字节
    tail -c 50 file.txt
    
  4. 实时跟踪文件变化(可以与-n选项结合,显示最近的指定行数并实时更新)
    在这里插入图片描述
    在这里插入图片描述

五、搜索查找

1、grep - 内容查找

  grep用于在文件或文本中查找指定内容。它会根据匹配的模式搜索文件,并输出匹配的行。

基本语法

grep [选项] "搜索内容" [文件名]

常用示例

  1. 在文件中查找指定内容
    grep "hello" file.txt
    
  2. 显示匹配行的行号
    在这里插入图片描述
  3. 统计匹配的行数
    在这里插入图片描述
  4. 递归搜索目录中的文件
    在这里插入图片描述

2、find - 文件目录查找

  find用于在文件系统中查找文件或目录。它可以根据各种条件(如名称、大小、时间等)进行灵活的搜索,甚至可以对找到的文件执行操作。

基本语法

find [路径] [搜索条件] [操作]

常用选项

选项/条件功能
-name按名称查找文件或目录,支持通配符
-type按文件类型查找,如文件(f)或目录(d
-size按文件大小查找
-exec对找到的文件执行指定命令
-delete删除找到的文件或目录

常用示例

  1. 按名称查找文件
    find /path/to/search -name "filename"
    
  2. 支持通配符
    find /path/to/search -name "*.txt"
    
  3. 按大小查找(+:大于、-:小于;k:KB、M:MB、G:GB)
    find /path/to/search -size +10M
    
  4. 删除找到的文件
    find /path/to/search -name "*.log" -delete
    
  5. 移动文件到某个目录({}表示找到的每个文件
    find /path/to/search -name "*.txt" -exec mv {} /destination/path/ \;
    
  6. 对找到的每个.txt 文件执行cat命令
    find /path/to/search -name "*.txt" -exec cat {} \;
    

3、locate - 全局搜索

  locate用于快速全局搜索文件或目录。与find命令相比,locate的搜索速度更快,因为它使用的是事先构建好的数据库,而不是实时遍历文件系统。

基本语法

locate [选项] 搜索内容

数据库更新

  • 数据库由系统定期自动更新(通常通过 cron 定时任务)
  • 如果需要手动更新,可以运行:
    sudo updatedb
    

常用示例

  1. 查找文件或目录
    locate file.txt
    
  2. 模糊匹配
    locate "*.txt"
    
  3. 只显示前10条结果
    locate -n 10 file.txt
    

六、压缩和解压

1、使用zip和unzip

压缩文件

  • 创建一个压缩文件
    zip archive.zip file1.txt file2.txt
    
  • 压缩文件夹(包括子文件夹)
    zip -r archive.zip my_folder/
    

解压文件

  • 解压zip文件到当前目录
    unzip archive.zip
    
  • 解压到指定目录
    unzip archive.zip -d /path/to/destination
    
  • 查看压缩包内容
    在这里插入图片描述

2、使用tar(打包与压缩)

  在Linux系统中,tar是一个常用的工具,主要用于打包文件和目录。它还可以结合压缩工具(如 gzipbzip2xz)来生成压缩文件。

基本语法

tar [选项] -f 文件名.tar [要操作的文件或目录]

常用选项

选项描述
-c创建压缩文件
-x解压归档文件
-f指定归档文件的名称
-z使用gzip压缩或解压(快速压缩和解压
-j使用bzip2压缩或解压(更高的压缩率,解压慢
-J使用xz压缩或解压(极限压缩,解压最慢
-v显示详细操作过程
-C指定解压的目标目录
-t列出归档文件的内容

压缩文件

  1. 仅打包不压缩(将目录或文件打包成.tar文件)

    tar -cf archive.tar file1.txt file2.txt my_folder
    

    在这里插入图片描述

  2. 打包并使用gzip压缩(创建.tar.gz文件)

    tar -czf archive.tar.gz file1.txt my_folder
    

    在这里插入图片描述

  3. 打包并使用bzip2压缩(创建.tar.bz2文件)

    tar -cjf archive.tar.bz2 file1.txt my_folder
    
  4. 打包并使用xz压缩(创建.tar.xz文件)

    tar -cJf archive.tar.xz file1.txt my_folder
    

解压文件

  1. 解压.tar文件

    tar -xf archive.tar
    
  2. 解压.tar.gz文件

    tar -xzf archive.tar.gz
    

    在这里插入图片描述

  3. 解压.tar.bz2文件

    tar -xjf archive.tar.bz2
    
  4. 解压.tar.xz文件

    tar -xJf archive.tar.xz
    
  5. 解压到指定目录

    tar -xzf archive.tar.gz -C /path/to/destination
    
  6. 查看压缩文件.tar.gz的内容

    tar -tzf archive.tar.gz
    

    在这里插入图片描述

七、上传下载

1、rz - 上传文件

  rz 用于将文件从本地上传到远程服务器

用法:

  1. 在服务器中运行(这会打开文件上传的交互界面)
    rz
    
    在这里插入图片描述
  2. 在弹出的窗口中选择要上传的文件(你的终端工具需要支持Zmodem,例如Xshell、SecureCRT、MobaXterm)
  3. 文件会自动上传到服务器当前路径下

2、sz - 下载文件

  sz用于将文件从远程服务器下载到本地

用法:

  1. 在服务器中运行(文件会自动下载到本地的默认目录)
    sz filename
    
  2. 下载多个文件
    sz file1 file2
    

3、wget - 网络下载工具

  wget是一个Linux下的非交互式网络下载工具,支持从HTTPHTTPSFTP协议下载文件或网页资源。它常用于命令行环境,尤其适合在脚本中自动下载文件。

命令格式

wget [选项] [URL]

常用示例

  1. 下载单个文件
    wget http://example.com/file.txt
    
    • 此命令会从指定URL下载 file.txt文件到当前目录
  2. 通过代理下载
    wget -e use_proxy=yes -e http_proxy=http://proxy_address:port http://example.com/file.txt
    
    • 指定代理服务器地址和端口下载文件

八、进程管理

1、ps - 显示当前进程

ps:仅显示当前终端的进程

在这里插入图片描述
- PID: 进程 ID
- TTY: 终端名称
- TIME: 进程使用的 CPU 时间
- CMD: 执行的命令

ps aux:详细显示所有进程

  • 含义
    • a:显示所有终端的进程,包括其他用户的
    • u:以用户友好的格式显示(显示 USER、%CPU、%MEM 等信息)
    • x:显示没有终端控制的进程(如后台进程)
  • 输出字段
    在这里插入图片描述
    • USER:运行进程的用户
    • PID:进程 ID
    • %CPU:CPU 使用率
    • %MEM:内存使用率
    • VSZ:虚拟内存大小(KB)
    • RSS:实际使用的内存大小(KB)
    • TTY:终端名称(无终端时为 ?
    • STAT:进程状态
    • START:进程启动时间
    • TIME:累计 CPU 时间
    • COMMAND:执行的命令及其参数

ps -ef:详细显示所有进程

  • 含义
    • -e:显示所有进程
    • -f:全格式显示
  • 输出字段
    在这里插入图片描述
    • UID:运行进程的用户 ID
    • PID:进程 ID
    • PPID:父进程 ID
    • C:CPU 使用率
    • STIME:进程启动时间
    • TTY:终端名称
    • TIME:累计 CPU 时间
    • CMD:执行的命令及其参数
特性ps auxps -ef
格式用户友好的格式,显示 CPU、内存占用等信息全格式显示,包含父进程 ID(PPID)
输出字段包括 %CPU%MEMVSZRSS包括 PPIDUID,无内存或 CPU 占用信息
参数风格BSD 风格(无 -UNIX 风格(带 -
适用场景查看资源占用、运行状态更直观查看进程间关系(父子进程关系)

2、jps - 查看Java运行程序

  jps是Java提供的一个命令行工具,用于显示当前运行的Java进程。它是JDK中的一部分,主要用于调试和监控Java应用程序。

常用示例

  1. 列出本地 Java 进程
    在这里插入图片描述
  2. 显示主类的完整包名或 JAR 文件的路径
    在这里插入图片描述

3、kill - 终止进程

  1. 正常终止进程
    kill 12345
    
  2. 强制终止进程
    kill -9 12345
    
  3. 终止多个进程
    kill 12345 67890
    

4、netstat - 查看网络连接状态及端口

  netstat是一个网络工具,用于显示网络连接状态监听端口、路由表、网络接口统计信息等。尽管在一些现代Linux发行版中已被标记为过时工具,但它仍然是一种经典而强大的工具。

基本语法

netstat [选项]

常用选项

选项描述
-a显示所有网络连接和端口,包括监听状态
-n以数字格式显示地址和端口
-t显示 TCP 连接
-u显示 UDP 连接
-l仅显示监听状态的端口
-p显示进程 ID 和进程名称(需要 root 权限)
-i显示网络接口状态

常用组合命令

  1. 查看当前所有监听端口及对应的进程

    netstat -tuln
    

    在这里插入图片描述

    • Proto:协议(tcp、tcp6 表示IPv4和IPv6的TCP协议,udp、udp6表示UDP协议)
    • Recv-Q 和 Send-Q:接收和发送队列的长度(通常为0)
    • Local Address:本地地址和端口,0.0.0.0 表示监听所有IPv4接口
    • Foreign Address:远程地址,0.0.0.0:* 表示任何外部地址都可以连接
    • State:连接的状态
      • LISTENING:表示该端口已占用,正在监听,等待客户端的连接
      • CONNECTED:表示网络连接已建立,但并没有开始数据传输
      • ESTABLISHED:表示网络已连接,数据正在传输中
      • TIME_WAIT:连接正在等待关闭确认
    • PID/Program name:监听端口的进程ID和对应的程序名称
  2. 查看指定端口的网络连接状态

    netstat -an | grep :22
    

    在这里插入图片描述

5、lsof - 列出被进程打开的文件

  lsof命令用于排查文件锁定、端口占用网络连接及进程资源占用等问题。

基本语法

lsof [选项] [文件名/进程]

常用示例

  1. 列出所有被打开的文件
    在这里插入图片描述
    • COMMAND:打开文件的进程名称
    • PID:进程的ID
    • USER:打开文件的用户
    • NAME:文件路径名称
  2. 查看某个特定文件被哪些进程打开
    lsof /path/to/file
    
  3. 查看所有网络连接(TCP、UDP)
    lsof -i
    
  4. 查看某个端口被哪个进程占用
    在这里插入图片描述
  5. 查看指定网络接口的监听端口
    在这里插入图片描述
    • -n:不解析主机名,直接显示IP
    • -P:不解析端口名称,直接显示端口号

6、nohup/& - 后台运行

命令介绍

  • command &:后台运行命令,但依赖当前终端。终端关闭时,进程被终止
  • nohup command:前台运行,当前终端会被占用,终端关闭后仍继续运行
  • nohup command &:最佳组合,后台运行且不受终端关闭影响

推荐写法

nohup command > output.log 2>&1 &
  • nohup:忽略挂起信号(SIGHUP),让命令在后台持续运行
  • &:将命令放到后台执行
  • > output.log 2>&1:重定向标准输出和错误输出到指定文件

springboot有logback指定日志的推荐写法(丢弃命令的标准输出和错误输出

nohup jar -jar xxx.jar > /dev/null 2>&1 &

九、系统命令

1、date - 查看/设置时间

  • 查看当前日期和时间
    在这里插入图片描述
  • 设置系统时间(需要root权限)
    sudo date -s "2024-12-17 14:30:00"
    
  • 查看日历
    在这里插入图片描述

2、重定向

2.1、>输出重定向

  • 命令的输出写入到一个文件。如果文件已存在,内容会被覆盖
  • 语法:
    command > filename
    
  • 示例:
    echo "Hello, World!" > example.txt
    
    • 如果example.txt已存在,其内容将被覆盖为"Hello, World!"
    • 如果文件不存在,则会新建一个文件

2.2、>>追加重定向

  • 将命令的输出追加到文件末尾。如果文件不存在,会新建一个文件
  • 语法:
    command >> filename
    
  • 示例:
    echo "Hello again!" >> example.txt
    
    • 如果 example.txt 已存在,"Hello again!" 会被追加到文件末尾
    • 如果文件不存在,会新建文件并写入 "Hello again!"

2.3、多种重定向方式

以下是 Linux 重定向的各种示例和说明:

命令示例说明
echo "Hello World" > file.txt将输出写入file.txt,如果文件存在,将覆盖内容
echo "Hello Again" >> file.txt将输出追加到file.txt的末尾,如果文件不存在,则创建它
ls nonexistentfile 2> error.log将错误信息写入error.log,覆盖已有内容
ls nonexistentfile 2>> error.log将错误信息追加到error.log的末尾
command > output.log 2> error.log分别将标准输出和错误输出重定向到不同的文件
command > /dev/null丢弃命令的标准输出
command > /dev/null 2>&1丢弃命令的标准输出和错误输出
command > output.log 2>&1将标准输出和错误输出都会写入到output.log
command &> output.log将标准输出和错误一起写入output.log,覆盖文件内容
command &>> output.log将标准输出和错误追加到output.log的末尾

ps:command &> output.log等价于command > output.log 2>&1,前者仅在 Bash4.0及以上版本支持,后者支持所有Shell,兼容性更强

2.4、标准输出(stdout)和标准错误(stderr)

  • 在 Linux 中,程序执行的输出分为两类
    • 标准输出 (stdout):程序正常运行时的输出,例如echo "Hello"的输出内容
    • 标准错误 (stderr):程序发生错误时的输出,例如尝试访问不存在的文件时的错误提示
  • 默认情况下,>>>只会捕获标准输出,不会处理标准错误。这意味着如果你重定向了输出,错误信息仍然会显示在终端中

示例:nonexistentfile文件夹不存在,existingfile文件存在

  1. 由于文件nonexistentfile不存在,错误信息会显示在终端,而不会被写入文件output.txt
    在这里插入图片描述
  2. 使用2>将错误信息重定向到文件
    在这里插入图片描述
  3. 使用>2>重定向标准输出和标准错误到不同文件
    在这里插入图片描述
  4. 使用>2>&1重定向标准输出和标准错误到同一个文件
    在这里插入图片描述

2.5、1、2、&表示什么意思

  在重定向中,&的作用是将文件描述符(File Descriptor)与目标关联起来。下面解释其具体作用及原因。

什么是文件描述符 (File Descriptor)?

  • 在Linux中,每个打开的文件、输入或输出流都有一个数字标识,称为文件描述符:
    • 标准输入 (stdin):文件描述符为 0
    • 标准输出 (stdout):文件描述符为1
    • 标准错误 (stderr):文件描述符为 2

  在命令重定向中,1> 表示标准输出重定向,因为标准输出是默认的,所以通常可以省略,直接写为command > output.txt。但是对于错误输出重定向(文件描述符为 2),必须明确写为command 2> error.txt,因为它没有默认的简化形式。

为什么需要&?

  • 例如command > output.txt 2>&1,同时重定向标准输出和错误到同一个文件
    • command > output.txt:将标准输出(文件描述符 1)写入 output.txt
    • 2>&1:表示将文件描述符2重定向到文件描述符1所指向的地方(此处是output.txt)
  • 如果没有&,例如写成2>1,会将标准错误输出到名为1的文件中,而不是文件描述符1
    • &的含义是“引用文件描述符的编号”

3、| - 管道符

  在 Linux 中,管道符(|)是一个非常重要的工具,用于将一个命令的输出作为另一个命令的输入。这使得多个命令可以组合起来完成复杂的操作。

基本用法

command1 | command2
  • command1:前一个命令,产生输出
  • command2:后一个命令,接收输入并处理

常用示例

  1. 显示当前目录下的文件,并过滤出包含 “test” 的文件

    ls -l | grep "test"
    
  2. 查看并筛选包含"nginx" 的进程

    ps aux | grep "nginx"
    

4、which - 搜索命令

  which命令用于显示某个命令的可执行文件路径。它会在环境变量PATH中搜索目标命令,并返回第一个匹配的路径。

命令格式

which [命令名称]

常用示例

  1. 查看命令路径(表示ls命令的可执行文件位于/bin/ls)
    在这里插入图片描述
  2. 检查命令是否安装(如果返回路径,说明命令已安装;如果没有输出,则说明命令可能未安装)
    which python
    

5、df - 查询磁盘空间

  df(Disk Free)命令用于查看文件系统的磁盘空间使用情况,显示每个文件系统的总空间、已用空间、可用空间以及挂载点等信息。

命令格式

df [选项] [文件或目录]

常用选项

选项说明
-h以人类可读的格式显示磁盘使用情况(自动换算为 KB、MB、GB)
-k以 KB(千字节)为单位显示(默认单位
-m以 MB(兆字节)为单位显示
--total显示所有文件系统的总计

命令输出解释

在这里插入图片描述

  • Filesystem:文件系统名称,例如设备名称(如 /dev/sda1)或挂载点
  • Size:文件系统的总大小
  • Used:已使用的磁盘空间
  • Avail:可用的磁盘空间
  • Use%:磁盘使用率(以百分比表示)
  • Mounted on:文件系统挂载点

常用示例

  1. 显示特定目录的磁盘使用情况
    在这里插入图片描述
  2. 查看所有文件系统的总计
    在这里插入图片描述

6、free - 查询系统内存

  free 命令用于查看 Linux 系统的内存使用情况,包括物理内存(RAM)、交换空间(Swap)以及缓存(Cache)和缓存(Cache)的使用情况。

概念位置用途速度
物理内存(RAM)系统内存用于存储当前运行的程序和数据快速(与 CPU 直接交互)
交换空间(Swap)硬盘当物理内存不足时临时存储不活跃数据慢(硬盘 I/O 限制)
缓存(Cache)RAM(部分)存储从磁盘读取过的数据,加速读取操作快(但低于 RAM 的直接访问)
缓存(Cache)RAM(部分)存储即将写入磁盘的数据,加速写入操作快(但低于 RAM 的直接访问)

命令格式

free [选项]

常用选项

选项说明
-b以字节(bytes)为单位显示内存使用情况
-k以千字节(KB)为单位显示(默认单位
-m以兆字节(MB)为单位显示
-g以千兆字节(GB)为单位显示
-h以人类可读格式显示(自动转换单位

命令输出解释

在这里插入图片描述

  • Mem 部分:
    • used:被程序和操作系统占用的内存,包括缓存和缓冲
    • free:完全未使用的内存
    • buff/cache:用作缓存和缓冲的数据,这部分可在需要时释放
    • available:可用内存,包含未使用内存和缓存中可以释放的内存
    • shared:多进程共享的内存
  • Swap 部分:
    • total:交换空间总大小
    • used:已使用的交换空间大小
    • free:未使用的交换空间大小

7、alias - 别名

  别名(alias)是为命令定义快捷方式的一种方法。通过别名,您可以为常用的命令指定更短、更易记的名称,也可以为命令添加默认选项,从而提高工作效率。

基本语法

alias 别名='命令'
  • 别名是您要创建的快捷方式名称
  • 命令是您希望别名执行的实际命令
  • 注意:等号=两边不能有空格,且命令部分通常需要用单引号括起来,避免意外扩展

常用示例

  1. 设置常用别名

    # 常用命令简化
    alias ll='ls -la'
    alias la='ls -A'
    alias l='ls -CF'
    
    # 安全性提示
    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'
    
    # 颜色支持
    alias ls='ls --color=auto'
    alias grep='grep --color=auto'
    
    # 显示磁盘和内存信息
    alias df='df -h'
    alias free='free -m'
    
    # 网络相关
    alias myip='curl ifconfig.me'
    alias ports='netstat -tulanp'
    
    # 自定义日期格式
    alias now='date +"%Y-%m-%d %H:%M:%S"'
    alias today='date +"%Y-%m-%d"'
    
    # 快速清屏
    alias cls='clear'
    
    # 冗长的命令定义别名
    alias untar='tar -zxvf'
    alias mkcd='mkdir -p'
    
  2. 查看别名
    在这里插入图片描述

  3. 取消别名

    # 取消 ll 别名
    unalias ll
    

永久保存别名

  别名默认只在当前会话中有效。如果想让别名永久生效,可以将别名添加到用户的Shell配置文件中

  1. 编辑 Shell 配置文件
    • 如果使用 Bash,编辑 ~/.bashrc 文件:
      vim ~/.bashrc
      
    • 如果使用 Zsh,编辑 ~/.zshrc 文件:
      vim ~/.zshrc
      
  2. 添加别名
    alias ll='ls -la'
    alias grep='grep --color=auto'
    
  3. 保存并退出
  4. 使修改立即生效
    source ~/.bashrc
    

十、软件安装方式

  在Linux系统中,aptyumdnf是三种常见的软件包管理工具,分别用于不同的Linux发行版。

1、APT (Advanced Package Tool)

  APT是Debian及其衍生发行版(如Ubuntu、Linux Mint)中的软件包管理工具,专门用于管理.deb格式的软件包。

常用命令

  • apt update: 更新软件包列表
  • apt upgrade: 升级已安装的软件包
  • apt install <包名>: 安装软件包
  • apt remove <包名>: 删除软件包
  • apt autoremove: 自动移除无用的依赖包

特点

  • 简单易用
  • 软件包管理效率高,依赖关系处理得当
  • 面向Debian系的发行版

2、YUM (Yellowdog Updater, Modified)

  YUM是CentOSRed Hat Enterprise Linux(RHEL)和其他基于RPM的软件包管理工具,专门用于管理.rpm格式的软件包。

常用命令

  • yum update: 更新所有软件包
  • yum install <包名>: 安装软件包
  • yum remove <包名>: 删除软件包
  • yum search <包名>: 搜索软件包
  • yum list: 列出所有可用的软件包

特点

  • 支持软件包组安装(如安装一个功能所需的多组软件包)
  • 依赖解决能力较好,但相较于DNF稍显落后

3、DNF (Dandified Yum)

  DNF是YUM的下一代版本,适用于RHEL 8+CentOS 8+、Fedora等发行版,是YUM的替代工具

常用命令

  • dnf update: 更新软件包
  • dnf install <包名>: 安装软件包
  • dnf remove <包名>: 删除软件包
  • dnf search <包名>: 搜索软件包
  • dnf autoremove: 自动清理无用依赖

特点

  • 更快的性能和更少的内存占用
  • 改善了依赖关系的解决算法
  • 更现代化的插件和扩展支持

http://www.kler.cn/a/469131.html

相关文章:

  • Qt天气预报系统设计界面布局第四部分右边
  • Vue笔记-001-声明式渲染
  • 安卓漏洞学习(十六):unicorn在逆向中的使用
  • REVERSE-COMPETITION-CCSSSC-2025
  • umd格式
  • 后台管理系统动态面包屑Breadcrumb组件的实现
  • 怎么找回电脑所有连接过的WiFi密码
  • 【论文阅读笔记】LTX-Video: Realtime Video Latent Diffusion
  • 如何让编码更加高效专注?——程序员编程选明基 RD280U显示器
  • Django Swagger文档库drf-spectacular
  • 【Rust 知识点杂记】
  • 微信小程序提示 miniprogram-recycle-view 引入失败
  • leetcode hot 100 最长递增子序列
  • 智能体语言 Shire 1.2 发布:自定义多文件编辑、Sketch 视图、流式 diff、智能上下文感知...
  • AI生成PPT,效率与创意的双重升级
  • 【开源免费】基于SpringBoot+Vue.JS精品在线试题库系统(JAVA毕业设计)
  • 开发小技巧分享 01:JSON解析工具
  • 入手51单片机的学习路径
  • Linux中的tcpdump抓包命令详解:抓取TCP和UDP数据包并按小时输出文件
  • 【MyBatis-Plus 进阶功能】开发中常用场景剖析
  • C++之STL
  • DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?
  • 数据库工程师进阶秘籍:云计算基础知识题目精选与答案(附PDF)
  • QT-------------对话框和多窗口程序设计
  • 《嵌入式系统:科技与艺术的交响曲》
  • Spark是什么?Flink和Spark区别