Linux 与 Shell 自动化运维基础知识记录

一、什么是 Shell

Shell(壳)是一个命令行解释器,它是用户与操作系统内核进行交互的接口。

简单来说:

  • 你输入命令
  • Shell 接收并解释这些命令
  • Shell 调用操作系统内核执行
  • 最后返回执行结果

Shell 就像是你和 Linux 之间的"翻译员"。

一个最直观的理解

比如你输入:

bash 复制代码
ls

Shell 会把这个命令交给系统去执行,然后把结果显示出来。


二、Shell 的作用

Shell 的作用很简单:帮你把命令变成系统能执行的动作

它常见的用途有:

  • 查看文件
  • 切换目录
  • 创建文件
  • 执行脚本
  • 自动化运维

也就是说,Shell 是 Linux 自动化运维的基础之一。


三、为什么要学 Shell

因为很多运维工作都可以通过 Shell 脚本自动完成。

比如:

  • 每天自动备份数据库
  • 每小时检查服务是否存活
  • 自动清理日志
  • 批量重启服务

如果不用 Shell,这些事情就要一遍一遍手工做。


四、最简单的 Shell 脚本

bash 复制代码
#!/bin/bash

echo "Hello Linux"

这段脚本的意思是:

  • 使用 bash 执行
  • 输出一句话

运行方式

bash 复制代码
bash test.sh

如果加了执行权限,也可以直接运行:

bash 复制代码
chmod +x test.sh
./test.sh

五、Shell 脚本最基础的几个概念

1. 变量

bash 复制代码
name="linux"
echo $name

变量就是给一个值起名字,后面可以重复使用。

2. 条件判断

bash 复制代码
if [ -f /tmp/test.txt ]; then
  echo "文件存在"
else
  echo "文件不存在"
fi

意思是:如果文件存在,就输出"文件存在"。

3. 循环

bash 复制代码
for i in 1 2 3
 do
  echo $i
done

意思是依次输出 1、2、3。


六、Shell 在运维中的常见用途

1. 备份

bash 复制代码
#!/bin/bash
cp /data/app.log /backup/app.log

2. 清理日志

bash 复制代码
#!/bin/bash
rm -f /var/log/test.log

3. 检查服务

bash 复制代码
#!/bin/bash
systemctl status nginx

这些都是最常见的基础运维动作。


七、Shell 和自动化运维的关系

自动化运维的核心思想就是:

原来手工做的事情,尽量交给脚本和定时任务去做。

Shell 是实现这个目标最基础、最常用的工具之一。


八、常见的 Shell 类型

常见的 Shell 类型有这些:

  • bash:最主流,功能强大,Linux 和 MacOS 默认常见
  • zsh:兼容 bash,扩展更强,MacOS 和 Linux 都可用
  • sh:最基础的 Unix Shell,所有 Unix/Linux 基本都支持
  • PowerShell:面向对象,可处理 .NET,Windows 默认常见

对于 Linux 运维来说,最常见的还是 bash

简单记法

  • bash:最常用
  • sh:最基础
  • zsh:更强一些,兼容 bash
  • PowerShell:偏 Windows 体系

九、Shell 的核心功能

Shell 的核心功能主要有下面几类:

1. 命令执行

运行系统命令和程序。

例如:

bash 复制代码
ls
pwd
cat /etc/os-release

2. 文件管理

创建、删除、复制、移动文件。

例如:

bash 复制代码
touch a.txt
cp a.txt b.txt
mv b.txt /tmp/
rm -f a.txt

3. 进程管理

启动、停止、查看程序运行情况。

例如:

bash 复制代码
ps -ef | grep nginx
systemctl restart nginx
systemctl status nginx

4. 脚本编程

把多个命令组合成自动化脚本。

例如:

bash 复制代码
#!/bin/bash
echo "start"
date
echo "done"

5. 环境控制

配置系统环境变量、用户工作环境。

例如:

bash 复制代码
export PATH=$PATH:/usr/local/bin

这些功能加在一起,就是 Shell 在 Linux 里的核心作用。


十、Shell 最擅长的场景

Shell 最擅长的场景可以简单记成下面几类:

1. 简单的单行命令

适合快速执行一个动作。

例如:

bash 复制代码
ls /tmp

2. 临时任务

比如临时查日志、清理文件、检查进程。

例如:

bash 复制代码
rm -f /tmp/test.log

3. 系统启动脚本

在系统启动时自动做一些初始化工作。

例如:

  • 启动某个服务
  • 设置环境变量
  • 初始化目录

4. 管道数据处理

Shell 很适合把多个命令串起来处理数据。

常见组合是:

bash 复制代码
grep / awk / sed

例如:

bash 复制代码
ps -ef | grep nginx | awk '{print $2}'

5. 交互式命令行操作

在终端里边查边改,做快速操作。

例如:

  • 查文件
  • 查进程
  • 看日志

6. 性能敏感的批量小文件处理

Shell 处理大量小文件时很方便。

例如:

  • 批量改名
  • 批量删除
  • 批量移动

十一、Shell 的常见限制

1. 不适合太复杂的逻辑

Shell 可以写逻辑,但太复杂后可读性会下降。

2. 不适合大型程序开发

大型项目更适合 Python、Java、Go。

3. 不适合特别复杂的数据处理

能做,但维护起来不如专门语言舒服。


十二、AI 时代 Shell 的常用场景

AI 时代里,Shell 依然很有用,只是使用方式更丰富了。

1. AI 辅助脚本开发

让 AI 帮你写 Shell 脚本,从自然语言直接生成可执行代码。

例如:

  • "帮我写一个每天备份日志的脚本"
  • "帮我写一个检查 nginx 是否存活的脚本"

2. 智能日志分析

Shell 负责采集和预处理日志,AI 负责分析和判断。

例如:

  • Shell 提取日志文件
  • AI 分析异常内容
  • AI 给出问题结论

3. AIOps 自动化运维

Shell 作为执行层,AI 作为决策层。

例如:

  • Shell 检查服务状态
  • AI 判断是否异常
  • AI 给出处理建议

4. AI 数据预处理

Shell 可以快速整理训练数据。

例如:

  • 去重
  • 过滤
  • 合并文件
  • 转换格式

5. AI 模型部署与管理

Shell 常用于启动、停止、更新模型服务。

例如:

  • 启动推理服务
  • 拉取新版本代码
  • 重启模型容器

6. AI 工作流编排

Shell 可以把多个 AI 工具串起来,形成自动化流程。

例如:

  • 先抓取数据
  • 再调用模型
  • 最后整理结果

7. AI 安全与监控

Shell 可以配合 AI 做系统检查。

例如:

  • 检查端口是否开放
  • 检查日志是否有异常
  • 检查磁盘是否快满了

十三、AI 时代 Shell 的核心价值

text 复制代码
Shell + AI = 超级生产力
text 复制代码
不会 Shell:只能用 AI 聊天、查资料
text 复制代码
会 Shell:能用 AI 操控整个系统、自动化复杂任务

这也是现在学习 Shell 依然有价值的原因。


十四、Shell 常用命令:文件操作类

这一类命令最常用,主要用于文件和目录的查看、创建、复制、移动、删除等操作。

1. ls:列出目录内容

bash 复制代码
ls

这个命令会显示当前目录下有哪些文件和文件夹。

常用参数
bash 复制代码
ls -a

显示所有文件,包括隐藏文件。

bash 复制代码
ls -l

以长格式显示文件详细信息。

bash 复制代码
ls -la

同时显示隐藏文件和详细信息。

简单例子

bash 复制代码
ls /tmp

意思是:查看 /tmp 目录下有哪些内容。

bash 复制代码
ls -la /tmp

意思是:查看 /tmp 目录下的所有文件,并显示详细信息。

2. llls -l 的常用别名

bash 复制代码
ll

很多 Linux 环境里,llls -l 的快捷写法。

它通常等价于:

bash 复制代码
ls -l

3. cd:切换目录

bash 复制代码
cd /tmp

意思是:进入 /tmp 目录。

4. pwd:显示当前目录路径

bash 复制代码
pwd

意思是:查看自己现在在哪个目录里。

5. cp:复制文件或目录

bash 复制代码
cp a.txt b.txt

意思是:把 a.txt 复制成 b.txt

6. mv:移动或重命名文件

bash 复制代码
mv a.txt b.txt

意思是:把 a.txt 改名成 b.txt

如果目标是目录,就是移动文件。

7. rm:删除文件或目录

bash 复制代码
rm a.txt

意思是:删除 a.txt

8. mkdir:创建目录

bash 复制代码
mkdir test

意思是:创建一个叫 test 的目录。

9. rmdir:删除空目录

bash 复制代码
rmdir test

意思是:删除一个空目录。

10. touch:创建空文件或更新时间戳

bash 复制代码
touch a.txt

意思是:创建一个空文件 a.txt

11. find:查找文件

bash 复制代码
find /tmp -name "*.log"

意思是:在 /tmp 目录下查找所有 .log 文件。

12. ln:创建链接文件

bash 复制代码
ln -s /data/app.log app.log

意思是:创建一个指向 /data/app.log 的软链接 app.log

ln 常用参数
bash 复制代码
ln -s 目标文件 链接名

其中:

  • -s:表示创建软链接
  • 不加 -s:默认创建硬链接

简单例子

bash 复制代码
ln -s /data/app.log /tmp/app.log

意思是:在 /tmp 下创建一个软链接 app.log,指向 /data/app.log


十五、Shell 常用命令:文件查看类

这一类命令主要用于查看文件内容、分页查看、统计内容、查看大小和文件类型。

1. cat:查看文件内容(全部显示)

bash 复制代码
cat a.txt

意思是:把 a.txt 的内容全部显示出来。

2. less:分页查看文件(可上下翻页)

bash 复制代码
less /var/log/syslog

意思是:分页查看日志文件,可以上下翻页。

常用操作:

  • Space:下一页
  • b:上一页
  • /关键词:搜索
  • q:退出

3. more:分页查看文件(只能向下翻页)

bash 复制代码
more /var/log/syslog

意思是:分页查看文件,但只能向下翻页。

4. head:查看文件开头

bash 复制代码
head a.txt

默认显示前 10 行。

5. tail:查看文件结尾

bash 复制代码
tail a.txt

默认显示后 10 行。

6. wc:统计行数、单词数、字节数

bash 复制代码
wc a.txt

意思是:统计文件的行数、单词数和字节数。

7. du:查看文件或目录大小

bash 复制代码
du -sh /var/log

意思是:查看 /var/log 目录占用多大空间。

8. df:查看磁盘空间使用情况

bash 复制代码
df -h

意思是:查看磁盘使用情况,单位更容易读。

9. file:查看文件类型

bash 复制代码
file test.sh

意思是:查看 test.sh 是文本文件、脚本文件还是其他类型。


十六、Shell 常用命令:文本处理类

这一类命令最常用于日志分析、文本过滤、结果整理。

1. grep:搜索文本

bash 复制代码
grep "error" app.log

意思是:在 app.log 里搜索包含 error 的行。

2. awk:按列处理文本

bash 复制代码
awk '{print $1}' file.txt

意思是:输出每一行的第一列。

3. sed:流式文本编辑

bash 复制代码
sed 's/old/new/g' file.txt

意思是:把 old 替换成 new

4. sort:排序

bash 复制代码
sort file.txt

意思是:把 file.txt 内容排序后输出。

5. uniq:去重

bash 复制代码
uniq file.txt

意思是:去掉相邻重复行。

6. cut:剪切列

bash 复制代码
cut -d ':' -f 1 /etc/passwd

意思是:以 : 为分隔符,取第一列。

7. tr:替换或删除字符

bash 复制代码
tr 'a-z' 'A-Z'

意思是:把小写字母转换成大写字母。

8. diff:比较文件差异

bash 复制代码
diff a.txt b.txt

意思是:比较 a.txtb.txt 的不同。

9. echo:输出文本

bash 复制代码
echo "hello"

意思是:输出一段文字。


十七、Shell 常用命令快速记忆

文件操作类

  • ls:看目录内容
  • ls -a:看所有文件,包括隐藏文件
  • ls -l:看详细信息
  • ls -la:看所有文件的详细信息
  • llls -l 的常用简写
  • ln -s:创建软链接

文件查看类

  • cat:看全部内容
  • less:分页看,能上下翻页
  • more:分页看,只能向下翻页
  • head:看开头
  • tail:看结尾
  • wc:统计行数、单词数、字节数
  • du:看目录或文件大小
  • df:看磁盘空间
  • file:看文件类型

文本处理类

  • grep:搜索文本
  • awk:按列处理文本
  • sed:替换、删除、编辑文本
  • sort:排序
  • uniq:去重
  • cut:剪切列
  • tr:替换或删除字符
  • diff:比较文件差异
  • echo:输出文本

十八、Shell 常用命令:网络类

这一类命令主要用于测试网络、查看连接、传输文件、远程登录。

1. ping:测试网络连通性

bash 复制代码
ping 8.8.8.8

意思是:测试到 8.8.8.8 的网络是否通。

2. curl:发送网络请求

bash 复制代码
curl https://example.com

意思是:向这个网址发起请求,查看返回内容。

3. wget:下载文件

bash 复制代码
wget https://example.com/test.zip

意思是:从网上下载一个文件。

4. ssh:远程登录

bash 复制代码
ssh root@192.168.1.10

意思是:远程登录到另一台 Linux 机器。

5. scp:远程复制文件

bash 复制代码
scp a.txt root@192.168.1.10:/tmp/

意思是:把 a.txt 复制到远程机器的 /tmp/ 目录。

6. netstat:查看网络连接状态

bash 复制代码
netstat -tulnp

意思是:查看当前机器有哪些端口在监听。

7. ifconfig:查看/配置网络接口

bash 复制代码
ifconfig

意思是:查看网卡信息。

8. ipifconfig 的新版替代命令

bash 复制代码
ip addr

意思是:查看网卡地址信息。

9. nslookup:查询 DNS 记录

bash 复制代码
nslookup www.baidu.com

意思是:查看域名对应的 IP。

10. telnet:远程测试端口

bash 复制代码
telnet 192.168.1.10 80

意思是:测试这台机器的 80 端口通不通。


十九、Shell 常用命令:权限与用户类

这一类命令主要用于修改权限、切换用户、查看当前用户身份、创建用户等。

1. chmod:修改文件权限

bash 复制代码
chmod +x test.sh

意思是:给 test.sh 加上可执行权限。

2. chown:修改文件所有者

bash 复制代码
chown root:root a.txt

意思是:把 a.txt 的所有者和所属组改成 root

3. chgrp:修改文件所属组

bash 复制代码
chgrp docker a.txt

意思是:把 a.txt 的所属组改成 docker

4. useradd:创建用户

bash 复制代码
useradd testuser

意思是:创建一个新用户 testuser

5. passwd:修改密码

bash 复制代码
passwd testuser

意思是:修改 testuser 的密码。

6. su:切换用户

bash 复制代码
su - testuser

意思是:切换到 testuser 用户。

7. sudo:以 root 权限执行命令

bash 复制代码
sudo systemctl restart nginx

意思是:以管理员权限重启 nginx。

8. whoami:显示当前用户名

bash 复制代码
whoami

意思是:查看当前是谁在执行命令。

9. id:显示用户 ID 和组 ID

bash 复制代码
id

意思是:查看当前用户的 UID、GID 以及所属组。


二十、Shell 常用命令:进程与系统类

这一类命令主要用于查看进程、管理进程、控制后台任务、管理系统服务。

1. ps:查看进程状态

bash 复制代码
ps

意思是:查看当前进程情况。

2. top:动态显示进程

bash 复制代码
top

意思是:实时查看系统里哪些进程最占资源。

3. htop:增强版 top

bash 复制代码
htop

意思是:比 top 更好看、更好用的进程查看工具。

4. kill:终止进程

bash 复制代码
kill 1234

意思是:结束 PID 为 1234 的进程。

5. pkill:按名称终止进程

bash 复制代码
pkill nginx

意思是:结束名字包含 nginx 的进程。

6. jobs:查看后台任务

bash 复制代码
jobs

意思是:查看当前终端里有哪些后台任务。

7. fg:将后台任务调到前台

bash 复制代码
fg

意思是:把后台任务切回前台继续运行。

8. bg:将前台任务调到后台

bash 复制代码
bg

意思是:让当前任务在后台继续跑。

9. nohup:后台运行,退出终端也不停止

bash 复制代码
nohup python app.py &

意思是:即使你退出终端,程序也继续运行。

10. systemctl:管理系统服务

bash 复制代码
systemctl status nginx

意思是:查看 nginx 服务状态。

bash 复制代码
systemctl restart nginx

意思是:重启 nginx 服务。


二十一、Shell 常用命令:压缩与打包类

这一类命令主要用于压缩、解压、打包文件。

1. tar:打包和解包

bash 复制代码
tar -cvf test.tar dir/

意思是:把 dir/ 打包成 test.tar

bash 复制代码
tar -xvf test.tar

意思是:把 test.tar 解包出来。

2. gzip:压缩文件

bash 复制代码
gzip test.txt

意思是:把 test.txt 压缩成 test.txt.gz

3. gunzip:解压 .gz 文件

bash 复制代码
gunzip test.txt.gz

意思是:把 .gz 文件解压回来。

4. zip:打包压缩为 zip

bash 复制代码
zip test.zip test.txt

意思是:把 test.txt 打包成 test.zip

5. unzip:解压 zip 文件

bash 复制代码
unzip test.zip

意思是:解压 test.zip

6. xz:压缩为 .xz 格式

bash 复制代码
xz test.txt

意思是:把 test.txt 压缩成 test.txt.xz

常见记法

  • tar:打包/解包
  • gzip:压缩
  • gunzip:解压 .gz
  • zip:压成 zip
  • unzip:解压 zip
  • xz:压成 xz

二十一、Shell 常用命令:最常用的 TOP 10

这一页可以当作最基础的入门记忆表。

1. ls:看有什么文件

bash 复制代码
ls

2. cd:进入目录

bash 复制代码
cd /tmp

3. pwd:看自己在哪

bash 复制代码
pwd

4. cp / mv:复制 / 移动文件

bash 复制代码
cp a.txt b.txt
mv b.txt /tmp/

5. rm:删除文件

bash 复制代码
rm a.txt

6. cat / less:看文件内容

bash 复制代码
cat a.txt
less /var/log/syslog

7. grep:搜索内容

bash 复制代码
grep "error" app.log

8. ps:看进程

bash 复制代码
ps

9. chmod:改权限

bash 复制代码
chmod +x test.sh

10. man:不会用就查手册

bash 复制代码
man ls

二十二、Shell 常用命令:帮助与文档类

这一类命令主要用于查看命令帮助、命令位置、历史记录等。

1. man:查看命令手册

bash 复制代码
man ls

意思是:查看 ls 命令的详细手册。

2. help:查看内置命令帮助

bash 复制代码
help cd

意思是:查看 cd 这个内置命令的帮助信息。

3. whatis:查看命令简介

bash 复制代码
whatis ls

意思是:查看 ls 是做什么的。

4. which:查看命令所在路径

bash 复制代码
which ls

意思是:查看 ls 命令实际在哪个路径下。

5. whereis:查看命令的二进制、源码、手册路径

bash 复制代码
whereis ls

意思是:查看 ls 的可执行文件、源码和手册在哪里。

6. history:查看命令历史

bash 复制代码
history

意思是:查看当前终端执行过的命令记录。


二十三、Shell 常用命令快速记忆

文件操作类

  • ls:看目录内容
  • ls -a:看所有文件,包括隐藏文件
  • ls -l:看详细信息
  • ls -la:看所有文件的详细信息
  • llls -l 的常用简写
  • ln -s:创建软链接

文件查看类

  • cat:看全部内容
  • less:分页看,能上下翻页
  • more:分页看,只能向下翻页
  • head:看开头
  • tail:看结尾
  • wc:统计行数、单词数、字节数
  • du:看目录或文件大小
  • df:看磁盘空间
  • file:看文件类型

文本处理类

  • grep:搜索文本
  • awk:按列处理文本
  • sed:替换、删除、编辑文本
  • sort:排序
  • uniq:去重
  • cut:剪切列
  • tr:替换或删除字符
  • diff:比较文件差异
  • echo:输出文本

进程与系统类

  • ps:看进程状态
  • top:动态看进程
  • htop:增强版 top
  • kill:终止进程
  • pkill:按名称终止进程
  • jobs:看后台任务
  • fg:调到前台
  • bg:调到后台
  • nohup:退出终端也不中断
  • systemctl:管理系统服务
相关推荐
智慧地球(AI·Earth)2 小时前
用AI重构Python开发:从API调用到本地部署,代码全流程自动化实战
python·自动化·api
jamon_tan2 小时前
linux下lvgl8.3动态库编译
linux
Elastic 中国社区官方博客2 小时前
Elastic Security、Observability 和 Search 现在在你的 AI 工具中提供交互式 UI
大数据·运维·人工智能·elasticsearch·搜索引擎·安全威胁分析·可用性测试
星辰_mya3 小时前
OSI 七层模型之“跨国诈骗集团”深度讲解
运维·服务器·后端·面试·架构师
贝锐3 小时前
如何破解商用安卓无人值守运维痛点,向日葵赋能数字化高效转型
运维
子牙老师3 小时前
软件虚拟化 vs 硬件虚拟化
linux·性能优化·云计算
旦莫4 小时前
测试工程师如何用AI生成测试用例?我的提示词模板分享
人工智能·python·测试开发·自动化·测试用例·ai测试
rayyy94 小时前
Linux 下标准的 libX.so 软链接生成
linux
实心儿儿4 小时前
Linux —— 基础IO - 文件描述符
linux·运维·服务器
clear sky .4 小时前
[linux]视频实时推流项目
linux·服务器·音视频