ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux常用命令速查手册:运维排障与终端操作实战指南

Linux常用命令速查手册:运维排障与终端操作实战指南 简介这份资源面向需要频繁使用 Linux 终端的操作员、技术支持工程师以及希望掌握终端技能的学习者系统梳理了日常运维与开发中高频使用的 Shell 命令及其用途帮助读者在遇到具体操作问题时快速定位合适命令提升终端操作效率。压缩包内共 1 个 docx 文档约 18KB内容按文件与目录操作、系统状态与进程管理、文件内容查看与编辑、权限与所属关系调整、压缩解压、网络配置与连通性测试等模块组织并附有常用快捷键与重定向、管道、通配符等符号指令的语法说明。文档以命令加用途对照的形式呈现涵盖 cd、pwd、touch、cp、mv、rm、ps、kill、df、free、ifconfig、ping、grep、find、chmod、chown、tar、gzip 等典型指令便于按场景查阅与速记。目前已有 320 人学习适合作为终端操作的随身速查手册也可为编写复杂 shell 脚本打下基础。1. 从一次凌晨三点的排障说起这份命令清单到底值不值得存上周凌晨三点一台跑着业务程序的服务器磁盘告警我远程连上去第一反应不是翻监控面板而是敲了三条命令df -h看哪个分区满了du -sh *定位到具体目录ps -ef确认没有异常进程在疯狂写日志。前后不到两分钟问题定位完毕。这套动作我做了快十年靠的不是什么高深技巧就是一份烂熟于心的 Linux 常用命令清单。这份《Linux系统常用命令与操作详解》整理的正是这类东西——文件与目录操作、进程管理、文本查看、权限修改、压缩解压、网络排查外加一批终端快捷键和重定向、管道符号的用法。它不涉及内核源码也不讲 systemd 底层原理就是一份面向日常运维和终端操作的速查手册。适合谁每天要 SSH 登机器干活的运维、后端、测试以及刚接触 Linux、想摆脱图形界面依赖的学习者。说白了它解决的是「知道要干什么但命令记不全、参数拿不准」这个高频痛点。2. 文件与目录操作从 cd 到 find 的完整链路2.1 目录导航与创建pwd、cd、mkdir 的配合逻辑很多人觉得cd和pwd太基础不值得单独讲。但我在带新人的时候发现恰恰是这两个命令的组合使用能暴露一个人对「当前工作目录」这个概念的理解程度。pwd显示的是你此刻站在文件系统的哪个位置cd则是移动。问题在于脚本里如果依赖相对路径一旦cd失败后续所有操作都会在错误目录下执行这种翻车现场我见过不止一次。常见做法是在脚本开头先cd /target/dir || exit 1确保目录切换成功再往下走。mkdir创建目录时-p参数是必须记住的——mkdir -p dir1/dir2/会递归创建多级目录如果 dir1 已存在也不会报错。不加-p的话父目录不存在就直接失败。# 确认当前位置切换到目标目录失败则退出 pwd cd /home/project || exit 1 # 递归创建多级目录已存在时不报错 mkdir -p /data/logs/app1/2024 # 创建空文件用于占位或后续写入 touch /data/logs/app1/2024/.keep逻辑说明|| exit 1是短路写法cd返回非零时立即终止脚本避免在错误目录下继续执行。mkdir -p的-p是 parents 的缩写同时具备「已存在不报错」的语义。touch创建空文件常用于占位或触发某些依赖文件存在的逻辑。参数怎么改mkdir加-m 755可以在创建时直接指定权限省去后续chmod。touch加-t 202401011200.00可以指定时间戳调试按时间轮转的日志清理脚本时会用到。2.2 复制、移动与删除cp、mv、rm 的边界条件cp和mv看起来简单但有几个边界条件不踩一次记不住。cp 1.txt 2.txt是复制文件cp -r dir1/ dir2/是递归复制目录。注意-r对目录是必须的对文件加了也不报错但没意义。mv既是移动也是重命名mv dir1 dir2如果 dir2 不存在就是把 dir1 改名成 dir2如果 dir2 是已存在的目录就是把 dir1 移进去。这个歧义是很多脚本 bug 的源头。rm -rf的杀伤力不用多说我自己的习惯是执行前先用ls确认路径或者用rm -ri交互式删除。-f强制、-r递归两个合在一起就是「不问、不提示、连目录带文件全删」。# 复制文件目标存在则覆盖 cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak # 递归复制目录保留权限和时间戳 cp -a /data/app /backup/app_$(date %Y%m%d) # 移动并重命名目标目录不存在时相当于改名 mv /tmp/upload.tar.gz /data/releases/app-v2.tar.gz # 删除前先确认交互式递归删除 rm -ri /data/tmp/old_cache逻辑说明cp -a等价于-dR --preserveall归档模式保留符号链接、权限、时间戳备份场景首选。$(date %Y%m%d)是命令替换生成日期后缀避免覆盖历史备份。rm -ri的-i会在每个删除动作前询问适合不确定路径是否干净时使用。参数怎么改cp -u只复制源比目标新的文件做增量备份时有用。mv -n禁止覆盖已存在文件防止误操作。rm没有回收站删之前用ls或find确认是血泪经验。2.3 查找与统计find、wc、du 的组合用法find / -name 1.txt是全盘查找但实际生产中很少这么干因为太慢。常见做法是限定目录深度和类型find /data -maxdepth 3 -name *.log -type f。-maxdepth控制递归层数-type f只找文件-type d只找目录。找到之后通常要配合-exec做后续操作比如批量删除七天前的日志。wc统计文本的行数、字数、字符数-l行数、-w字数、-m字符数。注意-m和-c的区别-c统计字节数-m统计字符数含中文时两者结果不同。du -sh *显示当前目录下每个子项的总大小-s汇总、-h人类可读。排查磁盘满的时候du -sh * | sort -rh | head -10能快速定位大目录。# 在指定目录下查找七天前的日志文件并删除 find /data/logs -maxdepth 2 -name *.log -mtime 7 -type f -exec rm -f {} \; # 统计文件行数、字数、字符数 wc -l access.log wc -w access.log wc -m access.log # 查看当前目录各子项大小按降序排列取前十 du -sh * | sort -rh | head -10逻辑说明-mtime 7表示修改时间在七天前-exec ... \;对每个匹配结果执行命令{}是占位符。sort -rh中-r降序、-h按人类可读单位排序。du -sh *的*是通配符匹配当前目录所有非隐藏项。参数怎么改find的-mtime改成-mmin可按分钟筛选。du加--exclude排除指定目录。wc不加参数时依次输出行、字、字符数。3. 进程与系统状态top、ps、kill 的实战判断3.1 进程查看ps -ef 与 top 的分工ps -ef和top是两套不同的观察视角。ps -ef是快照全格式显示所有进程适合配合grep过滤特定进程。top是动态刷新默认按 CPU 占用排序适合实时观察资源消耗。我一般先用ps -ef | grep java确认进程是否存在再用top -p pid盯住这个进程的资源曲线。ps -ef输出里几个关键列UID 是启动用户PID 是进程号PPID 是父进程号CMD 是启动命令。排查「谁启动了这个进程」时顺着 PPID 往上找就行。top里重点看%CPU、%MEM、RES常驻内存和S进程状态R 运行、S 睡眠、Z 僵尸。# 全格式显示所有进程过滤目标进程 ps -ef | grep nginx # 显示所有用户的所有进程按 CPU 降序 ps aux --sort-%cpu | head -20 # 动态监控指定进程每 2 秒刷新 top -p $(pgrep -d, -f java.*app.jar)逻辑说明ps aux是 BSD 风格ps -ef是 System V 风格输出列略有差异但核心信息一致。--sort-%cpu按 CPU 降序排列。pgrep -d,把多个 PID 用逗号连接传给top -p同时监控多个进程。参数怎么改top交互模式下按M按内存排序、按P按 CPU 排序、按1展开每个核心。ps -eo pid,ppid,cmd,%mem,%cpu自定义输出列。3.2 进程终止kill -9 与 kill -15 的选择kill -9 pid是强制杀死进程没有机会清理现场。kill -15 pid默认是发送 SIGTERM进程可以捕获这个信号做优雅退出。我见过太多人上来就-9结果数据库连接没释放、临时文件没清理、事务回滚不完整。正确顺序是先kill -15等几秒如果进程还在再kill -9。kill -9杀不掉的进程通常处于 D 状态不可中断睡眠一般是等 IO。这种情况-9也没用得先解决 IO 问题。僵尸进程Z 状态是子进程已死但父进程没回收kill杀不掉得找父进程处理。# 先发 SIGTERM给进程优雅退出的机会 kill -15 $(pgrep -f app.jar) # 等待 5 秒检查是否还在 sleep 5 if pgrep -f app.jar /dev/null; then kill -9 $(pgrep -f app.jar) fi逻辑说明pgrep -f按完整命令行匹配进程。sleep 5给进程留出清理时间。if pgrep ... /dev/null判断进程是否仍存在存在则强制杀死。参数怎么改kill -l列出所有信号。kill -0 pid不发送信号只检查进程是否存在。pkill -f按模式批量杀进程慎用。3.3 系统资源free、df、ifconfig 的读数free看内存和交换空间重点看available列而不是free列因为buff/cache可回收。df -h看磁盘分区使用率-h人类可读。ifconfig看网卡配置虽然新系统推荐ip addr但ifconfig在多数环境仍然可用。free -h输出里available是估算的可用内存比free更准确。df -h如果某个分区到 100%先du -sh定位大目录再决定清理还是扩容。ifconfig主要看inet地址和RX/TX流量计数。# 人类可读格式查看内存 free -h # 查看磁盘分区使用率 df -h # 查看网卡配置和流量 ifconfig eth0逻辑说明free -h的-h自动换算单位。df -h的Use%列超过 80% 就该关注。ifconfig eth0指定网卡不加参数显示所有。参数怎么改free -s 2每 2 秒刷新。df -i看 inode 使用率inode 满了也会导致无法创建文件。ifconfig在部分新系统需安装 net-tools。4. 文本查看与权限管理cat、tail、chmod 的细节4.1 文本查看cat、more、less、head、tail 的适用场景cat适合小文件一次性输出全部内容。more和less分页显示less支持上下翻页和搜索比more好用。head -20看开头 20 行tail -20看结尾 20 行。tail -f是实时滚动看日志必备。cat 1.txt | grep hello是管道组合把 cat 的输出作为 grep 的输入。但更高效的写法是grep hello 1.txt省去一次管道。tail -f配合grep可以实时过滤日志tail -f app.log | grep ERROR。# 查看文件开头 20 行 head -20 1.txt # 查看文件结尾 20 行 tail -20 1.txt # 实时滚动查看日志过滤 ERROR 行 tail -f app.log | grep --line-buffered ERROR # 分页查看大文件支持搜索 less /var/log/syslog逻辑说明head -20和tail -20的-20是行数简写等价于-n 20。--line-buffered让 grep 逐行输出避免管道缓冲导致日志延迟。less中按/搜索、q退出。参数怎么改tail -f -n 100从最后 100 行开始滚动。head -c 1024按字节数查看。less F进入类似 tail -f 的模式按 CtrlC 退出。4.2 权限修改chmod 的符号模式与数字模式chmod ur 1.txt是符号模式u当前用户、g同组、o其他、a所有添加、-移除、设置。r可读、w可写、x可执行。chmod -R ur dir1递归修改目录及子目录。数字模式更常用chmod 755表示所有者读写执行、组和其他读执行。chmod 644表示所有者读写、组和其他只读。-R递归时要注意目录需要x权限才能进入所以目录通常设755文件设644。# 符号模式给所有者添加执行权限 chmod ux script.sh # 数字模式所有者读写执行组和其他读执行 chmod 755 /data/app/bin/start.sh # 递归修改目录权限目录 755 文件 644 find /data/www -type d -exec chmod 755 {} \; find /data/www -type f -exec chmod 644 {} \;逻辑说明find -type d只匹配目录-type f只匹配文件分别设置权限避免一刀切。-exec ... \;对每个结果执行 chmod。参数怎么改chmod -R递归但可能误伤建议用 find 精确控制。chmod X大写只给目录和已有执行权限的文件加 x。4.3 归属与链接chown、ln 的硬链接与符号链接chown user1:group1 1.txt修改文件所属用户和组。chown -R user1:group1 dir1递归修改。ln 1.txt 1_bak.txt创建硬链接两个文件名指向同一 inode删掉一个另一个还在。ln -s 1.txt 1_bak.txt创建符号链接类似快捷方式源文件删了链接就失效。硬链接不能跨文件系统不能链接目录。符号链接可以跨文件系统可以链接目录。生产环境用符号链接更多比如ln -s /data/releases/app-v2 /data/app/current切换版本时只改链接指向。# 修改文件所属用户和组 chown user1:group1 1.txt # 递归修改目录下所有文件及子目录 chown -R user1:group1 /data/app # 创建符号链接指向实际版本目录 ln -s /data/releases/app-v2 /data/app/current # 查看链接指向 ls -l /data/app/current逻辑说明chown user:group冒号分隔用户和组。ln -s创建符号链接ls -l显示-指向。硬链接用ln不加-s。参数怎么改chown -h修改符号链接本身的归属而非目标。ln -sf强制覆盖已存在的链接。chown --referencefile1 file2以 file1 为模板修改 file2。5. 避坑与排查那些年我踩过的命令坑5.1 rm -rf 路径拼接翻车现象脚本里rm -rf $DIR/*变量$DIR为空时变成rm -rf /*系统文件被删。 原因变量未定义或赋值失败通配符展开到根目录。 解决脚本开头set -u让未定义变量报错删除前判断[ -n $DIR ] rm -rf $DIR/*变量加引号防止空格分词。5.2 tail -f 管道 grep 无输出现象tail -f app.log | grep ERROR明明有 ERROR 日志终端却不显示。 原因grep 默认缓冲输出管道中数据攒够一块才刷。 解决加--line-buffered参数tail -f app.log | grep --line-buffered ERROR。或者用stdbuf -oL grep ERROR。5.3 chmod -R 777 的权限灾难现象为了省事chmod -R 777 /data结果 SSH 密钥被其他用户读取安全审计不过。 原因777 让所有用户可读写执行包括敏感文件。 解决目录 755、文件 644用 find 分别设置。SSH 目录.ssh设 700密钥文件设 600。5.4 kill -9 导致数据不一致现象数据库进程kill -9后重启事务日志回滚部分数据丢失。 原因-9 不给进程清理机会未落盘的数据丢失。 解决先kill -15等待进程自行退出。数据库类进程尤其要避免 -9除非完全无响应。5.5 df 和 du 结果不一致现象df -h显示磁盘满du -sh *加起来却远小于分区大小。 原因被删除的文件仍被进程持有句柄空间未释放。 解决lsof | grep deleted找到持有句柄的进程重启该进程释放空间。或者 /proc/pid/fd/fd_num清空。6. 进阶技巧用 history、管道和重定向串起工作流history配合ctrl r是命令行的后悔药。ctrl r进入反向搜索输入关键词就能调出历史命令。我习惯用history | grep ssh找之前连过的机器比翻笔记快。history -c清空当前会话历史但不会清.bash_history文件。重定向和管道是组合命令的基础。覆盖、追加、2错误输出、全部输出。echo haha 1.txt把输出写入文件echo lala 1.txt追加。cat 1.txt | grep hello管道把前一个命令的输出作为后一个的输入。# 搜索历史命令中的 ssh 连接 history | grep ssh # 将标准输出和错误输出都追加到日志 ./run.sh /var/log/app.log 21 # 用管道统计当前目录文件数 ls -1 | wc -l # 查找并统计匹配行数 grep -c ERROR app.log逻辑说明21把文件描述符 2错误重定向到 1标准输出是追加模式的简写。ls -1每行一个文件名wc -l统计行数。grep -c直接输出匹配行数比grep | wc -l少一次管道。参数怎么改history -w立即写入历史文件。exec file 21把整个脚本的输出重定向。tee命令同时输出到屏幕和文件command | tee output.log。压缩解压这块tar -zcvf 1.tar.gz 1.txt打包并 gzip 压缩tar -zxvf 1.tar.gz解压。gzip 1.txt压缩单文件gzip -d 1.txt.gz解压。tar的-z是 gzip、-j是 bzip2、-J是 xz。我一般用tar -zcvf打包-C指定解压目录tar -zxvf 1.tar.gz -C /target/dir。快捷键方面ctrl c停止当前进程、ctrl l清屏、ctrl q退出、tab自动补全。ctrl a跳到行首、ctrl e跳到行尾、ctrl u删除到行首、ctrl k删除到行尾。这些组合键在敲长命令时能省不少时间。从那以后我每次写删除脚本都强制走一遍「变量判空 路径确认 先 ls 后 rm」的流程宁可多敲几行也不赌运气。这份命令清单我建议存一份在本地遇到具体操作问题时直接搜比临时查网页快得多。希望帮到你。本文还有配套的精品资源点击获取
返回列表