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:管理系统服务
相关推荐
Riu_Peter2 小时前
【技术】Docker 释放空间
运维·docker·容器
杨浦老苏2 小时前
可视化Docker Compose构建器VCompose
运维·docker·开发·可视化·群晖
爱学习的程序媛2 小时前
【Day2】WSL2+Docker配置全攻略
运维·docker·容器·wls2
默|笙2 小时前
【Linux】进程概念与控制(2)_进程控制
java·linux·策略模式
小尔¥2 小时前
MySQL故障排查与优化
运维·数据库·mysql
天草二十六_简村人2 小时前
阿里云的NAT和弹性公网IP,解决ECS机器访问外网的实现方案
运维·后端·网络协议·阿里云·云计算·ip
代码AC不AC2 小时前
【Linux】关于 mmap 文件映射
linux·mmap 文件映射
me8322 小时前
【Linux】解决Docker-Compose拉取Jenkins时失败问题。
linux·docker·jenkins
kaoa0003 小时前
Linux入门攻坚——73、运维OS Provisioning阶段工具之PXE、Cobbler
linux·运维