尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux命令行入门:从零掌握服务器运维与Shell脚本基础

Linux命令行入门:从零掌握服务器运维与Shell脚本基础 Linux命令行入门从0到1玩转Linux这次我们来看一个非常基础但绕不开的话题——Linux命令行。不管你是刚转行做运维、刚开始系统学习编程还是日常需要维护服务器Linux命令行都是必须跨过的一道门槛。很多初学者卡在第一关不是命令记不住而是不知道每个命令在实际工作中怎么用、什么时候用。这篇文章直接用“场景 → 命令 → 实际输出 → 排查思路”的方式把最常用的 Linux 命令完整串一遍。文章会覆盖四个重点环境准备、文件与目录操作、权限与进程管理、Shell 脚本基础。每一条命令都按“中英文命令对照 实际用途 示例 结果验证”的顺序展开。读者跟着操作一遍基本就能独立完成最常见的 Linux 运维任务。如果你之后要学 Docker、Nginx、Kubernetes、CI/CD这套命令行基础也是前提。适合读者刚接触 Linux 的运维新人、准备 Linux 面试题的技术人员、工作中需要操作服务器的开发工程师。不建议完全没有接触过终端操作的纯业务用户继续往下读更推荐先在 Windows/Mac 上装一台虚拟机或直接使用云服务器实践。1. 核心能力速览项目说明主题方向Linux 命令行基础入门覆盖运维与编程场景涉及命令范围文件操作、目录导航、文本处理、权限管理、进程监控、网络调试、SSH 远程连接适合人群运维新手、编程初学者、面试备考者、桌面用户转服务器管理学习前提有一台 Linux 主机、虚拟机或云服务器即可无需高配硬件启动方式终端 / Shell无需图形界面是否需要 API本教程不涉及接口服务但会演示命令的脚本化、批量任务处理中英双语特点所有核心命令保留英文原名注释与场景说明用中文便于对照记忆和查询英文文档推荐实践频率每天 30 分钟建议连续练习 7 天适合场景日常服务器维护、日志排查、Shell 脚本编写、Linux 面试准备这个表先给你一个整体判断学习 Linux 命令行不挑硬件不挑显卡不挑内存大小一台最普通的电脑装个虚拟机都能跑。真正的门槛是你能不能坚持把命令敲熟以及遇到问题后知道去哪里查。2. 适用场景与使用边界2.1 适合什么场景Linux 命令行在运维工作中的价值主要体现在三个场景第一个是远程服务器管理。生产服务器绝大多数没有图形界面你只能用 SSH 连上去做操作这时候命令行就是唯一入口。第二个是日志排查和问题定位。服务崩溃、接口超时、磁盘写满都需要用命令快速查看定位问题比看日志文件本身更重要。第三个是自动化脚本。重复的备份、日志清理、批量改名、定时检测都可以交给 Shell 脚本处理。2.2 这个阶段不适合做什么如果你刚接触 Linux不建议直接在生产环境上练习命令尤其是rm -rf、mv、chown这类具有破坏性的操作。本地虚拟机或一次性云主机是最安全的练手环境。也不建议一上来就折腾复杂的防火墙规则、SELinux 策略、内核参数调优这些需要先理解系统机制否则出了问题很难定位。2.3 安全与合规边界生产环境中的服务器通常承载业务数据操作前必须检查是否拥有相应授权。查看日志时候注意敏感信息比如用户密码、Token、密钥涉及批量处理文件或数据时先在小范围目录内验证再全量执行不要在没有备份的情况下执行删除、移动、覆盖操作。3. 环境准备与前置条件3.1 你需要准备什么实践 Linux 命令行最常见的三种方式按推荐程度排列方式适合场景注意点云服务器阿里云/腾讯云/UCloud 等或其他可用云平台最接近生产环境可以练习远程连接计费注意实例规格选择建议按量付费新用户时练习别浪费本地虚拟机VirtualBox / VMware / UTM完全免费安全隔离建议安装 Ubuntu Server 或 Debian不要装带桌面版WSLWindows Subsystem for LinuxWindows 用户最方便注意 WSL1 和 WSL2 的文件系统差异推荐 WSL2如果只是为了学习不用装图形界面。命令行的学习目标就是用终端操作桌面版反而容易分散注意力。3.2 操作系统版本选择学习命令行不挑发行版但建议选择文档成熟、社区活跃的发行版例如 Ubuntu LTS 版本或 Debian stable 版本。REHL 系的 CentOS Stream、Rocky Linux、AlmaLinux 也可以只是包管理命令不同Debian 系用aptRHEL 系用dnf或yum。建议初学者先认准一个发行版学到底命令逻辑通了换发行版的成本很低。安装系统时语言环境不需要刻意改。虽然本文标题强调中英双语但建议终端环境保留英文输出原因很简单生产服务器基本是英文环境报错信息、官方文档也以英文为主尽早习惯英文报错能少走弯路。3.3 连接工具如果是云服务器使用 SSH 客户端连接。Windows 自带 OpenSSH可以在 PowerShell 里输入ssh 用户名IP地址连接macOS/Linux 直接在终端执行同样命令即可。也可以使用 Windows Terminal、MobaXterm、Tabby 等工具这类软件支持多标签、保存连接信息体验更顺手。避免下载来路不明的汉化版终端工具注意软件来源安全。4. 基础命令与图形界面区别4.1 图形界面和命令行的差别图形界面点击一个按钮背后往往是一次命令执行。命令行做的事情更底层、更直接但需要你明确告诉系统“做什么、对谁做、怎么做”。这也是很多初学者觉得命令行难的原因没有按钮提示也没有可视化反馈。但命令行有一个图形界面比不了的优势——可批量、可重复、可自动化。你手动点击 100 次按钮和写一个for循环执行 100 次命令后者的效率和稳定性完全不在一个量级。运维工作中的批量任务本质就是批量执行命令这也是我们要学命令行的根本原因。4.2 第一个命令pwd 与 echo进入终端后先确认自己当前在哪个目录。# 查看当前工作目录 pwd # 输出一行文字通常用于脚本调试 echo Hello Linux # 查看当前用户 whoami这三个命令是入门的第一组也是脚本里最常用的调试手段。pwd是 print working directory 的缩写echo用于向终端输出内容或写入变量whoami用于确认当前操作身份。先记住这三个后面每一项操作都会用到它们。4.3 中英双语记忆方法学习命令时不要死记中文翻译而是记英文全称的含义例如pwd→ print working directoryls→ listcd→ change directory。因为命令本身的英文含义直接描述了它做什么理解了全称之后遇到陌生的命令也能猜个大概。5. 文件与目录操作命令5.1 查看目录内容lsls是最常用的命令没有之一。# 查看当前目录内容 ls # 查看详细属性权限、大小、修改时间 ls -l # 查看隐藏文件 ls -a # 组合使用 ls -lahls -lah的组合在生产环境特别常用l表示长格式a表示显示隐藏文件h表示以人类可读方式显示文件大小。当服务日志查不到、配置目录没头绪时第一件事就是ls -lah看目录里到底有什么。预期输出示例total 36K drwxr-xr-x 2 root root 4.0K Jan 6 10:20 . drwxr-xr-x 3 root root 4.0K Jan 6 10:15 .. -rw-r--r-- 1 root root 220 Jan 6 10:15 .bash_logout -rw-r--r-- 1 root root 3.7K Jan 6 10:15 .bashrc -rw-r--r-- 1 root root 807 Jan 6 10:15 .profile判断标准能看到文件列表以及权限、属主、大小、时间信息命令就执行成功。如果提示No such file or directory说明当前目录路径不对先执行pwd确认位置。5.2 切换目录cd# 进入指定目录 cd /etc # 返回上一级目录 cd .. # 返回当前用户的家目录 cd ~ # 回到上一次所在目录 cd -实际工程中cd -非常实用。你从/etc/nginx切到/var/log/nginx查看完日志一条cd -就能回到刚才的位置省去一长串路径输入。5.3 创建目录mkdir# 创建单层目录 mkdir test # 创建多级目录 mkdir -p /data/logs/nginx # 批量创建有序目录比如按日期归档 mkdir -p /data/backup/$(date %Y%m%d)-p参数是很实用的技能它允许一次性创建多级目录并且目录已存在时不会报错。最后一条命令用$(date %Y%m%d)动态生成日期目录名是日志归档的常见写法。5.4 创建文件touch# 创建空文件 touch test.txt # 同时创建多个文件 touch a.log b.log c.log # 批量创建 1 到 10 的日志文件 touch log{1..10}.log后面的花括号展开语法log{1..10}.log是 bash 内建功能能快速生成类似log1.log、log2.log一直到log10.log的文件为批量任务做素材时很有用。5.5 复制、移动与删除# 复制文件 cp test.txt /data/backup/ # 复制目录递归 cp -r /data/backup /data/backup_2024 # 移动或重命名 mv oldname.txt newname.txt # 删除文件 rm test.txt # 删除目录及内容谨慎使用 rm -rf /tmp/testdir删除命令必须强调执行rm -rf之前一定先用ls或pwd确认当前目录和删除路径防止误删。生产环境建议先mv到一个临时回收目录确认没问题后再最终删除。6. 文件内容查看与文本处理6.1 查看文件内容cat、less、tail# 查看整个文件 cat /etc/hostname # 分页查看大文件适合日志 less /var/log/syslog # 查看文件最后 10 行跟踪实时日志 tail -n 20 /var/log/nginx/access.log # 实时滚动输出最新日志 tail -f /var/log/nginx/error.logtail -f是排查线上问题时最常用的命令没有之一。程序运行没有预期输出、接口请求 502、日志增长异常直接tail -f挂在那里观察。less支持方向键上下翻页、按/搜索关键字、按q退出。看大文件时比cat更高效。6.2 文本搜索grep# 在文件中查找关键字 grep ERROR /var/log/app.log # 忽略大小写 grep -i error /var/log/app.log # 显示匹配行及前后各 5 行 grep -C 5 ERROR /var/log/app.log # 统计匹配行数 grep -c timeout /var/log/app.log # 递归搜索目录下的所有文件 grep -r database_host /etc/myapp/grep是日志排查、配置检查、代码检索的核心武器。运维场景中定位错误往往不是去看整个日志而是grep找出所有相关行再结合时间上下文判断。比如出现接口超时直接对日志执行grep timeout | tail -n 50先看最近 50 条超时记录再定位对应的请求 ID。6.3 文本处理三兄弟awk、sed、sort# 用 awk 按空格分隔打印第一列 awk {print $1} /var/log/nginx/access.log # 用 awk 按逗号分隔打印第三列 awk -F, {print $3} data.csv # 用 sed 做文本替换只输出不修改文件 sed s/old/new/g file.txt # 用 sed 原地修改文件 sed -i s/192.168.1.1/192.168.1.2/g /etc/app/config.ini # 对结果去重统计 sort access.log | uniq -c | sort -rn这组命令的实际价值是日志分析。比如从 Nginx 访问日志中统计访问量最高的 IP一行命令就能出结果awk {print $1} /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20执行逻辑提取第一列 IP排序统计每个 IP 出现次数按次数倒序排列取前 20 行。这样一条命令能快速找到异常流量来源或高频访问 IP相比把几万行日志拖进 Excel 处理要高效得多。6.4 重定向与管道# 把命令输出写入文件覆盖 echo hello /tmp/test.txt # 把命令输出追加到文件 echo world /tmp/test.txt # 管道把前一个命令的输出传给后一个命令 cat /etc/passwd | grep root管道符|是命令行组合逻辑的核心。每一个命令只做好一件事然后用管道串起来形成一条完整的处理链路。比如查看当前系统内存占用最高的 10 个进程用ps aux配合sort和head就能完成。7. 权限管理与用户操作7.1 文件权限基础Linux 文件权限用 9 个字符表示分为三组所有者权限、所属组权限、其他用户权限。每组都是rwx的组合r读w写x执行。# 查看文件详细权限 ls -l /etc/passwd # 修改文件权限所有者读写执行组内用户读写其他用户只读 chmod 764 file.txt # 使用字母方式添加执行权限 chmod x script.sh # 修改文件所有者 chown root:root /data/file.txt读取文件名的权限位时与前面的drwxr-xr-x示例对照能看到第一位的d表示目录后面三组字符分别对应不同身份用户。理解权限模型是后续用普通用户运行服务、排查Permission denied报错的基础。7.2 用户管理# 创建用户 useradd -m -s /bin/bash zhangsan # 创建用户并设置密码 passwd zhangsan # 切换到其他用户 su - zhangsan # 以 root 权限执行单条命令 sudo apt update # 查看当前登录用户 who生产服务器通常会禁用 root 直接登录改用普通用户加sudo提权这样既能审计操作记录也能减少误操作风险。建议学习阶段就养成“普通用户操作管理命令用 sudo”的习惯。7.3 权限排查方法遇到Permission denied时按下面的步骤排查# 1. 确认当前身份 whoami # 2. 确认文件和目录权限 ls -ld /data /data/logs # 3. 尝试用所有者身份执行 sudo -u appuser cat /data/logs/app.log # 4. 查看目录所有者和所属组 stat /data/logs从材料看实践中最容易踩的坑不是文件权限本身而是目录没有执行权限。Linux 对目录的x权限决定了是否允许进入目录即使你对文件有读权限但父目录没有x权限依然无法访问。8. 网络命令与远程连接8.1 网络排查命令# 测试目标主机连通性 ping -c 4 baidu.com # 查看本机 IP 地址 ip addr show # 查看端口监听状态 ss -tlnp # 查询域名对应的 IP nslookup example.comss -tlnp在排查“服务起来了但访问不了”这种问题时非常关键它显示当前系统监听的所有 TCP 端口和你对应的进程。比如 Nginx 配置了 8080 端口但ss中没有输出说明 Nginx 可能没有监听成功或配置端口不对。8.2 SSH 远程连接# 标准连接方式 ssh root192.168.1.100 # 指定端口连接 ssh -p 2222 root192.168.1.100 # 使用密钥登录 ssh -i ~/.ssh/id_rsa root192.168.1.100 # 本地端口转发用于访问内网服务 ssh -L 8080:localhost:80 root192.168.1.100密钥登录是生产环境服务器最常见的做法因为它比密码登录更安全。生成密钥ssh-keygen -t ed25519 -C your_emailexample.com # 查看公钥 cat ~/.ssh/id_ed25519.pub生成后将公钥内容添加到服务器的~/.ssh/authorized_keys文件中之后连接时就不需要输入密码了。如果服务器提示Permissions too open需要执行chmod 600 ~/.ssh/authorized_keys和chmod 700 ~/.ssh修正权限。8.3 下载文件与传输# 用 wget 下载文件 wget https://example.com/file.tar.gz # 用 curl 测试接口 curl -I https://example.com # 用 scp 复制文件到远程服务器 scp local.txt root192.168.1.100:/data/ # 用 rsync 同步目录 rsync -avz ./data/ root192.168.1.100:/data/curl -I发的是 HEAD 请求只返回响应头是快速判断接口是否存活的手段。rsync是同步文件和目录的利器支持增量传输、断点续传大文件备份用它比scp更合适。9. 进程管理与系统监控9.1 查看和控制进程# 查看所有进程 ps aux # 按关键词过滤进程 ps aux | grep nginx # 动态监控系统资源 top # 按内存占用排序 top -o %MEM # 结束指定进程 kill 12345 # 强制结束进程 kill -9 12345 # 通过进程名结束 pkill nginxps aux的输出列很多刚学的时候重点关注这几个字段USER进程使用者PID进程 ID%MEM内存占用百分比COMMAND对应的执行命令。当服务吞内存、CPU 飙升时先用top -o %CPU找到问题进程再决定是重启还是查日志。9.2 查看磁盘和内存# 查看磁盘空间 df -h # 查看当前目录大小 du -sh /var/log/ # 查看系统内存情况 free -h # 查看目录下各子目录大小 du -sh /var/log/* | sort -rh | head日志文件写满磁盘是运维中的高频事故。df -h能快速发现磁盘使用率告警du -sh /var/log/* | sort -rh一行命令能定位大目录配合tail、grep排查具体文件是标准排查链路。9.3 systemctl 服务管理# 启动服务 systemctl start nginx # 停止服务 systemctl stop nginx # 重启服务 systemctl restart nginx # 查看服务状态 systemctl status nginx # 设置开机自启动 systemctl enable nginx学会了 systemctl 基础用法就具备了管理绝大多数 Linux 服务的实际能力。服务异常时优先systemctl status看错误信息再结合journalctl -u 服务名查看详细日志比盲目重启更有效。10. Shell 脚本入门与批量任务10.1 第一个脚本创建一个脚本文件实现基本的服务器信息输出。#!/bin/bash # 功能输出当前系统的基本信息 echo 当前时间$(date) echo 当前用户$(whoami) echo 当前目录$(pwd) echo 系统负载$(uptime)保存为server_info.sh然后添加执行权限并运行chmod x server_info.sh ./server_info.sh10.2 循环批量处理文件#!/bin/bash # 批量将 /data/input 目录下的 .log 文件重命名为 .bak for file in /data/input/*.log; do mv $file ${file%.log}.bak echo 已处理: $file done判断标准执行后/data/input目录下所有.log后缀文件变成.bak且每处理一个文件都有输出。如果部分文件没有处理先检查目录路径是否正确以及是否对文件有读写权限。10.3 日志清理脚本#!/bin/bash # 清理超过 7 天的日志文件保留最近 7 天 LOG_DIR/var/log/myapp find $LOG_DIR -type f -name *.log -mtime 7 -delete这个脚本用find查找指定目录下 7 天前修改过的日志文件并删除可配合 crontab 做定期清理。10.4 定时任务# 编辑当前用户的 crontab crontab -e # 每天凌晨 2 点执行清理脚本 0 2 * * * /opt/scripts/clean_logs.sh # 每分钟执行一次测试脚本 * * * * * /opt/scripts/test.sh # 查看已配置的定时任务 crontab -l定时任务是批量任务的运行基础。日志切割、数据备份、临时文件清理都可以用 crontab 自动化执行前提是脚本先手动跑通再进入定时调度。10.5 脚本调试思路第一次写脚本出错很正常建议执行以下步骤调试# 1. 用 bash -x 跟踪每一条命令的执行过程 bash -x ./server_info.sh # 2. 检查脚本是否有语法错误 bash -n ./server_info.sh # 3. 加临时输出确认变量值 echo 当前变量: $filebash -x会把每一步执行的命令和展开的变量打印到终端定位脚本问题时比逐行读代码高效得多。11. 资源占用与性能观察方法在这个阶段不需要过度关注性能调优但需要知道如何观察系统资源情况。11.1 查看 CPU 和内存占用top是观察 CPU 和内存的入门命令按q退出。重点关注%CPU、%MEM两列如果某个进程持续占用过高结合ps aux | grep 进程名做进一步确认。free -h查看内存总量、已用量和缓存。11.2 查看磁盘占用df -hdf -h是排查磁盘满的第一命令关注Use%列。如果使用率超过 80%建议检查日志目录、临时目录、用户家目录是否有大文件。重复文件扫描在生产环境要非常谨慎建议先du -sh定位目录小范围测试不要直接执行全盘扫描。大型文件扫描用find / -xdev -type f -size 1G 2/dev/null这条命令查找根文件系统下超过 1G 的文件-xdev限制不跨越文件系统避免扫描到挂载的存储盘。12. 常见问题与排查方法问题现象可能原因排查方式解决方案命令提示command not found软件未安装或 PATH 未包含which 命令名确认路径安装对应软件包或使用完整路径Permission denied文件权限或目录权限不足ls -l查看权限whoami确认身份按需chmod、chown或使用 sudo端口被占用其他进程占用端口ss -tlnp | grep 端口号杀掉占用进程或更换端口磁盘空间已满日志、临时文件过多df -h、du -sh /var/log清理日志和临时目录SSH 连接被拒绝SSH 服务未启动、防火墙拦截、密钥权限错误systemctl status sshd、ss -tlnp | grep 22启动 SSH 服务检查防火墙规则脚本执行报bad interpreter脚本头格式错误或编码问题head -1 脚本检查首行确保第一行为#!/bin/bash用dos2unix转换换行符批量任务中断脚本中遇到错误未退出增加set -x和错误处理逻辑脚本中加入set -e遇错即停排查问题的核心思路是“由近到远”先确认自己当前目录和身份再确认文件和目录权限最后看服务状态和系统资源。80% 的问题都出在这三个环节。13. 最佳实践与使用建议13.1 安全操作习惯每条可能导致数据丢失的命令都要先确认两件事当前目录是哪、目标文件是否是预期对象。建议把rm -rf从“可用”降级为“最后手段”能用mv解决的问题不用rm。配置一台专门的测试虚拟机所有危险命令先在测试机上验证再到生产环境执行。13.2 学习路径建议不要试图一天记完所有命令。更有效的方式是带着场景学比如想实现日志排查今天专门练习grep、awk、tail想解决服务启动问题今天专门练习systemctl、journalctl。一个场景一个场景积累比照着命令大全背效率高得多。中英双语表达的另一个实战价值就在这里命令学的是英文原词搜资料、看报错、查官方文档都能直接对应不需要在中文博客和英文文档之间反复转换。13.3 日常管理习惯项目文件按用途分目录存放脚本统一放进/opt/scripts日志统一放进/var/log/myapp备份按日期建立子目录。Shell 脚本开头必须加#!/bin/bash和功能注释涉及删除操作时先输出将要处理的文件列表人工确认后再真正执行。13.4 排查问题方法论服务出现异常第一件事不是马上重启而是收集信息。按这个顺序执行systemctl status 服务名看状态、journalctl -u 服务名 -n 50看最近日志、df -h看磁盘、free -h看内存、ss -tlnp看端口。五条命令执行完大部分问题原因已经能定位了。14. 总结与下一步Linux 命令行的价值不在于把命令背熟而在于你面对一台没有图形界面的服务器时依然能靠终端完成所有运维操作。核心路径是先掌握文件和目录操作再学文本处理和权限管理然后用进程监控和网络命令排查实际问题最后用 Shell 脚本把重复工作自动化。最先要验证的就是文件的增删改查和查看日志能力这是所有后续操作的基础。最容易踩的坑是权限问题和误删操作前者靠ls -l和whoami排查后者靠事前确认和备份避免。学完这套基础命令下一步建议继续学习三项内容一是 Nginx 配置与反向代理二是 Docker 基础操作三是编写更完整的自动化部署脚本。这三项的底子都是你已经在本文里练过的 Linux 命令行。
返回列表