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

【Linux】常用命令汇总

【Linux】常用命令

  • 【一】tar命令
    • 【1】可用参数
    • 【2】常用案例
      • (1)创建归档(打包)
      • (2)查看归档内容:​​
      • (3)解包归档 (提取):​​
  • 【二】日志查看命令
    • 【1】基础命令
    • 【2】组合技巧

【一】tar命令

【1】可用参数

(1)操作模式 (必须指定一个):

🔥​🔥🔥​-c, --create:​​ ​创建一个新的归档文件。
​-x, --extract, --get:​​ ​解包​(提取)归档文件中的内容。
​-t, --list:​​ ​列出归档文件中的内容(查看包含哪些文件)。
​-r, --append:​​ ​追加文件到已存在的归档文件末尾。(注意:这不是更新,可能导致重复文件)-u, --update:​​ 仅追加比归档文件中同名文件更新的文件。(谨慎使用,行为可能不符合直觉)-A, --catenate, --concatenate:​​ ​合并多个 .tar归档文件。

(2)指定归档文件名:​​

🔥​🔥🔥-f [文件名], --file=[文件名]:​​ ​指定归档文件名。这是极其重要的选项。后面必须紧跟归档文件的名称(或路径)。例如:
创建:tar -cvf backup.tar /some/dir
解包:tar -xvf backup.tar
查看:tar -tvf backup.tar.gz

(3)压缩/解压缩选项 (通常与 -f结合使用):


🔥​🔥🔥​-z, --gzip:​​ 使用 ​gzip​ 进行压缩(创建 .tar.gz/.tgz)或解压缩。
创建:tar -czvf archive.tar.gz files...
解压:tar -xzvf archive.tar.gz​-j, --bzip2:​​ 使用 ​bzip2​ 进行压缩(创建 .tar.bz2/.tbz2)或解压缩。压缩率通常比 gzip 高,但速度慢。
创建:tar -cjvf archive.tar.bz2 files...
解压:tar -xjvf archive.tar.bz2​-J, --xz:​​ 使用 ​xz​ 进行压缩(创建 .tar.xz/.txz)。通常提供比 bzip2 更高的压缩率,但速度更慢。
创建:tar -cJvf archive.tar.xz files...
解压:tar -xJvf archive.tar.xz​--zstd:​​ (较新版本支持) 使用 ​Zstandard (zstd)​​ 进行压缩(创建 .tar.zst)。在压缩率和速度之间取得较好平衡。
创建:tar --zstd -cvf archive.tar.zst files...
解压:tar --zstd -xvf archive.tar.zst​-a, --auto-compress:​​ 根据归档文件名的后缀自动推断压缩类型并调用相应的程序(解压时常用)。
解压:tar -xavf archive.tar.gz(等价于 tar -xzvf)
解压:tar -xavf archive.tar.xz(等价于 tar -xJvf)

(4)输出/交互选项:​​


🔥​🔥🔥-v, --verbose:​​ ​详细模式。在处理文件时列出文件名。强烈推荐使用,方便了解进度。​-p, --preserve-permissions, --same-permissions:​​ 解包时保留文件的原始权限和所有权信息(需要 root 权限才能完全恢复所有者)。
​--same-owner:​​ 解包时尝试保留文件的所有者(通常需要 root 权限)。​-k, --keep-old-files:​​ 解包时不覆盖已存在的文件。遇到同名文件会跳过并报错。​--overwrite:​​ 解包时覆盖已存在的文件和目录(默认行为,但显式指定有时有用)。​--skip-old-files:​​ 解包时跳过已存在的文件(不覆盖也不报错)。​🔥​🔥🔥-C [目录], --directory=[目录]:​​ ​改变目标目录。
创建:在指定目录下查找要归档的文件(相对路径基于此目录)。tar -cvf backup.tar -C /path/to/source .(归档 /path/to/source下的所有内容)
解包:将文件提取到指定目录。tar -xvf backup.tar -C /path/to/target​--strip-components=[N]:​​ 解包时去除归档文件中路径的前 N 层目录。
例如:归档文件包含 project/src/main.c,使用 --strip-components=1解压后,会得到 src/main.c。​-O, --to-stdout:​​ 解包时将文件内容输出到标准输出 (stdout)​,而不是写入磁盘文件。常与管道 (|) 结合进行流处理。
tar -xOf archive.tar.gz path/to/file.txt(查看特定文件内容)
tar -xzf archive.tar.gz path/to/file.txt -O | grep "keyword"(搜索归档内文件内容)

(5)选择文件/排除文件:​​

[文件或目录列表]:​​ 在命令末尾指定要归档的文件或目录路径。支持通配符 (*, ?),但注意 shell 会扩展通配符,最好用引号保护或结合 --files-from。
🔥​🔥🔥tar -cvf docs.tar *.txt(归档当前目录下所有 .txt文件)--exclude=[模式]:​​ ​排除匹配指定模式的文件或目录。模式可以是路径或 glob 模式。可多次使用。
tar -cvf backup.tar --exclude='*.log' --exclude='temp/' /home/user​--exclude-from=[文件]:​​ 从指定文件中读取要排除的模式列表(每行一个模式)。
tar -cvf backup.tar --exclude-from=exclude-list.txt /home/user​-T [文件], --files-from=[文件]:​​ 从指定文件中读取要归档的文件路径列表(每行一个路径)。常用于精确控制归档内容。
tar -cvf backup.tar -T file-list.txt

(6)处理链接:​​


🔥​🔥🔥​-h, --dereference:​​ ​跟随(解引用)符号链接。归档的是链接指向的实际文件/目录的内容,而不是链接本身。
​​(默认行为):​​ 归档符号链接本身​(存储为链接类型条目)。
​​(默认行为):​​ 归档硬链接本身​(存储为硬链接类型条目,保留链接关系)。
​--hard-dereference:​​ (较少用) 跟随硬链接,归档它们指向的文件内容(破坏硬链接关系,存储为独立文件)。

(7)其他实用选项:​​

--checkpoint=[N], --checkpoint-action=[动作]:​​ 每处理 N 条记录(默认 10)执行一次检查点动作(如打印信息 --checkpoint-action=echo)。
​--totals:​​ 在处理完成后显示总字节数。
​--wildcards:​​ 在使用 --exclude或 -T时显式启用通配符匹配(现代 tar 通常默认启用)。
​--selinux, --no-selinux:​​ 启用或禁用 SELinux 上下文信息的保存/恢复。
​--acls, --no-acls:​​ 启用或禁用 POSIX ACLs 的保存/恢复。
​--xattrs, --no-xattrs:​​ 启用或禁用扩展属性 (xattrs) 的保存/恢复。

【2】常用案例

(1)创建归档(打包)

(1)基本打包:​​ 将 /home/user/docs目录打包成 docs.tar

tar -cvf docs.tar /home/user/docs

(2)打包并压缩 (gzip):​​ 将 /var/log打包并压缩成 logs.tar.gz

🔥​🔥🔥tar -czvf logs.tar.gz /var/log

(3)打包并压缩 (bzip2):​​ 将当前目录打包并压缩成 project.tar.bz2

tar -cjvf project.tar.bz2 .

(4)打包并压缩 (xz):​​ 将 /usr/local/bin打包并压缩成 binaries.tar.xz

tar -cJvf binaries.tar.xz /usr/local/bin

(5)打包并压缩 (zstd):​​ 将 /etc打包并压缩成 config.tar.zstbash

tar --zstd -cvf config.tar.zst /etc

(6)​打包时排除文件:​​ 打包 /home/user,排除 .cache目录和所有 .tmp文件bash

tar -czvf home_backup.tar.gz --exclude='.cache' --exclude='*.tmp' /home/user

​(7)从列表文件打包:​​ 根据 important_files.txt中的路径列表打包bash

tar -czvf important.tar.gz -T important_files.txt

(8)​打包时跟随符号链接:​​ 打包 /opt/app,并解引用其中的符号链接bash

🔥​🔥🔥tar -czhvf app.tar.gz /opt/app

(9)​打包到特定目录下的内容:​​ 打包 /path/to/source目录下的所有内容(不包括 source目录本身)bash

🔥​🔥🔥tar -czvf source_content.tar.gz -C /path/to/source .

(2)查看归档内容:​​

​(1)列出内容:​​ 查看 backup.tar.gz中包含哪些文件bash

tar -tzvf backup.tar.gz

(2)​查看特定文件内容:​​ 查看 archive.tar.xz中 path/to/file.conf的内容bash

tar -xJOf archive.tar.xz path/to/file.conf

(3)​搜索归档内容:​​ 在 logs.tar.gz中搜索包含 “error” 的文件名bash

tar -tzvf logs.tar.gz | grep error

(4)​搜索归档文件内容:​​ 在 source.tar.bz2中搜索所有 .py文件里包含 “import requests” 的行 (结合 grep)bash

tar -xjOf source.tar.bz2 $(tar -tjf source.tar.bz2 | grep '\.py$') | grep 'import requests'

(3)解包归档 (提取):​​

(1)​基本解包:​​ 解压 data.tar到当前目录​bash

tar -xvf data.tar

(2)​解压并解压缩 (gzip):​​ 解压 software.tar.gz到当前目录​bash

🔥​🔥🔥tar -xzvf software.tar.gz

​(3)解压并解压缩 (bzip2):​​ 解压 images.tar.bz2到当前目录​bash

tar -xjvf images.tar.bz2

(4)​解压并解压缩 (xz):​​ 解压 archive.tar.xz到当前目录​bash

tar -xJvf archive.tar.xz

(5)​解压并解压缩 (zstd):​​ 解压 backup.tar.zst到当前目录​bash

tar --zstd -xvf backup.tar.zst

(6)​解压到指定目录:​​ 解压 website.tar.gz到 /var/www/htmlbash

🔥​🔥🔥tar -xzvf website.tar.gz -C /var/www/html

(7)​解压时保留权限:​​ 解压系统备份 root_backup.tar.gz并保留原始权限 (通常需要 root)bash

sudo tar -xzpvf root_backup.tar.gz -C /

(8)​解压时不覆盖已有文件:​​ 解压 update.tar,如果文件已存在则跳过bash

tar -xkvf update.tar

(9)​解压特定文件:​​ 从 big_archive.tar.gz中只解压 dir/subdir/file.txtbash

tar -xzvf big_archive.tar.gz dir/subdir/file.txt

(10)​解压并去除路径前缀:​​ 解压 project.tar.gz,去除最外层目录(假设归档内第一层是 project-v1.0/)bash

tar -xzvf project.tar.gz --strip-components=1

【二】日志查看命令

【1】基础命令

(1)cat- 连接并打印文件内容
​作用​:一次性将整个文件内容输出到终端。
​适用场景​:查看非常小的日志文件。对于大文件,会刷屏且难以阅读。

cat /var/log/syslog

(2) less- 分页查看器 (推荐)
​作用​:分页显示文件内容,支持上下滚动、搜索等,不会一次性加载整个文件。
​适用场景​:查看任何大小日志文件的首选工具。
​常用操作​:

空格键/ Page Down: 向下翻一页
b/ Page Up: 向上翻一页
/关键词: 向下搜索(按 n下一个,N上一个)
?关键词: 向上搜索
g: 跳到文件开头
G: 跳到文件末尾
q: 退出
🔥​🔥🔥less /var/log/auth.log
# 进入less后,输入 `/Failed` 来搜索所有失败登录尝试

(3)tail- 查看文件尾部
​作用​:显示文件的最后一部分内容。
​适用场景​:查看最新的日志条目,尤其是实时跟踪日志增长。
​常用选项​:

-n <行数>: 显示最后 N 行(例如 tail -n 50 file.log)
-f/ --follow: ​实时跟踪日志输出。这是最重要的选项,用于监控正在写入的日志。
-F: 类似于 -f,但更强大。它会在文件被轮转(rotate)或删除后重新打开新文件继续跟踪。(例如 logrotate后会自动跟踪新产生的日志文件)

​案例​:

# 查看最后20行日志
tail -n 20 /var/log/nginx/access.log# 实时跟踪系统认证日志(监视登录行为)
tail -f /var/log/auth.log🔥​🔥🔥# 实时跟踪系统认证日志(监视登录行为)
tail -500f /var/log/auth.log# 实时跟踪日志,即使日志文件被轮转也能继续(最佳实践)
tail -F /var/log/myapp/app.log

(4)head- 查看文件头部
​作用​:显示文件的开始一部分内容。
​适用场景​:查看日志文件的开头,例如确认日志的格式或初始启动信息。

# 查看日志文件的前10行
head -n 10 /var/log/bootstrap.log

(5)grep- 文本搜索利器
​作用​:使用正则表达式搜索文本,并打印匹配的行。
​适用场景​:在日志中过滤出包含特定关键词、错误代码、IP地址等的行。
​常用选项​:

-i: 忽略大小写
-v: ​反向选择,只显示不匹配的行(排除干扰)
-r/ -R: 递归搜索目录下的所有文件
-n: 显示匹配行所在的行号
-A <数字>: 显示匹配行之后的 N 行(After-B <数字>: 显示匹配行之前的 N 行(Before-C <数字>: 显示匹配行前后的 N 行(Context

​案例​:

# 在syslog中搜索所有包含"error"的行(忽略大小写)
grep -i error /var/log/syslog# 在Nginx访问日志中查找来自特定IP(192.168.1.1)的请求
grep '192.168.1.1' /var/log/nginx/access.log🔥​🔥🔥# 搜索包含“error”的行,并显示其后的3行内容(获取错误上下文)
grep -A 3 -i error /var/log/myapp/app.log# 从多个日志文件中搜索“Timeout”关键字
grep -r "Timeout" /var/log/# 排除所有包含“DEBUG”的行(只显示非调试信息)
grep -v "DEBUG" /var/log/myapp/app.log

【2】组合技巧

(1)实时跟踪并过滤日志
这是最常用的组合,一边实时看新日志,一边过滤出你关心的内容。

# 案例:实时监控Nginx日志,只显示404错误的请求
tail -F /var/log/nginx/access.log | grep ' 404 '🔥​🔥🔥# 使用 grep -A显示匹配行后的内容
tail -f /path/to/logfile.log | grep --line-buffered -A 10 "your_keyword"# 显示匹配行前后各 5 行(-C = Context)
tail -f app.log | grep --line-buffered -C 5 "Connection refused"# 组合使用:显示匹配行前 3+ 匹配行 +7 行
tail -f app.log | grep --line-buffered -B 3 -A 7 "Transaction failed"# 案例:实时监控应用日志,同时过滤掉“heartbeat”这种无关紧要的信息
tail -f /var/log/myapp.log | grep -v "heartbeat"# 同时监控多个关键词(OR 逻辑)
tail -f logfile | grep --line-buffered -A 5 -e "Timeout" -e "Deadlock"# 高亮显示关键词(更易阅读)
tail -f logfile | grep --line-buffered --color=always -A 3 "Critical"

(2)统计和分析

# 案例:统计Nginx访问日志中每个IP的访问次数(找出谁在刷接口)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20# 分解说明:
# awk '{print $1}'  // 提取第一列(默认是IP地址)
# sort             // 对IP进行排序,为下一步去重准备
# uniq -c          // 计数并去重
# sort -nr         // 按数字逆序排序(访问次数从高到低)
# head -n 20       // 显示前20个# 案例:查看HTTP状态码的分布
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr# 案例:找出消耗时间最长的请求(假设日志最后一列是请求耗时)
awk '{print $NF " | " $0}' /var/log/nginx/access.log | sort -nr | head -n 10
# $NF 代表最后一列(Number of Field)🔥​🔥🔥# 显示匹配行及之后10行(无分隔符)
tail -f logfile | awk '/keyword/{c=11} c&&c--'

(3)查看特定时间范围的日志
如果你的日志时间格式可以被识别(如 [10/Sep/2023:14:30:00]),可以使用 sed、awk或 grep来提取时间段。

# 案例:提取今天上午10点到11点的日志 (假设时间格式是HH:MM:SS)
grep '10:\[0-5][0-9]:[0-5][0-9]' /var/log/myapp.log# 更精确的方法,使用awk(如果时间戳在每行开头)
awk '/Sep 10 10:00:00/,/Sep 10 11:00:00/' /var/log/syslog
# 注意:这个命令依赖于日志中确实存在这两个精确时间点的行

(4)结合 cut, awk, sort, uniq进行多维分析
awk是一个强大的文本处理语言,非常适合处理结构化的日志(如 CSV 或空格分隔的日志)。

# 案例:分析Nginx日志,找出访问量最高的URL(第7列)
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10# 案例:计算平均响应时间(假设最后一列是响应时间)
awk '{sum+=$NF; count++} END {print "Avg:", sum/count, "ms"}' /var/log/nginx/access.log

文章转载自:

http://ZeJ78ktF.pdgqf.cn
http://YrzRNOtY.pdgqf.cn
http://Qf71a4ex.pdgqf.cn
http://oNDuLWEK.pdgqf.cn
http://jQJLslIe.pdgqf.cn
http://OlxIDb03.pdgqf.cn
http://fflykF3C.pdgqf.cn
http://aTOvekqI.pdgqf.cn
http://lred6gVI.pdgqf.cn
http://k2PUwpo4.pdgqf.cn
http://rWhzlsR3.pdgqf.cn
http://2ZVnNgZ5.pdgqf.cn
http://PawhJit2.pdgqf.cn
http://Ppc5m2ZL.pdgqf.cn
http://SUeGZqjU.pdgqf.cn
http://LCNci1HW.pdgqf.cn
http://jaXRbRMi.pdgqf.cn
http://Rq0BlSXa.pdgqf.cn
http://oPSsWCp4.pdgqf.cn
http://iYPE1xLR.pdgqf.cn
http://hRekOU0P.pdgqf.cn
http://kkQqxeG0.pdgqf.cn
http://KT3Ue6PN.pdgqf.cn
http://I1tlHxQC.pdgqf.cn
http://NuwmCdto.pdgqf.cn
http://piRHmGTX.pdgqf.cn
http://tas0ctDo.pdgqf.cn
http://YsiGIJBH.pdgqf.cn
http://eAE9dYV6.pdgqf.cn
http://NLcqcb9j.pdgqf.cn
http://www.dtcms.com/a/377065.html

相关文章:

  • 减速机和减速电机市场:增长逻辑、驱动因素及头部格局全解析
  • 第3节-使用表格数据-外键
  • 面试题: Mysql中的深分页如何处理
  • OpenCV 图像直方图
  • 【51单片机】【protues仿真】基于51单片机智能路灯PCF8591系统
  • 虚拟局域网(VLAN)入门指南:打破物理界限的网络划分术
  • 【HD-RK3576-PI】LoRa无线串口模块
  • 自动驾驶中的传感器技术42——Radar(3)
  • kafka消息积压出现的原因、危害及解决方案
  • 《sklearn机器学习——数据预处理》非线性转换
  • 登顶 NAVSIM!博世最新IRL-VLA:逆强化学习重构自动驾驶VLA闭环训练
  • 速度与安全双突破:大视码垛机重构工业自动化新范式​
  • Java全栈开发面试实录:从基础到微服务的深度解析
  • 智慧养老:科技的温度,生命的尊严——构建银发时代的幸福图景
  • 【SpringBoot3】与myBatis-plus不兼容解决
  • 阿尔泰科技ARTS-3002U USB总线多功能数据采集卡 技术解析
  • Java 教程:轻松实现 Excel 与 CSV 互转 (含批量转换)
  • 行业学习【电商】:订阅制电商
  • 【Halcon】Halcon HObject 转 Bitmap 的几种实现方法
  • 单片机启动文件——数据段重定位,BSS段清零
  • [xboard]ARM汇编基础学习
  • rv1126bp之mipi sensor驱动
  • 手机上可以记录每日工作计划的待办提醒工具?
  • 今天开始我们学习安全管理模块Linux防火墙
  • 反爬API接口:技术实现与应用场景
  • 10.3 马尔可夫矩阵、人口和经济
  • OpenResty 中实现限流(Rate Limiting)的实战案例
  • 告别“人肉API”时代:AI智能体如何重构人机协同新范式
  • Centos7部署ceph存储
  • 【Pywinauto库】10.1 pywinauto.base_wrapper控件