0

尚硅谷Linux运维全套视频

股份分红
18天前 11

获课地址:xingkeit.top/7625/


2016年,我第一次点开尚硅谷的Linux教程。

那时我刚入行,对运维的理解就是“会敲ls就算会Linux”。公司服务器是CentOS 6.5,我连vim都不会退出,每次卡住就关终端重连。旁边的老运维看我一眼,没说话,把他的.bashrc发给我,里面 alias 了一行:alias q='exit'。

他说:“你以后会谢我的。”

后来我谢了他很多次。

但真正让我从“会敲命令”变成“会写脚本”的,不是那行alias,是尚硅谷那套Linux教程里,讲Shell编程的那几章。

第一层:命令是人机对话,脚本是自动驾驶。

很多人学Shell,卡在第一步:命令敲得挺溜,一写脚本就懵。

不是语法不会,是思维没转过来。

尚硅谷第78节,标题叫“命令是问路,脚本是记路”。

讲师打开终端,敲了一行ls,然后说:

“你现在是在跟计算机对话。你问它‘目录里有啥’,它答。你问一句,它答一句。”

“脚本不是这样。脚本是你出差前画一张地图,你人不在,计算机按地图走。”

他演示了一个最简单的场景:每天凌晨打包日志,按日期命名,删除七天前的旧包。

你手动做这件事,要敲五条命令。你写脚本做这件事,还是那五条命令,只是包在一个文件里,交给cron。

“你不需要学新命令,”他说,“你只需要学会把命令排好队。”

那一刻我突然明白,Shell编程不是新知识,是旧知识的组合。

第二层:变量不是存数据,是别写死。

很多新手写脚本,第一版全是硬编码。

备份日志,路径写死/home/app/logs。压缩文件名写死backup.tar.gz。删除保留天数写死7。

脚本跑通了,很开心。三天后日志路径改了,打开脚本一行行改。五天后压缩格式要换.zip,又一行行改。七天后面试官问“你写过脚本吗”,答写过,但不敢说写过什么。

尚硅谷第82节,讲师用十分钟讲了三个变量。

LOG_DIR=/home/app/logs
BACKUP_NAME=backup_$(date +%Y%m%d).tar.gz
RETENTION_DAYS=7

“这三行放在脚本开头,以后你只需要改这里。”

他顿了顿:

“写脚本不是写一次跑永久。写脚本是写一次,以后只改三行。”

第三层:条件判断不是if语法,是容错思维。

新手写脚本,默认一切顺利。

目录一定存在,文件一定可读,磁盘一定有空。脚本跑完,一切正常。脚本崩了,输出一片红,不知道哪行出问题。

尚硅谷第85节,标题叫“脚本里有一半代码是处理意外的”。

他演示一个备份脚本,第一版十行,第二版二十五行。

多出来的十五行在干什么?

——检查源目录是否存在,不存在就创建。

——检查压缩命令是否安装,没装就提示并退出。

——检查备份文件是否成功生成,没生成就发告警。

——检查磁盘剩余空间,小于阈值就跳过旧包删除。

“你不是在写脚本,”他说,“你是在给三个月后被凌晨电话吵醒的自己铺后路。”

那节课之后,我写脚本养成一个习惯:每写一行功能代码,跟一行防御代码。

后来线上跑崩过几次,没有一次是因为没写if。

第四层:循环不是重复劳动,是批量思维。

很多运维刚接触循环,觉得“不就是把一条命令重复执行N遍”。

尚硅谷第91节,讲师没讲for、while、until的语法区别。

他放了一个场景:

你有100台服务器,需要每台创建一个用户,设置密码,添加sudo权限,部署公钥。

手动做?一台五分钟,一百台五百分钟,一整天。

循环做?写一个for i in {1..100},把命令包进去,五秒钟写完,十分钟跑完。

“循环不是帮你省敲键盘的时间,”他说,“循环是让你从体力劳动者,变成脑力劳动者。”

那节课我反复看了三遍。

不是因为没听懂,是想记住那个“五秒钟写完”的瞬间。

第五层:函数不是封装代码,是封装思路。

初学者写脚本,写着写着就变成面条代码。

两百行,从上读到下,没有段落,没有分界。改一个功能,牵一发而动全身。加一个功能,不知道插在哪。

尚硅谷第95节,讲师把前面的备份脚本重构了一遍。

原来二十五行,拆成五个函数:

check_env()、backup_logs()、compress_files()、clean_old()、send_alert()。

主函数只有十行,像在朗读目录:

check_env
backup_logs
compress_files
clean_old
send_alert

“你现在读这个脚本,”他说,“不用看具体实现,已经知道它在干什么。”

那是我第一次理解“自解释代码”是什么意思。

不是注释写得多,是结构像一本书的目录。

第六层:正则不是背符号,是画边界。

Shell编程绕不开正则,正则劝退一半人。

^ $ . * [] [^] \ {n,m} — 这些符号初学者背了忘,忘了背。

尚硅谷第103节,标题叫“正则是在画框,不是在猜谜”。

讲师打开一个文本文件,里面是混杂的手机号、身份证号、邮箱、URL。

他问:你怎么把手机号找出来?

台下沉默。

“手机号有什么特征?11位,全是数字,不是1开头就是1开头——哦不对,就是1开头。”

他在白板上写:^1[0-9]{10}$

“这不是符号,这是手机号的画像。”

然后他演示grep、sed、awk,用这三板斧处理文本。

不是背参数,是描述特征:以什么开头,以什么结尾,中间什么长度,允许出现什么字符。

那节课之后,我再没背过正则符号。

我只记特征,符号是查的。

第七层:调试不是print大法,是系统方法。

每个Shell新手都有自己的调试土法。

有人狂加echo,输出各种“到这里了”“值是多少”。有人把-x参数当救命稻草,打开后满屏加号,更看不懂。还有人干脆注释掉半份代码,跑通了再一点点放出来。

尚硅谷第108节,标题叫“脚本报错,第一步做什么”。

不是看报错信息,不是搜搜索引擎。

是看退出码。

echo $? — 这条命令被严重低估了。

0是成功,非0是失败。不同的失败有不同的码,1是通用错误,2是用法错误,127是命令未找到,139是段错误。

“报错信息是人写的,可能写错。退出码是系统给的,不会骗你。”

他还讲了两个至今我都在用的调试习惯:

——脚本开头加set -e,遇到报错就停,防止雪崩。

——临时调试用set -x,查完立刻set +x关掉,别污染日志。

“调试不是天赋,”他说,“是方法。”

第八层:脚本不是终点,自动化是。

尚硅谷这套Linux教程,Shell编程部分最后一节,标题只有五个字:

“写完,然后呢?”

你写了一个备份脚本,手工执行,成功了。

然后呢?

——放进crontab,让它每天自己跑。

——输出日志重定向到固定文件,出事了能翻。

——关键步骤加锁,防止上次没跑完下次又启动。

——结果通知,跑成功发个OK,跑失败发个报警。

“写脚本只是完成了20%,”他说,“让脚本自己跑起来,不出事,出事能知道,知道能恢复——这才是剩下的80%。”

那节课的最后,他演示了一个完整的、带日志、带锁、带报警的自动化备份任务。

十五分钟。

我那时候不知道,十五分钟演示的内容,够我在生产环境摸索两年。

后来有人问我:尚硅谷那套Linux课都十年了,现在还看吗?

我说,命令会更新,发行版会迭代,systemd取代了init,NetworkManager取代了ifcfg。

但Shell编程那套东西——变量别写死、目录要检查、循环批量干、函数拆逻辑——十年了,一字不改。

不是因为没更新,是没什么需要更新的。

那是基本功。

课程简介里有一句话,十年没改过:

“我们不承诺让你成为运维专家,只承诺让你亲手写完第一个自动化脚本。”

2025年,我带了一个新人。

他问我要Linux学习资料,我把硬盘里那套旧教程翻出来,拉到第78节。

“从这开始看,”我说,“看完第八节,你就能写第一个脚本。”

他半信半疑。

两周后,他发来一段消息:

“哥,我写的日志清理脚本上线了。”

“用的变量、判断、循环、函数那一套。”

我回了一个字:

“好。”

没告诉他的是,十年前,我也是从这一节开始的。



本站不存储任何实质资源,该帖为网盘用户发布的网盘链接介绍帖,本文内所有链接指向的云盘网盘资源,其版权归版权方所有!其实际管理权为帖子发布者所有,本站无法操作相关资源。如您认为本站任何介绍帖侵犯了您的合法版权,请发送邮件 [email protected] 进行投诉,我们将在确认本文链接指向的资源存在侵权后,立即删除相关介绍帖子!
最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!