Linux指令入门:DevOps与SRE视角
文章目录
- Linux指令入门:DevOps与SRE视角
- 一、Linux基础命令概述
- 二、文件系统操作命令
- 1. 文件与目录基本操作
- 2. 文件查看与编辑
- 3. 文件压缩与归档
- 三、进程管理命令
- 1. 进程查看与控制
- 2. 服务管理(Systemd)
- 四、网络管理命令
- 1. 网络连接与诊断
- 2. 网络性能监控
- 五、权限与安全命令
- 1. 文件权限管理
- 2. 用户与组管理
- 六、日志查看与分析
- 1. 系统日志
- 2. 应用日志
- 七、系统监控与诊断
- 1. 系统资源监控
- 2. 进程诊断
- 八、脚本与自动化
- 1. Shell脚本基础
- 2. 自动化工具集成
- 九、安全加固与审计
- 1. 安全检查命令
- 2. 日志审计
- 十、DevOps与SRE工作流中的Linux命令应用
- 1. 部署流程示例
- 2. 故障排查流程
- 总结
Linux指令入门:DevOps与SRE视角
一、Linux基础命令概述
作为DevOps和SRE工程师,熟练掌握Linux命令是日常工作的基础。Linux命令主要分为以下几类:
- 文件系统操作
- 进程管理
- 网络管理
- 权限管理
- 日志查看
- 监控与诊断
二、文件系统操作命令
1. 文件与目录基本操作
# 查看当前目录内容
ls -lah # -l详细列表,-a显示隐藏文件,-h人类可读大小# 创建目录
mkdir -p /path/to/directory # -p递归创建父目录# 创建文件
touch file.txt # 创建空文件
> file.txt # 清空或创建文件# 复制文件/目录
cp -r source_dir dest_dir # -r递归复制目录# 移动/重命名
mv old_name new_name
mv /path/file /new/path/# 删除
rm -rf /path/to/remove # -r递归删除,-f强制删除(慎用)
SRE最佳实践:
- 使用
ls -lah
查看文件权限和大小 - 删除前先用
ls
确认路径 - 重要操作前先备份
2. 文件查看与编辑
# 查看文件内容
cat file.txt # 直接输出全部内容
less file.txt # 分页查看,支持搜索
head -n 10 file.txt # 查看前10行
tail -n 10 file.txt # 查看后10行
tail -f log_file.log # 实时跟踪日志文件# 文本搜索
grep "pattern" file.txt
grep -r "pattern" /path/ # 递归搜索目录# 文件编辑(基础命令)
nano file.txt # 简单编辑器
vim file.txt # 强大编辑器(需学习基本命令)
DevOps实用技巧:
grep -i
忽略大小写grep -v
反向匹配grep -A 3
显示匹配行及后3行grep -B 3
显示匹配行及前3行
3. 文件压缩与归档
# 压缩/解压
tar -czvf archive.tar.gz dir/ # 创建gzip压缩包
tar -xzvf archive.tar.gz # 解压gzip包
tar -cjvf archive.tar.bz2 dir/ # bzip2压缩
tar -xjvf archive.tar.bz2 # 解压bzip2包# zip/unzip
zip -r archive.zip dir/
unzip archive.zip# 查看压缩包内容
tar -tzvf archive.tar.gz
SRE场景应用:
- 备份配置文件:
tar -czvf configs_$(date +%F).tar.gz /etc/myapp/
- 日志归档:
tar -czvf logs_$(date +%F).tar.gz /var/log/myapp/
三、进程管理命令
1. 进程查看与控制
# 查看进程
ps aux | grep process_name # 查看特定进程
top # 动态查看进程资源使用
htop # 更友好的进程查看工具(需安装)# 终止进程
kill PID # 发送SIGTERM(15)
kill -9 PID # 强制终止(SIGKILL)
pkill process_name # 按名称终止进程
killall process_name # 同上# 后台运行
command & # 后台运行
nohup command & # 忽略挂断信号
jobs -l # 查看后台任务
fg %job_id # 将后台任务调回前台
bg %job_id # 让暂停的任务继续执行
DevOps实用技巧:
- 监控资源占用高的进程:
ps aux --sort=-%mem | head -n 10
- 查找僵尸进程:
ps aux | grep 'Z'
- 批量终止进程:
pkill -f "pattern"
2. 服务管理(Systemd)
# 查看服务状态
systemctl status service_name# 启动/停止/重启服务
systemctl start service_name
systemctl stop service_name
systemctl restart service_name# 设置开机启动
systemctl enable service_name
systemctl disable service_name# 查看服务日志
journalctl -u service_name
SRE关键操作:
- 服务健康检查:
systemctl is-active service_name
- 查看最近服务日志:
journalctl -u service_name -n 50 --no-pager
- 服务重启后验证:
systemctl show -p ActiveState service_name
四、网络管理命令
1. 网络连接与诊断
# 查看网络接口
ip addr show
ifconfig # 较旧系统# 测试网络连通性
ping host
ping -c 4 host # 发送4个包后停止# 端口测试
telnet host port
nc -zv host port # netcat更现代的替代方案# 路由信息
ip route show
route -n# DNS查询
nslookup domain
dig domain
DevOps实用技巧:
- 检查本地端口占用:
netstat -tulnp | grep :80
- 查看连接状态统计:
ss -s
- 跟踪路由路径:
traceroute host
2. 网络性能监控
# 实时网络流量
iftop -i eth0 # 需安装
nload # 另一种流量监控工具# 带宽测试
iperf -s # 服务端
iperf -c server_ip # 客户端测试# 抓包分析
tcpdump -i eth0 port 80 -w capture.pcap
wireshark capture.pcap # 图形化分析(需安装)
SRE关键操作:
- 监控异常流量:
iftop -P -n -B -i eth0
- 分析HTTP流量:
tcpdump -i any -A 'port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
- 测试SSL证书:
openssl s_client -connect host:443
五、权限与安全命令
1. 文件权限管理
# 查看权限
ls -l file.txt# 修改权限
chmod 755 file.txt # rwxr-xr-x
chmod u+x script.sh # 给所有者添加执行权限
chmod g-w file.txt # 移除组写权限# 修改所有者
chown user:group file.txt
SRE安全实践:
- 关键文件权限设置:
chmod 600 /etc/shadow
- 敏感目录权限:
chmod 750 /etc/myapp/config
- 定期检查权限:
find /path -type f ! -perm 644
2. 用户与组管理
# 用户管理
useradd -m username # 创建用户并创建家目录
passwd username # 修改密码
usermod -aG group user # 添加用户到组
userdel -r username # 删除用户及家目录# 组管理
groupadd groupname
groupdel groupname
DevOps实用技巧:
- 创建专用服务账户:
useradd -r -s /sbin/nologin service_user
- 限制sudo权限:
visudo
添加特定命令权限 - 审计用户历史:
last
,lastlog
,who
六、日志查看与分析
1. 系统日志
# 查看系统日志
journalctl -xe
journalctl -u service_name# 查看传统日志
tail -f /var/log/syslog # Debian/Ubuntu
tail -f /var/log/messages # RHEL/CentOS# 按时间筛选日志
journalctl --since "2023-01-01" --until "2023-01-02"
SRE日志分析技巧:
- 实时监控错误日志:
journalctl -u service_name | grep -i error
- 统计错误频率:
journalctl -u service_name | grep -i error | wc -l
- 日志轮转配置:检查
/etc/logrotate.d/
2. 应用日志
# 查看应用日志
tail -f /var/log/myapp/app.log# 按级别过滤
grep -E "ERROR|WARN" app.log# 日志分析示例
awk '/ERROR/ {count++; print $0} END {print "Total errors:", count}' app.log
DevOps实用命令:
- 日志分割:
split -l 1000 large.log chunk_
- 日志压缩归档:
gzip app.log.1
- 日志清理:
find /var/log -name "*.log" -mtime +7 -exec rm {} \;
七、系统监控与诊断
1. 系统资源监控
# CPU信息
top
htop
mpstat -P ALL 1 # 多核CPU统计# 内存信息
free -h
vmstat 1# 磁盘使用
df -h
du -sh /path/*
SRE监控命令:
- 监控磁盘IO:
iostat -x 1
- 监控网络IO:
sar -n DEV 1
- 综合监控:
dstat
2. 进程诊断
# 查看进程资源使用
ps aux --sort=-%mem | head
ps aux --sort=-%cpu | head# 查看进程打开的文件
lsof -p PID# 查看进程加载的库
ldd /path/to/binary
DevOps实用技巧:
- 查找内存泄漏进程:
ps -eo pid,rss,comm --sort=-rss | head
- 检查僵尸进程:
ps aux | awk '$8=="Z" {print $0}'
- 查看进程启动时间:
ps -eo pid,lstart,cmd | grep process_name
八、脚本与自动化
1. Shell脚本基础
#!/bin/bash# 变量
name="World"
echo "Hello, $name!"# 条件判断
if [ "$1" == "start" ]; thenecho "Starting service..."
elif [ "$1" == "stop" ]; thenecho "Stopping service..."
elseecho "Usage: $0 {start|stop}"
fi# 循环
for i in {1..5}; doecho "Iteration $i"
done# 函数
function backup() {tar -czvf "$1_$(date +%F).tar.gz" "$1"
}
SRE脚本实践:
- 配置备份脚本:
backup_config.sh
- 日志轮转脚本:
rotate_logs.sh
- 服务健康检查:
check_service.sh
2. 自动化工具集成
# 使用cron定时任务
crontab -e
# 示例:每天凌晨2点执行备份
0 2 * * * /path/to/backup.sh# 使用Ansible批量管理
ansible all -m ping
ansible webservers -a "service nginx restart"# 使用Fabric远程执行
fab -H user@host run_command
DevOps自动化建议:
- 将常用命令封装为脚本
- 使用版本控制管理脚本
- 添加日志记录和错误处理
九、安全加固与审计
1. 安全检查命令
# 检查开放端口
netstat -tulnp
ss -tulnp# 检查SUID程序(潜在风险)
find / -perm -4000 2>/dev/null# 检查系统账户
awk -F: '($3 < 1000) {print $1, $3, $6}' /etc/passwd# 检查SSH配置
grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config
SRE安全实践:
- 定期审计特权账户
- 检查异常SUID程序
- 验证SSH安全配置
- 监控
/tmp
和/var/tmp
目录
2. 日志审计
# 查看登录历史
last
lastb # 失败登录
lastlog# 查看sudo使用记录
grep sudo /var/log/auth.log# 监控实时登录
watch -n 1 'who'
DevOps安全建议:
- 设置日志轮转策略
- 监控异常登录尝试
- 记录关键操作
- 定期审查日志
十、DevOps与SRE工作流中的Linux命令应用
1. 部署流程示例
# 1. 拉取最新代码
git pull origin main# 2. 构建应用
./build.sh# 3. 运行测试
./run_tests.sh# 4. 备份当前版本
cp -r /opt/app /opt/app_$(date +%F_%H%M)# 5. 部署新版本
rsync -avz ./dist/ user@server:/opt/app/# 6. 重启服务
ssh user@server "sudo systemctl restart app_service"# 7. 验证部署
ssh user@server "curl -I http://localhost:8080/health"
2. 故障排查流程
# 1. 检查服务状态
systemctl status app_service# 2. 查看最近日志
journalctl -u app_service -n 100 --no-pager | tail# 3. 检查资源使用
top
df -h
free -m# 4. 检查网络连接
ss -tulnp | grep app_port
netstat -anp | grep LISTEN# 5. 检查进程
ps aux | grep app_name# 6. 检查配置
cat /etc/app/config.yaml# 7. 测试功能
curl -v http://localhost:8080/api/test
总结
作为DevOps和SRE工程师,熟练掌握Linux命令是高效工作的基础。建议:
- 建立自己的命令速查表:将常用命令整理成文档或笔记
- 编写常用脚本:将重复任务自动化
- 理解命令原理:不只是记住命令,更要理解其工作原理
- 安全意识:始终考虑命令的安全影响
- 持续学习:Linux生态不断发展,保持学习新工具和技巧
通过系统学习和实践这些命令,您将能够更高效地完成DevOps和SRE工作,提升系统可靠性和运维效率。
相关文章:
Linux指令入门:DevOps与SRE视角
文章目录 Linux指令入门:DevOps与SRE视角一、Linux基础命令概述二、文件系统操作命令1. 文件与目录基本操作2. 文件查看与编辑3. 文件压缩与归档 三、进程管理命令1. 进程查看与控制2. 服务管理(Systemd) 四、网络管理命令1. 网络连接与诊断2…...

socket套接字-TCP
上一篇:socket套接字-UDP(下)https://blog.csdn.net/Small_entreprene/article/details/147569071?fromshareblogdetail&sharetypeblogdetail&sharerId147569071&sharereferPC&sharesourceSmall_entreprene&sharefromfr…...
Ctrl + D是如何与内核文件结束符对应的?如何模拟文件结束符?数字中间为什么不能插入空格或逗号?丰富多彩的语句结束符或分隔符?语句结束符?
目录 Ctrl D是如何与内核文件结束符对应的? 如何模拟文件结束符? 哪些编程语言支持数值中插入分隔符更容易看清楚? 下划线分隔符 数字中间为什么不能插入空格或逗号? 丰富多彩的语句结束符或分隔符 误用分号 语句结束符 不同语言的结束符 更改语句结束符 Ctrl …...

MiM: Mask in Mask Self-SupervisedPre-Training for 3D Medical Image Analysis
Abstract Vision Transformer在3D医学图像分析的自监督学习(Self-Supervised Learning,SSL)中展现了卓越的性能。掩码自编码器(Masked Auto-Encoder,MAE)用于特征预训练,可以进一步释放ViT在各…...

【STM32 学习笔记】I2C通信协议
注:通信协议的设计背景 3:00~10:13 I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强, 不需要USART、CAN等通讯协议的外部收发设备,现在被广…...
【java】jdk8及以后的时间类总结
目录 1. LocalDate 2. LocalTime 4. ZonedDateTime 5. Duration 6. Period 7. DateTimeFormatter 1. LocalDate 说明:表示不带时区的日期(年、月、日),不可变且线程安全。 import java.time.LocalDate;public class Local…...
深入理解 Istio 的工作原理 v1.26.0
解读最新版本的 Istio 源码确实是一项庞大的工程,但我可以为你梳理出一个清晰的脉络,并指出关键模块和代码路径,帮助你深入理解 Istio 的工作原理。 我们主要关注 Istio 的核心组件 Istiod 和数据平面的 Envoy Proxy。 前提: Go…...

深入理解卷积神经网络的输入层:数据的起点与预处理核心
内容摘要 本文围绕卷积神经网络输入层展开,详细介绍其在网络中的重要作用,包括接收不同领域数据的形式及传递数据的过程。深入解读数据预处理的关键操作,如去均值、归一化和PCA/白化。助力读者透彻理解输入层,为构建高效卷积神经…...

redis bitmap数据类型调研
一、bitmap是什么? redis原文: Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type . This means that bitmaps can be used with string commands, and most importantly with SET and GET. 翻…...
如何用数学思想填报高考志愿
人一辈子有很多四年,但是很少有哪个四年对你一生的影响能超过大学这四年。 从18岁到22岁的这几年,是一个人真正成年的过程,很多人会在这段时间里认识一生的朋友,谈第一次真正的恋爱,第一次离开父母,自己生…...

LabVIEW 2019 与 NI VISA 20.0 安装及报错处理
在使用 Windows 11 操作系统的电脑上,同时安装了 LabVIEW 2019 32 位和 64 位版本的软件。此前安装的 NI VISA 2024 Q1 版,该版本与 LabVIEW 2019 32 位和 64 位不兼容,之后重新安装了 NI VISA 20.0。从说明书来看,NI VISA 20.0 …...

探索 JWT(JSON Web Token):原理、结构与实践应用对比
目录 前言1. 什么是 JWT?2. JWT 的组成结构详解2.1 Header(头部)2.2 Payload(负载)2.3 Signature(签名) 3. JWT 的实际作用3.1 身份认证3.2 信息传递与授权 4. JWT 与 Cookie、API Key 的比较4.…...
互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-1
互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-1 在当今云计算和人工智能迅猛发展的背景下,互联网大厂对Java工程师的要求已从传统的单体架构和业务逻辑处理,转向了更复杂的云原生架构设计、AI模型集成以及高并发系统的性能优化能…...
【Redis进阶】持久化
一、MySQL事务特性及Redis持久化需求 (一)MySQL事务特性 MySQL的事务具有四大核心特性,这些特性对于保证数据库操作的准确性和可靠性至关重要。 原子性:事务中的所有操作要么全部成功,要么全部失败…...

[docker基础一]docker简介
目录 一 消除恐惧 1) 什么是虚拟化,容器化 2)案例 3)为什么需要虚拟化,容器化 二 虚拟化实现方式 1)应用程序执行环境分层 2)虚拟化常见类别 3)常见虚拟化实现 一)主机虚拟化(虚拟机)实现 二)容器虚拟化实现 一 消除恐…...

Texify - 数学公式OCR转换工具
文章目录 一、项目概览相关资源核心特性 二、安装指南三、使用示例1、命令行转换2、Python API调用3、交互式应用 四、性能基准运行你自己的基准测试 五、局限性 一、项目概览 Texify 是一个OCR模型,可将包含数学公式的图片或PDF转换为Markdown和LaTeX格式…...

RISC-V CLINT、PLIC及芯来ECLIC中断机制分析 —— RISC-V中断机制(一)
在长期的嵌入式开发实践中,对中断机制的理解始终停留在表面层次,特别当开发者长期局限于纯软件抽象层面时,对中断机制的理解极易陷入"知其然而不知其所以然"的困境,这种认知的局限更为明显;随着工作需要不断…...
时钟晶振锁相环pll方向技术要点和大厂题目解析
本专栏预计更新60期左右。当前第9期。 本专栏不仅适用于硬件的笔试面试,同样也适用于梳理硬件核心的知识点。 通过本文能得到什么? 首先,根据实战经验总结时钟晶振,锁相环的主要知识点,技术要点,面试考点; 然后,列出时钟晶振,锁相环的笔试面试的主要题型真题和模拟题,…...
图像处理篇--- HTTP|RTSP|MJPEG视频流格式
文章目录 前言一、MJPEG (Motion JPEG)基本概念技术特点编码方式传输协议数据格式 优势实现简单低延迟兼容性好容错性强 劣势带宽效率低不支持音频缺乏标准控制 典型应用 二、RTSP (Real Time Streaming Protocol)基本概念技术特点协议栈工作流程传输模式 优势专业流媒体支持高…...
【Harbor v2.13.0 详细安装步骤 安装证书启用 HTTPS】
Harbor v2.13.0 详细安装步骤(启用 HTTPS) 1. 环境准备 系统要求:至少 4GB 内存,100GB 磁盘空间。 已安装组件: Docker(版本 ≥ 20.10)Docker Compose(版本 ≥ v2.0) 域…...
C++中的static_cast:类型转换的安全卫士
C中的static_cast:类型转换的安全卫士 在C编程中,类型转换是不可避免的操作,而static_cast作为C四大强制类型转换运算符之一,是最常用且相对安全的一种转换方式。今天我们就来深入探讨一下这个重要的类型转换工具。 一、static_…...

开源与商业:图形化编程工具的博弈与共生
一、开源生态的破局之路:从技术实验到行业标准 在 2025 年全球开发者生态大会上,iVX 凭借 “全栈代码生成 AI 驱动开发” 的技术架构,被行业权威机构评选为 “年度技术创新典范”。作为 2012 年启动的开源项目,iVX 历经 17 年技…...
Docker + Watchtower 实现容器自动更新:高效运维的终极方案
文章目录 前言一、Watchtower 简介二、Watchtower 安装与基本使用1. 快速安装 Watchtower2. 监控特定容器 三、Watchtower 高级配置1. 设置检查间隔2. 配置更新策略3. 清理旧镜像4. 通知设置 四、生产环境最佳实践1. 使用标签控制更新2. 更新前执行健康检查3. 结合CI/CD流水线 …...

(二)Linux下基本指令 2
【知识预告】 16. date 指令 17. cal 指令 18. find 指令 19. which指令 20. whereis 指令 21. alias 指令 22. grep 指令 23. zip/unzip 指令 24. tar 指令 25. bc 指令 26. uname ‒r 指令 27. 重要的⼏个热键 28. 关机 16 date 指令 指定格式显⽰时间:date %Y-…...
1 2 3 4 5顺序插入,形成一个红黑树
红黑树的特性与优点 红黑树是一种自平衡的二叉搜索树,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在 O(log n)。其核心特性如下: 每个节点要么是红色,要么是黑色。根节点和叶子节点(NIL节点)是…...

无线网络设备中AP和AC是什么?有什么区别?
无线网络设备中AP和AC是什么?有什么区别? 一. 什么是AP?二. 什么是AC?三. AP与AC的关系 前言 肝文不易,点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神的孩子都…...

Web自动化测试入门详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通常都会作为广大测试从业者的首选学习对象,相较于C/S架…...
WHAT - 简单服务发现
文章目录 简单理解举个例子简单服务发现方式1. 静态配置(最简单,但不灵活)2. DNS 发现3. 使用服务注册中心(稍高级) 总结 “简单服务发现”(Simple Service Discovery)通常指的是一种让系统中的…...

uniapp+vue3+firstUI时间轴 提现进度样式
展示 说明:“status”: 0, //状态:0待审核,1审核通过,2审核驳回,3提现成功,4提现失败 第一种:5种类型归纳为三种显示样式 <fui-timeaxis background"#fff" :padding"[10rpx,16rpx,0]"><!-- 动态生成步骤节点 --><f…...

【日撸 Java 三百行】Day 10(综合任务 1)
目录 Day 10:综合任务 1 一、题目分析 1. 数据结构 2. 相关函数基本知识 二、模块介绍 1. 初始化与成绩矩阵的构建 2. 创建总成绩数组 3. 寻找成绩极值 三、代码与测试 小结 拓展:关于求极值的相关算法 Day 10:综合任务 1 Task&…...