Linux 运维常用命令详解

你提供的文件内容包含了一些实用的 Linux 命令,主要用于日志搜索和文本过滤。以下是这些命令的总结,以及一些常用的类似运维命令:


📌 已使用的命令总结

1. grep 命令用于文本搜索

bash 复制代码
grep "update" sms_mo_set_2021-06-30.log -A 3 -B 3 | grep "15527343876" -A 3 -B 3
  • 在文件中查找包含 update 的行,并显示前后各3行。
  • 再在这些结果中查找手机号 15527343876 并显示前后3行。

2. 使用通配符搜索多个文件

bash 复制代码
grep "查找的内容" ./**/*.log -C 5
  • 在所有子目录的 .log 文件中搜索内容,并显示匹配行的前后5行。

3. find + xargs 结合 grep 搜索

bash 复制代码
find ./* -name '2021*.log' | xargs grep "13871497438" -C 5
  • 查找所有以 2021 开头的 .log 文件。
  • 使用 xargs 将找到的文件传递给 grep,搜索手机号并显示前后5行。

4. 实时跟踪日志并过滤

bash 复制代码
tailf 2022-05-24.log | grep --line-buffer "errcode" -C 0 | grep -v "\:ok"
  • tailf 实时跟踪日志文件。
  • grep --line-buffer 逐行输出匹配 errcode 的行。
  • grep -v "\:ok" 排除包含 :ok 的行。

5. 查找特定日期的日志并搜索内容

bash 复制代码
find ./* -name '2024-11*.log' | xargs grep "81457574053543936" -C 5 | grep "updateStatus" -C 5
  • 查找 2024-11 开头的日志文件。
  • 在这些文件中搜索指定 ID 并显示前后5行。
  • 再在这些结果中搜索 updateStatus 并显示前后5行。

🛠 常用 Linux 运维命令推荐

文件与目录操作

bash 复制代码
ls -la          # 列出详细文件信息
find /var/log -name "*.log" -mtime -7  # 查找7天内修改过的日志文件
du -sh *        # 查看当前目录下各文件/文件夹大小
df -h           # 查看磁盘使用情况

日志分析

bash 复制代码
tail -100f app.log       # 实时跟踪最后100行日志
awk '/error/ {print $0}' app.log  # 使用 awk 过滤错误行
sed -n '10,20p' app.log  # 查看第10到20行

进程与系统监控

bash 复制代码
top               # 实时系统监控
htop              # 更友好的 top(需安装)
ps aux | grep nginx  # 查找 nginx 进程
netstat -tuln     # 查看端口监听情况
systemctl status nginx  # 查看服务状态

网络调试

bash 复制代码
ping example.com
traceroute example.com
curl -I http://localhost  # 只显示响应头
wget http://example.com/file.tar.gz

压缩与归档

bash 复制代码
tar -czvf archive.tar.gz /path/to/dir  # 压缩
tar -xzvf archive.tar.gz               # 解压
zip -r archive.zip /path/to/dir        # ZIP 压缩

权限与用户管理

bash 复制代码
chmod 755 script.sh    # 修改文件权限
chown user:group file  # 修改文件所有者
useradd newuser        # 添加用户
passwd newuser         # 修改密码

📁 文件与目录操作

1. ls - 列出目录内容

bash 复制代码
ls -la
  • -l:使用长格式显示文件详细信息
  • -a:显示所有文件,包括隐藏文件(以.开头的文件)
  • 示例输出包括文件权限、所有者、大小、修改日期等

2. find - 查找文件

bash 复制代码
find /var/log -name "*.log" -mtime -7
  • /var/log:搜索的起始目录
  • -name "*.log":按名称模式匹配,查找所有.log文件
  • -mtime -7:查找7天内修改过的文件
  • 其他有用选项:-type f(只找文件),-size +10M(大于10MB的文件)

3. du - 查看磁盘使用情况

bash 复制代码
du -sh *
  • -s:显示总计大小
  • -h:以人类可读格式显示(GB, MB)
  • *:当前目录下所有文件和目录
  • du -sh /home:查看/home目录的总大小

4. df - 显示磁盘空间使用情况

bash 复制代码
df -h
  • -h:以易读格式显示(GB, MB)
  • 显示所有挂载文件系统的使用情况,包括总容量、已用空间、可用空间和挂载点

5. mkdir - 创建目录

bash 复制代码
mkdir -p /path/to/new/directory
  • -p:创建多级目录,如果父目录不存在也会一并创建

6. rm - 删除文件或目录

bash 复制代码
rm -rf directory_name
  • -r:递归删除目录及其内容
  • -f:强制删除,不提示确认
  • 注意:使用此命令要特别小心,删除的文件难以恢复

📊 日志分析

1. tail - 查看文件尾部内容

bash 复制代码
tail -100f app.log
  • -100:显示最后100行
  • -f:实时跟踪文件变化(常用于监控日志)
  • tail -n 50 file.log:显示最后50行

2. head - 查看文件头部内容

bash 复制代码
head -20 file.log
  • 显示文件的前20行
  • 常用于查看日志文件的开始部分

3. grep - 文本搜索

bash 复制代码
grep "error" app.log
grep -i "warning" app.log  # 忽略大小写
grep -v "success" app.log  # 反向匹配,排除含success的行
grep -C 3 "error" app.log  # 显示匹配行及其前后3行
  • 强大的文本搜索工具,支持正则表达式
  • 常用于在日志中查找特定模式

4. awk - 文本处理工具

bash 复制代码
awk '/error/ {print $0}' app.log          # 打印包含error的行
awk -F: '{print $1}' /etc/passwd          # 以冒号分隔,打印第一列
awk '{print NR ":" $0}' app.log           # 显示行号
awk '{sum+=$3} END {print sum}' data.txt  # 计算第三列总和
  • 强大的文本分析工具,可以处理结构化文本数据
  • -F:指定字段分隔符
  • NR:当前行号
  • $0:整行内容,$1$2等表示各字段

5. sed - 流编辑器

bash 复制代码
sed -n '10,20p' app.log        # 查看第10到20行
sed 's/foo/bar/g' file.txt     # 将文件中所有foo替换为bar
sed -i.bak 's/old/new/g' file  # 直接修改文件并创建备份
sed '/pattern/d' file          # 删除匹配模式的行
  • 用于对文本进行过滤和转换
  • -n:抑制默认输出
  • p:打印
  • s/old/new/g:全局替换

🔍 进程与系统监控

1. top - 实时系统监控

bash 复制代码
top
  • 动态显示系统进程活动情况
  • 显示CPU、内存使用率,运行中的进程等信息
  • P按CPU使用率排序,按M按内存使用率排序

2. htop - 增强版top(需安装)

bash 复制代码
htop
  • 比top更友好的交互式进程查看器
  • 支持鼠标操作,颜色显示,垂直和水平滚动

3. ps - 显示进程状态

bash 复制代码
ps aux | grep nginx
ps -ef | grep java
  • aux:显示所有用户的进程
  • -ef:显示完整格式的所有进程
  • 常与grep结合使用查找特定进程

4. netstat - 网络统计信息

bash 复制代码
netstat -tuln
netstat -an | grep :80
  • -t:TCP连接
  • -u:UDP连接
  • -l:监听中的套接字
  • -n:以数字形式显示地址和端口号
  • -a:所有连接和监听端口

5. ss - socket统计(替代netstat)

bash 复制代码
ss -tuln
  • 比netstat更快的socket查询工具
  • 选项与netstat类似

6. systemctl - 系统服务管理

bash 复制代码
systemctl status nginx     # 查看服务状态
systemctl start nginx      # 启动服务
systemctl stop nginx       # 停止服务
systemctl restart nginx    # 重启服务
systemctl enable nginx     # 设置开机自启
systemctl disable nginx    # 禁用开机自启
  • Systemd系统和服务管理器的主要命令

7. journalctl - 查询systemd日志

bash 复制代码
journalctl -u nginx        # 查看nginx服务日志
journalctl -f -u nginx     # 实时跟踪nginx日志
journalctl --since "2023-01-01" --until "2023-01-02"  # 时间范围查询
journalctl -p err          # 只显示错误日志
  • 用于查询systemd日志的强大工具

🌐 网络调试

1. ping - 测试网络连通性

bash 复制代码
ping example.com
ping -c 5 example.com  # 发送5个包后停止
  • 测试与目标主机的网络连接
  • 显示响应时间和丢包情况

2. traceroute - 跟踪数据包路径

bash 复制代码
traceroute example.com
  • 显示数据包到达目标主机经过的路由路径
  • 帮助诊断网络连接问题

3. curl - 数据传输工具

bash 复制代码
curl -I http://localhost    # 只显示HTTP头部
curl -o file.html http://example.com  # 下载文件保存为file.html
curl -X POST -d "data=value" http://example.com/api  # POST请求
  • 强大的URL传输工具,支持多种协议(HTTP, FTP等)
  • 常用于测试Web服务和API

4. wget - 网络下载工具

bash 复制代码
wget http://example.com/file.tar.gz
wget -c http://example.com/bigfile.iso  # 断点续传
wget -r http://example.com  # 递归下载整个网站
  • 非交互式网络下载器
  • 支持HTTP, HTTPS和FTP协议

5. telnet - 测试端口连通性

bash 复制代码
telnet example.com 80
  • 测试远程主机的特定端口是否开放
  • 虽然不加密,但仍是端口测试的实用工具

6. nc (netcat) - 网络工具中的"瑞士军刀"

bash 复制代码
nc -zv example.com 80      # 端口扫描
nc -l 1234                 # 监听1234端口
echo "hello" | nc example.com 1234  # 发送数据到指定端口
  • 多功能网络调试工具
  • -z:扫描模式,不发送数据
  • -v:详细输出

📦 压缩与归档

1. tar - 打包和解包文件

bash 复制代码
tar -czvf archive.tar.gz /path/to/dir  # 创建压缩包
tar -xzvf archive.tar.gz               # 解压缩
tar -tf archive.tar.gz                 # 查看压缩包内容
  • -c:创建归档
  • -x:提取归档
  • -z:使用gzip压缩/解压
  • -v:显示详细过程
  • -f:指定文件名

2. zip - 创建ZIP压缩包

bash 复制代码
zip -r archive.zip /path/to/dir  # 递归压缩目录
unzip archive.zip                # 解压缩
unzip -l archive.zip             # 查看压缩包内容
  • 创建和解压ZIP格式压缩包

3. gzip - 文件压缩

bash 复制代码
gzip file.txt        # 压缩文件,生成file.txt.gz
gzip -d file.txt.gz  # 解压缩文件
  • 单个文件压缩工具,通常与tar结合使用

👥 权限与用户管理

1. chmod - 修改文件权限

bash 复制代码
chmod 755 script.sh     # 设置权限为rwxr-xr-x
chmod +x script.sh      # 添加执行权限
chmod -R 644 /var/www   # 递归修改目录下所有文件权限
  • 数字模式:755 = 用户(rwx)、组(r-x)、其他(r-x)
  • 符号模式:u=用户, g=组, o=其他, a=所有; +添加, -移除

2. chown - 修改文件所有者

bash 复制代码
chown user:group file.txt      # 修改所有者和组
chown -R www-data:www-data /var/www  # 递归修改
  • 更改文件的所有者和所属组

3. useradd - 添加用户

bash 复制代码
useradd -m -s /bin/bash newuser  # 创建用户并创建家目录,指定shell
  • -m:创建用户家目录
  • -s:指定用户默认shell

4. passwd - 修改用户密码

bash 复制代码
passwd newuser  # 为newuser设置密码

5. usermod - 修改用户属性

bash 复制代码
usermod -aG sudo newuser  # 将用户添加到sudo组
usermod -L newuser        # 锁定用户账户
usermod -U newuser        # 解锁用户账户
  • -aG:将用户追加到附加组中(不离开原有组)

🛠 系统信息与性能

1. uname - 显示系统信息

bash 复制代码
uname -a  # 显示所有系统信息
  • 显示内核版本、主机名、处理器类型等系统信息

2. free - 显示内存使用情况

bash 复制代码
free -h  # 以人类可读格式显示内存信息
  • 显示物理内存和交换空间使用情况

3. uptime - 显示系统运行时间

bash 复制代码
uptime
  • 显示系统运行时间、当前用户数和系统平均负载

4. iostat - 监控系统I/O

bash 复制代码
iostat -x 1
  • 显示CPU利用率和磁盘I/O统计信息
  • -x:显示扩展统计信息
  • 1:每秒更新一次

5. vmstat - 虚拟内存统计

bash 复制代码
vmstat 1
  • 显示进程、内存、分页、块I/O、陷阱和CPU活动信息
  • 1:每秒更新一次

🔧 实用工具

1. crontab - 定时任务管理

bash 复制代码
crontab -e  # 编辑当前用户的cron任务
crontab -l  # 列出当前用户的cron任务
  • 用于设置周期性被执行的指令

2. ssh - 安全远程登录

bash 复制代码
ssh user@example.com
ssh -p 2222 user@example.com  # 指定端口
ssh -i key.pem user@example.com  # 使用密钥登录
  • 安全的远程登录工具

3. scp - 安全文件拷贝

bash 复制代码
scp file.txt user@example.com:/remote/dir  # 上传文件
scp user@example.com:/remote/file.txt .    # 下载文件
scp -r dir user@example.com:/remote/path   # 递归拷贝目录
  • 基于SSH的安全文件传输工具

4. rsync - 远程文件同步

bash 复制代码
rsync -avz /local/dir/ user@example.com:/remote/dir/
  • -a:归档模式,保持文件属性
  • -v:详细输出
  • -z:压缩传输
  • 高效的文件同步工具,只传输变化的部分

这些命令覆盖了Linux系统管理的大部分日常任务,熟练掌握它们将大大提高运维工作效率。建议在实际环境中多加练习,理解每个命令的选项和适用场景。

相关推荐
tokepson8 分钟前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
zz_nj2 小时前
工作的环境
linux·运维·服务器
极客先躯3 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
suijishengchengde3 小时前
****LINUX时间同步配置*****
linux·运维
qiuqyue4 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI4 小时前
Linux 操作系统简介
linux
南烟斋..4 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员5 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
oMcLin7 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
Qinti_mm7 小时前
Linux io_uring:高性能异步I/O革命
linux·i/o·io_uring