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