Loading

hellohelp

linux系统运维常见命令

好的,绝对满足您的要求!作为一名专业的 Web 系统部署和运维人员,我们需要一个更全面、更深入的命令工具箱。下面我将之前的内容进行极大的扩展和深化,不仅列出命令,还会加入高级用法、组合技巧、故障排查思路以及原理性解释,使其成为一份可以长期依赖的权威参考资料。


核心哲学:从“会用”到“精通”

运维高手与普通用户的区别在于:高手不仅记得命令,更懂得在什么场景下使用什么命令组合来快速定位和解决问题。他们理解命令输出背后的系统原理。


一、文件和目录操作(深化版)

命令 用途深度解析 常见例子 & 高级技巧
ls 列出目录内容,-l 输出的每一列都包含关键信息。 ls -lath:按时间倒序,以人类可读方式显示所有文件(包括隐藏文件)。 ls -ld /etc:查看目录本身的信息,而不是目录内容。
find 文件系统搜索的瑞士军刀,可根据各种属性(名称、类型、大小、时间、权限等)进行搜索,并可对搜索结果执行操作。 按时间找:find /var/log -name ".log" -mtime +7 (查找7天前修改的log文件)。 按大小找:find / -type f -size +100M (查找大于100MB的文件)。 执行操作:find /tmp -name ".tmp" -mtime +30 -delete (删除30天前的tmp文件)。 -exec 是神器:find . -name "*.conf" -exec grep -l "error" {} ; (在当前目录下查找内容包含"error"的.conf文件)。
stat 显示文件或文件系统的详细状态信息(inode、权限、大小、三个时间戳等),比 ls -l 更详细。 stat /etc/passwd:查看此文件的访问时间、修改时间、状态改变时间。
rsync 远程数据同步工具,功能强大,支持增量同步,是备份和部署的利器。 本地同步:rsync -av /source/ /dest/ (注意尾随/的区别)。 远程同步:rsync -avz -e ssh /local/path/ user@remotehost:/remote/path/ (通过SSH压缩同步)。 删除目标多余文件:rsync -av --delete /source/ /dest/。
tree 以树状图列出目录结构,非常直观。 tree /var/www:显示网站目录结构。 tree -L 2 -d:只显示2级深度的目录。


二、文件查看和编辑(神器进阶)

命令 用途深度解析 常见例子 & 高级技巧
grep 文本搜索之王,支持正则表达式。其性能对于大文件至关重要。 递归搜索并显示行号:grep -rn "Connection refused" /var/log/。 显示匹配行的前后内容:grep -A 3 -B 2 "panic" kernel.log (显示匹配行及前后3行、2行)。 排除目录:grep -r --exclude-dir=.git "keyword" .。 使用扩展正则:grep -E "error awk 强大的文本分析和处理语言,可以按列处理数据,是生成报告和过滤特定字段的神器。 打印特定列:ps aux
sed 流编辑器,用于对文本进行替换、删除、插入等操作,特别适合脚本中的批量处理。 替换文本:sed 's/foo/bar/g' file.txt (将文件中所有foo替换为bar)。 删除空行:sed '/^$/d' file.txt。 原地修改文件:sed -i.bak 's/old/new/g' file.conf (先备份原文件为file.conf.bak,然后修改)。
tail / head 不仅仅是看开头结尾。 实时追踪多个文件:tail -f /var/log/nginx/access.log /var/log/nginx/error.log。 从第100行开始显示:tail -n +100 file.log。
vim 进阶 高效编辑大型配置文件。 搜索:/keyword,n/N 下一个/上一个。 替换::%s/old/new/g (全文替换)。 显示行号::set number。 分屏::vsp file2.conf (垂直分屏),Ctrl+w 切换窗口。


三、系统进程和性能监控(洞悉系统内核)

命令 用途深度解析 常见例子 & 高级技巧
htop / top 实时系统监控仪表盘。理解输出含义:Load Average(负载平均值)、%wa(I/O等待百分比)、RES(常驻内存集)。 在 htop 中:按 F9 杀进程,按 F6 按不同指标排序。关注 僵尸进程(Z状态)。
ps 进程状态的快照。输出格式可以自定义。 显示进程树:ps auxf 或 ps -ef --forest。 查看特定用户的进程:ps -u www-data。 自定义输出:`ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
lsof 列出被进程打开的文件。逆天功能:查看某个端口被谁占用,查看某个文件被哪个进程使用。 lsof -i :80:查看谁在监听或连接80端口。 lsof /var/log/nginx/access.log:查看哪个进程正在使用这个日志文件。 lsof -p :查看某个进程打开的所有文件。
/proc 文件系统 这是一个虚拟文件系统,是内核和进程的接口。直接查看 /proc 下的文件可以获取最原始的系统信息。 cat /proc/loadavg:查看系统负载。 cat /proc/meminfo:查看详细内存信息。 cat /proc//environ:查看某个进程的环境变量。 ls -l /proc//exe:查看某个进程对应的可执行文件路径。
vmstat 报告虚拟内存、进程、CPU、I/O等统计信息。适合查看系统整体瓶颈。 vmstat 1:每1秒刷新一次。 关键列:si/so(swap in/out,如果长期不为0,说明内存不足),us/sy/id(用户/系统/空闲CPU时间)。
iostat 监控系统磁盘I/O性能。 iostat -xz 1:每秒刷新,显示扩展信息和不活跃设备。 关键列:%util(设备利用率,接近100%表示I/O饱和),await(I/O请求平均等待时间)。
pidstat 用于监控各个进程的资源消耗(CPU、内存、I/O等),是 sysstat 工具包的一部分。 pidstat -d 1:每秒刷新一次进程的I/O统计。 pidstat -r -p 1:监控特定进程的内存使用。
strace / ltrace 系统调用追踪器。用于调试进程为什么挂起、报错或行为异常。 strace -p :追踪一个正在运行的进程。 strace -f -e trace=network command:追踪命令及其子进程的所有网络相关系统调用。


四、网络诊断和操作(从连通性到深度包分析)

命令 用途深度解析 常见例子 & 高级技巧
ss netstat 的现代替代品,更快更高效。用于转储套接字统计信息。 ss -tlnp:查看所有TCP监听端口及对应进程。 ss -o state established '( dport = :443 or sport = :443 )':查看所有已建立的HTTPS连接。 ss -s:显示统计摘要。
nc (netcat) 网络的瑞士军刀,可以读写TCP/UDP连接。用于端口测试、简单服务搭建等。 端口扫描:nc -zv host.name 80 443 8080。 模拟客户端:echo "GET / HTTP/1.0\r\n" tcpdump 命令行下的网络抓包分析器。深度排查网络问题的终极武器。 tcpdump -i any -n port 80:捕获所有接口上80端口的流量,不解析主机名。 tcpdump -i eth0 -w capture.pcap:将抓包数据写入文件,方便用Wireshark分析。 tcpdump -i any -A -s0 port 80
iptables Linux内核的防火墙配置工具。 iptables -L -n -v:查看当前规则。 iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT (允许特定网段SSH连接)。
firewall-cmd CentOS/RHEL 上 firewalld 动态防火墙的管理工具。 firewall-cmd --list-all:查看所有规则。 firewall-cmd --permanent --add-port=8080/tcp; firewall-cmd --reload (永久开放8080端口)。


五、系统管理和故障排查(综合应用)

命令/技巧 用途深度解析 常见例子 & 高级技巧
journalctl 查询 systemd 的日志(系统日志和服务的日志)。功能强大,过滤和查询是重点。 journalctl -u nginx.service:查看nginx服务的所有日志。 journalctl -f -u myapp.service:实时追踪某个服务的日志。 journalctl --since "2023-10-01 09:00:00" --until "2023-10-01 10:00:00":按时间范围查询。 journalctl _PID=1234:按进程PID查询。
dmesg 查看内核环缓冲区消息。用于查看硬件错误、内核崩溃(OOM Killer)、驱动问题等。 dmesg strace + lsof + /proc 组合拳排查“文件或端口被占用”问题。 1. lsof -i :8080 找到PID。 2. strace -p <PID> 看进程卡在什么系统调用。 3. ls -l /proc/<PID>/cwd 查看进程工作目录。 4. cat /proc/<PID>/environ 查看环境变量。 sar 系统活动报告,属于 sysstat 包。可以查看历史性能数据(CPU、内存、网络、I/O),是事后分析的利器。 sar -u 1 3:查看CPU使用率,每秒1次,共3次。 sar -r 1 3:查看内存使用情况。 sar -n DEV 1 3:查看网络设备流量。 需要配置 sysstat 服务才能收集历史数据。 tee 从标准输入读取并写入标准输出和文件。用于在管道操作中同时查看结果和保存到文件。 some_long_command

总结:运维工作流示例

场景:网站响应缓慢

  1. 整体检查:htop(看CPU、内存、负载),df -h(看磁盘空间),ss -tlnp(看服务端口是否在监听)。
  2. 定位瓶颈:
    · CPU高:pidstat -u 1 或 top 找到占用CPU的进程。
    · 内存不足:free -h,查看 dmesg | grep -i kill 看是否有进程被OOM Killer杀掉。
    · I/O 高:iostat -xz 1,pidstat -d 1 找到疯狂读写的进程。
    · 网络问题:ping,mtr,tcpdump 分析网络延迟和丢包。
  3. 深入分析问题进程:strace -p ,lsof -p ,journalctl -u ,tail -f /path/to/app.log。
  4. 解决问题并记录。

这份详尽的指南几乎涵盖了中高级运维所需的所有核心命令和思路。建议您将其保存,并在实际工作中反复查阅和实践,最终形成自己的肌肉记忆和问题排查体系。

posted @ 2025-09-27 07:52  HordorZzz  阅读(12)  评论(0)    收藏  举报