Linux Shell是用户与操作系统内核沟通的交互式命令行环境,通过输入特定指令完成文件管理、系统监控和自动化任务。不同类型的Shell如Bash、Zsh提供了相似的基础操作语法,日常工作中掌握一套通用命令即可应对绝大多数场景。本文从目录文件操作、文本处理、进程管理三个维度详细说明那些高频使用的Shell用法,并给出可运行的示例。

文件与目录的基础操作
在Shell里最常见的动作就是浏览和管理文件系统。ls命令用于列出目录内容,添加-l参数可以查看权限、大小和修改时间等详细信息,-a则显示包括以小数点开头的隐藏文件。实际排查问题时,常把两者合并为ls -la来确认配置文件是否存在。用cd切换路径时,相对路径和绝对路径的差别需要分清,例如cd /var/log直接进入系统日志根目录,而cd ../conf则是从当前位置向上跳一级再进conf文件夹。
创建和删除操作同样频繁。mkdir新建目录,加上-p能自动补齐多级父目录,避免手动逐层创建;rm删除文件,若误用rm -rf强制递归删除目录则极难恢复,因此生产环境建议先ls确认再删。下面这段脚本演示了安全备份旧配置再建新目录的做法:
# 备份原有配置目录 if [ -d /etc/app/conf ]; then mv /etc/app/conf /etc/app/conf_bak_$(date +%Y%m%d) fi # 创建多级新目录 mkdir -p /etc/app/conf/sub/module echo "目录初始化完成"
通配符让批量处理变简单。星号*匹配任意数量字符,问号?匹配单个字符,方括号[a-z]限定范围。例如rm log_*.txt清理所有以log_开头且后缀为txt的文件,比逐个删除高效得多。掌握这些基础操作后,日常文件维护基本不需要依赖图形界面。
文本处理与管道组合
服务器产生的日志和配置大多是纯文本,Shell自带一系列轻量工具来完成抽取和统计。cat负责输出文件全部内容,但面对大文件更推荐less分页查看;grep则按关键词过滤行,-i忽略大小写,-n显示行号,-v反向匹配。排查接口超时时,常用grep -n "timeout" api.log直接定位错误行。
管道符号|是Shell最强大的特性之一,它把前一个命令的标准输出作为后一个命令的输入,形成数据处理链。awk擅长按列提取,sed用于流式替换。比如统计访问量最高的前五个IP,可以连续使用awk切分日志、sort排序、uniq -c计数再head截取:
# 假设日志格式为 IP - - [时间] "请求" 状态码
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -5
这种组合避免了写复杂程序,一行命令完成原本需要脚本实现的逻辑。需要注意的是,管道每次都会开启子进程,超大量数据时可考虑grep自带的正则或awk单进程内部多步处理来减少开销。文本三剑客灵活搭配,能解决运维中九成的查询类需求。
进程查看与控制
系统运行中难免遇到卡死或占满资源的进程,Shell提供了一组命令来观测和干预。ps静态快照当前进程,ps aux以BSD风格展示全部用户进程及CPU、内存占用;top或htop则动态刷新。发现某个Java应用CPU异常,先用ps aux | grep java拿到PID,再决定如何处理。
终止进程主要用kill和killall。kill PID发送终止信号,若程序不响应可追加-9强制杀死,但这可能导致数据未落盘,须谨慎。后台运行长任务时,在命令末尾加&或使用nohup脱离终端,配合jobs查看后台任务编号,fg调回前台。示例展示如何安全重启一个服务进程:
# 查找监听8080端口的进程并重启 PID=$(lsof -ti:8080) if [ -n "$PID" ]; then kill -15 $PID sleep 2 # 若仍未退出则强制结束 kill -9 $PID 2>/dev/null fi nohup /opt/app/start.sh > /var/log/app.out 2>&1 & echo "服务已重启,新PID为 $!"
除了单次操作,把进程管理写进Shell脚本可实现开机自启和异常拉起。通过crontab定时调用检测脚本,当关键进程消失时自动执行启动命令,能显著降低人工介入成本。理解信号机制和进程树关系,是写出稳健运维脚本的前提。
Linux_Shellshell_commandterminal_operation修改时间:2026-08-16 05:38:27