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系统管理的大部分日常任务,熟练掌握它们将大大提高运维工作效率。建议在实际环境中多加练习,理解每个命令的选项和适用场景。

相关推荐
huangyuchi.2 小时前
【Linux系统】初见线程,概念与控制
linux·运维·服务器·页表·linux线程概念·linux线程控制·分页式存储管理
MacroZheng2 小时前
堪称一站式管理平台,同时支持Linux、MySQL、Redis、MongoDB可视化管理!
java·linux·后端
人生匆匆2 小时前
openEuler 24.03 (LTS-SP2)简单KVM安装+桥接模式
linux·服务器·桥接模式
代码的余温3 小时前
UNIX与Linux:五大核心差异解析
linux·服务器·unix
路溪非溪3 小时前
Linux驱动如何向应用层提供sysfs操作接口
linux·arm开发·驱动开发
半桔3 小时前
【Linux手册】信号量与建造者模式:以 PV 操作保证并发安全,分步组装构建复杂对象
linux·运维·安全·建造者模式
雷工笔记3 小时前
Linux系统学习之注意事项及命令基本格式
linux·运维·服务器
秃头菜狗3 小时前
下载CentOS 7——从阿里云上下载不同版本的 CentOS 7
linux·阿里云·centos
Lin_Aries_04213 小时前
使用阿里云容器镜像服务 ACR
linux·阿里云·docker·云原生·centos·云计算