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、常见的操作系统
- Windows操作系统:由微软公司开发的操作系统,广泛应用于个人电脑、服务器、游戏机等设备中
- win xp
- win7/win8/win10/win11等
- Unix操作系统(1960年代诞生):由贝尔实验室开发的一类操作系统,主要应用于服务器、工作站、超级计算机等领域,具有稳定、安全等特点
- Solaris:SUN公司开发
- AIX:IBM开发
- HP-UX:惠普公司开发
- macOS:苹果公司开发,主要应用于苹果公司的电脑和笔记本电脑上
- Linux 操作系统(1991年诞生):Linux 操作系统是一种开源的、免费的、类 UNIX 操作系统,用于服务器、工作站、超级计算机等领域
- Debian:一种流行的
稳定
Linux操作系统 - Ubuntu:基于Debian构建的一种流行的Linux
桌面
操作系统 - Red Hat:一种
商业
Linux操作系统,由Red Hat公司开发 - CentOS:通过重新编译Red Hat而得到的Linux操作系统,
免费且源代码开放
- Fedora:由Red Hat公司赞助的基于开源的Linux桌面和服务器操作系统
- Debian:一种流行的
- Chrome OS操作系统:由Google公司开发的基于Chrome浏览器的操作系统,主要应用于Chromebook笔记本电脑上
- Android操作系统:由Google公司开发的操作系统,主要应用于手机、平板电脑等移动设备中
- iOS操作系统:由苹果公司开发的操作系统,主要应用于iPhone、iPad等移动设备中
- HarmonyOS鸿蒙操作系统,由华为公司自主开发
2、Linux发展史
- 1991年:Linux诞生
Linus Torvalds(林纳斯·托瓦兹)
在芬兰赫尔辛基大学开始开发Linux内核,发布了第一个版本(0.01),最初只是为了个人使用,替代Minix操作系统
- 1992年:结合GNU工具
- Linux内核与GNU项目的工具(如GNU C库、bash、编译器等)结合,形成了一个完整的开源操作系统,这个系统后来被称为
GNU/Linux
- Linux内核与GNU项目的工具(如GNU C库、bash、编译器等)结合,形成了一个完整的开源操作系统,这个系统后来被称为
- 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)和人工智能领域的应用,成为全球最重要的操作系统之一
- Linux继续主导
3、Linux目录结构
linux系统中一切皆文件
以下是每个目录的一些详细解释:
-
/root
: 该目录为系统管理员root,也称为超级权限者的用户主目录 -
/home
: 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账户命名 -
/etc
: 所有的系统管理员所需要的配置文件和子目录 -
/usr
:非常重要的目录,用户的很多应用程序和文件都在这个目录,类似windows下的program files目录 -
/bin
: 存放系统启动和运行所需的基本可执行文件(快捷方式,真正存储在/usr/bin
),例如常用的命令ls
、cat
、cp
-
/sbin
: 存放系统管理工具和命令(快捷方式,真正存储在/usr/sbin
),例如ifconfig
-
/opt
: 存放第三方软件的安装目录,比如安装一个MySQL数据库就放到这个目录下,默认是空的 -
/var
: 存储经常变化的文件,如日志(/var/log
)、缓存(/var/cache
) -
/tmp
: 存放临时文件,系统重启后通常会清空 -
/data
: 通常用于存储用户数据文件(自定义目录) -
/www
: 通常存放网站的文件(自定义目录,不是所有系统都有) -
/lib
和/lib64
: 包含系统程序和内核模块的共享库(快捷方式,真正存储在/usr/lib和/usr/lib64) -
/media
和/mnt
: 用于临时挂载外部设备(如 USB、光盘) -
/dev
: 类似于windows的设备管理器,把所有的硬件用文件的形式存储 -
/boot
: 包含引导加载器相关文件(如 GRUB),以及 Linux 内核(vmlinuz
) -
/proc
: 一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统的信息 -
/run
: 存放系统启动时创建的临时文件,如进程的PID文件 -
/srv
: 存储服务相关的数据(如 HTTP 服务的网页文件) -
/sys
: 虚拟文件系统,提供设备和驱动程序的信息
4、终端操作快捷键
快捷键 | 功能描述 |
---|---|
Ctrl + C | 终止当前运行的命令 |
Ctrl + Z | 暂停当前命令,将其放入后台 |
Ctrl + L | 清屏(相当于执行 clear 命令) |
Ctrl + A | 将光标移动到当前行的行首 |
Ctrl + E | 将光标移动到当前行的行尾 |
↑ | 查看上一条历史命令 |
↓ | 查看下一条历史命令 |
Tab | 命令或文件名自动补全 |
二、文件和目录操作
1、pwd - 显示当前目录
pwd
用于用于显示当前工作目录的完整路径
。
常用示例
2、cd - 切换目录
cd
用于切换工作目录
的命令。
基本语法
cd [目录路径]
- 目录路径可以是
绝对路径
或相对路径
- 绝对路径:从根目录
/
开始的完整路径 - 相对路径:基于当前目录的路径
- 绝对路径:从根目录
常用示例
- 切换到
某个目录
cd /home/user/documents
- 切换到
上级目录
cd ..
- 切换到
用户主目录
cd ~ # 或者 cd
- 切换到
上次所在的目录
cd -
- 切换到
根目录
cd /
3、ls - 列出目录内容
ls
是用于列出目录内容
的命令。它可以显示当前目录(或指定目录)下的文件和子目录,并提供多种选项查看详细信息。
基本语法
ls [选项] [目录]
常用示例
- 列出当前目录的文件和子目录的名称
- 列出所有文件,包括隐藏文件(以 . 开头的文件)。其中
.
表示当前目录,..
表示上级目录
- 显示详细信息(
ls -l 可以简写为:ll
)
- 显示易读的文件大小(例如,KB、MB等)
4、mkdir - 创建目录
mkdir
用于创建目录
。
基本语法
mkdir [选项] 目录名
常用示例
- 创建单个目录
mkdir mydir
- 创建多个目录
mkdir dir1 dir2 dir3
- 递归创建多级目录
mkdir -p /home/user/projects/2024/report
5、touch - 创建空文件
touch
用于创建空文件
。
基本语法
touch [选项] 文件名
常用示例
- 创建一个名为example.txt的空文件
touch example.txt
- 同时创建多个空文件
touch file1.txt file2.txt file3.txt
6、cp - 复制文件或目录
cp
用于复制文件或目录
的命令。它可以将文件从一个位置复制到另一个位置,也可以递归复制整个目录。
基本语法
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
常用示例
- 复制单个文件(如果file2.txt不存在,
创建
它;如果已存在,覆盖
它)cp file1.txt file2.txt
- 复制文件到目录(复制单个文件目录会
自动创建
,复制多个文件目录必须存在
)# 复制单个文件 cp file1.txt /home/user/documents/ # 复制多个文件 cp file2.txt file3.txt directory/
- 递归复制目录(将整个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 [选项] 源文件 目标位置
常用示例
- 重命名文件(将oldfile.txt重命名为newfile.txt)
mv oldfile.txt newfile.txt
- 移动文件到目录(默认会直接
覆盖
)# 移动单个文件 mv file1.txt /home/user/documents/ # 移动多个文件 mv file1.txt file2.txt /home/user/documents/
- 移动并重命名文件(将file1.txt移动到/home/user/并重命名为renamed_file.txt)
mv file1.txt /home/user/renamed_file.txt
- 移动整个目录(将整个docs目录移动到/home/user/backup/
中
)mv /home/user/docs /home/user/backup/
8、rm - 删除文件或目录
rm
用于删除文件或目录
的命令。它是一个非常强大的工具,操作不当可能会导致数据永久丢失,因为被删除的文件通常无法恢复。
基本语法
rm [选项] 文件或目录
常用示例
- 删除单个文件
rm file1.txt
- 删除多个文件
rm file1.txt file2.txt file3.txt
- 删除目录及其所有子目录和文件
rm -r my_directory
- 强制删除目录及其内容(跳过不存在文件的错误提示,同时取消删除确认)
rm -rf my_directory
9、tree - 树形结构显示目录内容
tree
用于以树形结构显示目录及其内容
。它非常直观,可以清晰地显示目录层级结构,包括文件和子目录。
常用示例
10、软链接与硬链接
软链接
软链接是一个指向另一个文件或目录的指针文件
。它类似于Windows中的快捷方式
。
特点
- 软链接可以指向
文件
或目录
- 如果目标文件被删除,软链接会变成一个
无效链接
创建软链接基本语法
ln -s [目标文件或目录] [软链接名称]
常用示例
- 创建文件的软链接(
link_to_file.txt
是指向file.txt
的软链接)ln -s /home/user/file.txt /home/user/link_to_file.txt
- 创建目录的软链接
ln -s /home/user/docs /home/user/link_to_docs
硬链接
硬链接是一个指向目标文件实际数据块的链接。它本质上是另一个文件名,但与原文件共享同一数据
。
特点
- 硬链接和原文件在操作上完全相同,删除任意一个,另一个仍然可用
- 硬链接只能指向文件,不能指向目录
- 硬链接和原文件共用同一组数据块,文件的修改会反映到所有硬链接上
创建硬链接基本语法
ln [目标文件] [硬链接名称]
常用示例
- 创建硬链接(
hardlink_to_file.txt
是file.txt
的硬链接)ln /home/user/file.txt /home/user/hardlink_to_file.txt
三、文件内容编辑
1、vi、vim、view概述
在Linux系统中,vi
、vim
和 view
是常用的文本编辑工具,尽管它们具有类似的功能,但也存在一些差异和各自的适用场景。
功能对比表
特性 | vi | vim | view |
---|---|---|---|
定位 | 基础文本编辑器 | 增强版文本编辑器 | 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 [选项] 文件名
常用示例
- 查看文件内容(在终端中显示文件的
完整内容
)cat file.txt
- 查看内容并添加
行号
2、more/less - 分页查看文件内容
more
:简单的分页查看工具,主要支持向下翻页,功能有限less
:功能强大的分页查看工具,支持上下翻页
、搜索
和跳转
,更适合查看大文件
基本语法
less [选项] 文件名
常用操作键
按键 | 功能 |
---|---|
pagedown/空格键 | 向下翻一页 |
pageup/b | 返回上一页 |
上/下箭头 | 向上或向下滚动一行 |
/text | 搜索text ,按n 查看下一个,N上一个 |
?text | 搜索text (向上),按n 查看下一个,N上一个 |
g | 跳转到文件开头 |
G | 跳转到文件末尾 |
q | 退出less |
常用示例
- 查看文件内容(内容以分页形式显示)
less file.txt
- 使用
-N
显示行号,-m
显示百分比
3、head - 显示文件头部内容
head
用于显示文件的开头部分内容。默认情况下,它会输出文件的前10行
。
基本语法
head [选项] 文件名
常用示例
- 默认显示前10行
head file.txt
- 显示前20行
head -n 20 file.txt # 或者 head -20 file.txt
- 显示前50个字节
head -c 50 file.txt
4、tail - 显示文件尾部内容
tail
用于显示文件的尾部部分内容。默认情况下,它会输出文件的最后10行
。
基本语法
tail [选项] 文件名
常用示例
- 默认显示最后10行
tail file.txt
- 显示最后20行
tail -n 20 file.txt # 或者 tail -20 file.txt
- 显示最后50个字节
tail -c 50 file.txt
- 实时跟踪文件变化(可以与
-n
选项结合,显示最近的指定行数并实时更新)
五、搜索查找
1、grep - 内容查找
grep
用于在文件或文本中查找指定内容
。它会根据匹配的模式搜索文件,并输出匹配的行。
基本语法
grep [选项] "搜索内容" [文件名]
常用示例
- 在文件中查找指定内容
grep "hello" file.txt
- 显示匹配行的
行号
- 统计匹配的
行数
递归
搜索目录中的文件
2、find - 文件目录查找
find
用于在文件系统中查找文件或目录
。它可以根据各种条件(如名称、大小、时间等)进行灵活的搜索,甚至可以对找到的文件执行操作。
基本语法
find [路径] [搜索条件] [操作]
常用选项
选项/条件 | 功能 |
---|---|
-name | 按名称查找文件或目录,支持通配符 |
-type | 按文件类型查找,如文件(f )或目录(d ) |
-size | 按文件大小查找 |
-exec | 对找到的文件执行指定命令 |
-delete | 删除找到的文件或目录 |
常用示例
- 按名称查找文件
find /path/to/search -name "filename"
- 支持通配符
find /path/to/search -name "*.txt"
- 按大小查找(
+
:大于、-
:小于;k
:KB、M
:MB、G
:GB)find /path/to/search -size +10M
- 删除找到的文件
find /path/to/search -name "*.log" -delete
- 移动文件到某个目录(
{}表示找到的每个文件
)find /path/to/search -name "*.txt" -exec mv {} /destination/path/ \;
- 对找到的每个.txt 文件执行cat命令
find /path/to/search -name "*.txt" -exec cat {} \;
3、locate - 全局搜索
locate
用于快速全局搜索文件或目录
。与find命令相比,locate的搜索速度更快,因为它使用的是事先构建好的数据库,而不是实时遍历文件系统。
基本语法
locate [选项] 搜索内容
数据库更新
- 数据库由系统定期自动更新(通常通过 cron 定时任务)
- 如果需要手动更新,可以运行:
sudo updatedb
常用示例
- 查找文件或目录
locate file.txt
- 模糊匹配
locate "*.txt"
- 只显示前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
是一个常用的工具,主要用于打包文件和目录。它还可以结合压缩工具(如 gzip
、bzip2
、xz
)来生成压缩文件。
基本语法
tar [选项] -f 文件名.tar [要操作的文件或目录]
常用选项
选项 | 描述 |
---|---|
-c | 创建压缩文件 |
-x | 解压归档文件 |
-f | 指定归档文件的名称 |
-z | 使用gzip 压缩或解压(快速压缩和解压 ) |
-j | 使用bzip2 压缩或解压(更高的压缩率,解压慢 ) |
-J | 使用xz 压缩或解压(极限压缩,解压最慢 ) |
-v | 显示详细操作过程 |
-C | 指定解压的目标目录 |
-t | 列出归档文件的内容 |
压缩文件
-
仅打包不压缩(将目录或文件打包成
.tar
文件)tar -cf archive.tar file1.txt file2.txt my_folder
-
打包并使用
gzip
压缩(创建.tar.gz
文件)tar -czf archive.tar.gz file1.txt my_folder
-
打包并使用
bzip2
压缩(创建.tar.bz2
文件)tar -cjf archive.tar.bz2 file1.txt my_folder
-
打包并使用
xz
压缩(创建.tar.xz
文件)tar -cJf archive.tar.xz file1.txt my_folder
解压文件
-
解压
.tar
文件tar -xf archive.tar
-
解压
.tar.gz
文件tar -xzf archive.tar.gz
-
解压
.tar.bz2
文件tar -xjf archive.tar.bz2
-
解压
.tar.xz
文件tar -xJf archive.tar.xz
-
解压到指定目录
tar -xzf archive.tar.gz -C /path/to/destination
-
查看压缩文件
.tar.gz
的内容tar -tzf archive.tar.gz
七、上传下载
1、rz - 上传文件
rz
用于将文件从本地上传到远程服务器
。
用法:
- 在服务器中运行(这会打开文件上传的交互界面)
rz
- 在弹出的窗口中选择要上传的文件(你的终端工具需要支持Zmodem,例如Xshell、SecureCRT、MobaXterm)
- 文件会自动上传到服务器
当前路径下
2、sz - 下载文件
sz
用于将文件从远程服务器下载到本地
。
用法:
- 在服务器中运行(文件会自动下载到本地的默认目录)
sz filename
- 下载多个文件
sz file1 file2
3、wget - 网络下载工具
wget
是一个Linux下的非交互式网络下载工具,支持从HTTP
、HTTPS
和FTP
协议下载文件或网页资源。它常用于命令行环境,尤其适合在脚本中自动下载文件。
命令格式
wget [选项] [URL]
常用示例
- 下载单个文件
wget http://example.com/file.txt
- 此命令会从指定URL下载 file.txt文件到
当前目录
- 此命令会从指定URL下载 file.txt文件到
- 通过代理下载
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 aux | ps -ef |
---|---|---|
格式 | 用户友好的格式,显示 CPU、内存占用等信息 | 全格式显示,包含父进程 ID(PPID) |
输出字段 | 包括 %CPU 、%MEM 、VSZ 、RSS 等 | 包括 PPID 和 UID ,无内存或 CPU 占用信息 |
参数风格 | BSD 风格(无 - ) | UNIX 风格(带 - ) |
适用场景 | 查看资源占用、运行状态更直观 | 查看进程间关系(父子进程关系) |
2、jps - 查看Java运行程序
jps
是Java提供的一个命令行工具,用于显示当前运行的Java进程
。它是JDK
中的一部分,主要用于调试和监控Java应用程序。
常用示例
- 列出本地 Java 进程
- 显示主类的完整包名或 JAR 文件的路径
3、kill - 终止进程
- 正常终止进程
kill 12345
- 强制终止进程
kill -9 12345
- 终止多个进程
kill 12345 67890
4、netstat - 查看网络连接状态及端口
netstat
是一个网络工具,用于显示网络连接状态
、监听端口
、路由表、网络接口统计信息等。尽管在一些现代Linux发行版中已被标记为过时工具,但它仍然是一种经典而强大的工具。
基本语法
netstat [选项]
常用选项
选项 | 描述 |
---|---|
-a | 显示所有网络连接和端口,包括监听状态 |
-n | 以数字格式显示地址和端口 |
-t | 显示 TCP 连接 |
-u | 显示 UDP 连接 |
-l | 仅显示监听状态的端口 |
-p | 显示进程 ID 和进程名称(需要 root 权限) |
-i | 显示网络接口状态 |
常用组合命令
-
查看当前所有监听端口及对应的进程
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和对应的程序名称
-
查看指定端口的网络连接状态
netstat -an | grep :22
5、lsof - 列出被进程打开的文件
lsof
命令用于排查文件锁定、端口占用
、网络连接
及进程资源占用等问题。
基本语法
lsof [选项] [文件名/进程]
常用示例
- 列出所有被打开的文件
COMMAND
:打开文件的进程名称PID
:进程的IDUSER
:打开文件的用户NAME
:文件路径名称
- 查看某个特定文件被哪些进程打开
lsof /path/to/file
- 查看所有网络连接(TCP、UDP)
lsof -i
- 查看某个
端口
被哪个进程占用
- 查看指定网络接口的监听端口
-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文件存在
- 由于文件
nonexistentfile
不存在,错误信息会显示在终端,而不会被写入文件output.txt
- 使用
2>
将错误信息重定向到文件
- 使用
>
和2>
重定向标准输出和标准错误到不同文件
- 使用
>
和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
:后一个命令,接收输入并处理
常用示例
-
显示当前目录下的文件,并过滤出包含 “test” 的文件
ls -l | grep "test"
-
查看并筛选包含"nginx" 的进程
ps aux | grep "nginx"
4、which - 搜索命令
which
命令用于显示某个命令的可执行文件路径
。它会在环境变量PATH中搜索目标命令,并返回第一个匹配的路径。
命令格式
which [命令名称]
常用示例
- 查看命令路径(表示ls命令的可执行文件位于/bin/ls)
- 检查命令是否安装(如果返回路径,说明命令已安装;如果没有输出,则说明命令可能未安装)
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
:文件系统挂载点
常用示例
- 显示特定目录的磁盘使用情况
- 查看所有文件系统的总计
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 别名='命令'
别名
是您要创建的快捷方式名称命令
是您希望别名执行的实际命令- 注意:等号
=
两边不能有空格,且命令部分通常需要用单引号括起来,避免意外扩展
常用示例
-
设置常用别名
# 常用命令简化 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'
-
查看别名
-
取消别名
# 取消 ll 别名 unalias ll
永久保存别名
别名默认只在当前会话中有效
。如果想让别名永久生效,可以将别名添加到用户的Shell配置文件中
。
- 编辑 Shell 配置文件
- 如果使用 Bash,编辑
~/.bashrc
文件:vim ~/.bashrc
- 如果使用 Zsh,编辑
~/.zshrc
文件:vim ~/.zshrc
- 如果使用 Bash,编辑
- 添加别名
alias ll='ls -la' alias grep='grep --color=auto'
- 保存并退出
- 使修改立即生效
source ~/.bashrc
十、软件安装方式
在Linux系统中,apt
、yum
和dnf
是三种常见的软件包管理工具,分别用于不同的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是CentOS
、Red 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
: 自动清理无用依赖
特点
- 更快的性能和更少的内存占用
- 改善了依赖关系的解决算法
- 更现代化的插件和扩展支持