初识Shell

引言

学习Linux运维免不了与Shell脚本打交道,也许你只是简单的管理服务器软件(平台),也许你要每天与脚本打交道,不管怎样都要能看懂服务器语言。抽象一点,可以把Shell语言理解为服务器能看懂的你也能看懂的“工作计划”,那么跟我一起来对其一下颗粒度吧。

shell定义

Shell 也是一种程序设计语言,它有变量,关键字,各种控制语句,有自己的语法结构,利用shell程序设计语 言可以编写功能很强、代码简短的程序。
Shell是外壳的意思,就是系统的外壳,我们可以通过shell的命令来控制和操作操作系统,比如linux中的shell命令就包括ls、cd、pwd等等,
总结来说shell就是一个命令解释器,他通过接收用户输入的shell命令来启动、停止程序的运行或者对计算机进行控制。

shell的分类和切换

[root@linux-server ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

#默认shell: bash shell
#centos中脚本使用的默认shell 为/usr/bin/sh  

查看当前正在使用的shell
[root@linux-server ~]# echo $SHELL
/bin/bash

shell的修改
# vim /etc/passwd  编辑登录shell

使用场景

那么了解完基本信息之后,Shell到底能做什么呢?

  1. 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略…)—初始化脚本
  2. 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)—自动化安装脚本
  3. 应用管理程序 (KVM)—批量创建虚拟机、管理虚拟机。
  4. 日志分析处理程序(PV, UV, 200, !200,grep/awk)—-akw、sed、grep
  5. 自动化备份恢复程序(MySQL完全备份/增量 + Crond)—–数据备份恢复脚本
  6. 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)–监控脚本
  7. 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,Apache,MySQL)
  8. 9*9乘法表、俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序实现
  9. Shell可以做任何运维的事情(一切取决于业务需求)

shell 和ansible—批量自动化工具–自动化运维–ansible

有趣的实验

了解完shelli奥本的基本信息,我们就来编写第一个脚本程序吧!

/etc/motd`(Message Of The Day)用于在用户登录时显示系统公告或自定义信息,在这里我们可以让内容声称在我们每次登陆的页面上方。
CentOS 默认不支持动态 MOTD(如 Ubuntu 的 /etc/update-motd.d/),但可通过脚本实现:

  • 创建脚本
sudo vi /etc/profile.d/dynamic-motd.sh

写入要显示的内容,如下:

#!/bin/bash
echo "===== 系统状态 ====="
echo "主机名: $(hostname)"
echo "系统时间: $(date)"
echo "负载: $(uptime | awk -F'load average: ' '{print $2}')"
echo "内存: $(free -h | awk '/Mem/{print $3"/"$2}') 使用中"
echo "根分区剩余: $(df -h / | awk 'NR==2{print $4}')"
  • 赋予执行权限
sudo chmod +x /etc/profile.d/dynamic-motd.sh
  • 用户登录时自动执行脚本

如图所示:

除此之外,你还可以使用更多趣味性的登陆显示,如:

sudo cat > /etc/motd <<EOF
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  \`.
            /  \\|||  :  |||//  \\
           /  _||||| -:- |||||_  \\
           |   | \\\  -  /'| |   |
           | \_|  \`\`---'//  |_/ |
           \  .-\__ \`-. -'__/-.  /
         ___\`. .'  /--.--\  \`. .'___
      ."" '<  \`.___\_<|>_/___.' _> \"".
     | | :  \`- \`. ;\`. _/; .'/ /  .' ; |
     \  \ \`-.   \_\_`. _.'_/_/  -' _.' /
======\`-.____\`-.___\_____/___.-`____.-'======
                   \`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
           佛祖保佑       永不宕机
           God Bless     No Downtime
EOF
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
警告:未经授权的访问将被记录并追究责任!
登录即表示同意《安全使用协议》。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 注意事项

权限和归属问题:/etc/motd 应属于 root:root,权限为 644
生效时间:修改后立即生效,但已登录的用户需要重新登录才能看到更新。
禁用MOTD:清空文件即可–sudo echo “” > /etc/motd


💡 感谢你读到这里!这篇《初识Shell》是我的用心分享,如果你觉得有收获,不妨:


点个「赞」或「分享」,让更多同路人相遇


🔍 关注我的博客,持续接收技术/成长类干货


💬 文末留言聊聊你的想法,或遇到的同类问题~


🔒 本文为原创,转载请保留原文链接(https://www.lichu228.top/archives/361)与作者信息,感谢尊重与支持!


🌐 想找更多优质内容?点击进入博客主页探索吧~


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇