设为首页 收藏本站
查看: 1963|回复: 0

shell管理脚本

[复制链接]

尚未签到

发表于 2018-8-22 09:48:24 | 显示全部楼层 |阅读模式
  shell管理脚本
  shell 类型:
  Bsh是Bourne Shell 的缩写产生较早的UNIX Shell程序,实现最基本的解释功能
  Csh是C shell 的缩写,因使用C语言的语法风格而得名,交互式界面做了很多的改进,增加了命令历史,别名,文件名替换等
  Ksh是Kron Shell 的缩写,结合Bsh和Csh两者的功能优势,兼具Bsh的语法和Csh的交互特性,因此很受欢迎
  Bash 是 Bourne Again Shell 的缩写,从名字就可以看出是Bsh的升级替代品,很多linux版本默认运行的shell类型
  Zsh更多的基于交互式考虑,集成了Bash Ksh等多种shell的特点,因此很受青睐
  tcsh一个Csh的兼容升级版本
  查看系统所能使用的shell程序列表:
  对/etc/shells 查看
DSC0000.png

  系统已经把shell程序做了相应的链接
DSC0001.png

  切换到新的shell:
DSC0002.png

  更改用户自己的登录shell
DSC0003.jpg

  用户能自己更改shell类型
  由管理员更改用户的shell类型则执行:usermod–s /bin/bash xiaowang即更改为bash
  Bash的常用功能:
  命令历史:
  方向键上下能重复看已经输入过的命令
  在开头加”!”号表示模糊匹配如 !ca就调用了我刚才输入的 cat 命令
  history 命令可以显示历史命令表(默认保存 ~/.bash_history文件中)
  history –c 清除历史命令
  通过”!”加序号,则从新执行指定命令
DSC0004.png

  设置记录历史命令的条数:
  默认保存1000条命令,这可很不安全,我们分别来针对所有用户和单个用户来设置一下:
  设置所有用户的命令历史条数:
  /etc/profile 里保存了针对所有用户的配置
DSC0005.png

  这里修该对所有用户生效
  针对个人修改:
  vim /home/xiaowang/.bash_profile
DSC0006.png

  用户配置将覆盖全局配置(针对个人配置的优先)
  命令别名:
  alias 查看所有的已经设置的别名
  alias 别名=’实际名利’设置一个命令别名
  unalias别名取消这个别名
  unalias–a 取消所有的别名
DSC0007.png

  标准输入,输出和重定向:
  标准输入(STDIN)默认设备键盘,文件编号为0,
  标准输出(STDOUT)默认设备时显示器,文件编号为1
  标准错误(STAERR)默认设备时显示器,文件编号为2
  “>”输出重定向,如果文件不存在则会建立这个文件
  “>>”追加内容到文件,而不进行覆盖
  “<”输入重定向,提过工作效率
  修改用户密码:
DSC0008.png

  将标准输出和错误输出分开记录:
DSC0009.jpg

  标准输出和错误输出放在一个文件里记录
DSC00010.png

  管道操作:
  “|”管道符号表示第一个命令的处理结果交个第二个命令处理
  ls–r / | wc–l 表示查看到根并统计一共几行结果输出就为行数了
  例一:找出系统中使用Bash作为登录shell,名称以xiao开头的用户账号,并只显示出用户名和登录shell两个字段
DSC00011.jpg

  cut 砍,切割的意思表示从输出结果里切割想要的字段
  -d 指定以什么标志来切割上图中用“:”号来切割
  -f 指定想要输出那些字段,我们输出了第一和第七字段
  例二:查看当前系统的总内存空间,剩余可用空间,去除其他无用信息
DSC00012.png

  awk用于以空格或其他制表位为分隔
  ‘{print $2,$4}’显示第二和第四个字段
  Shell变量的应用:
  常见的shell变量的类型包括:用户变量环境变量预定义变量位置变量
  用户变量:
  由系统用户自己定义的变量,只有在用户自己的shell环境中有效,因此称为本地变量
  定义新的变量:
  DAY=Sunday
  &号用于引用变量 echo $DAY 将会显示sunday
DSC00013.png

  为变量赋值的常用方法:
  (=) 最基本的变量赋值方法
  (“) 双引号,使用双引号时,允许在双引号内引用其他变量的值
  (‘) 单引号,不允许在单引号内引用其他变量的值,”$”号作为普通字符来看
  (`) 反撇号,允许将命令的执行的结果赋给变量
  双引号:
DSC00014.png

  单引号:
DSC00015.png

  反撇号:
DSC00016.png

  嵌套使用命令替换:可以用 $ ( )
DSC00017.png

  read read命令Bash的内置命令,可以从键盘读取输入,实现交换式过程。 read将从标准输入读入一行内容,并以空格为分隔符,将读入的字段分别赋值给指定列表中的变量(多余的内容赋值给最后一个变量),若指定的变量只有一个,则将整行内容赋值给该变量
  -p 设置提示信息
DSC00018.png

  设置提示信息(交互式):
DSC00019.png

  变量的作用范围:
  对于用户自定义的变量,只能在当前的shell环境中使用,因此又称为局部变量,在开启的新的子shell里是无效的,为了使用户自定义的变量在所有的shell中都可用,我们要用export 命令来指定为全局变量 export 可以同时指定多个变量为全局变量,不需要$号,变量名以空格隔开
DSC00020.png

  也可以在创建的时候就指定为全局变量;
DSC00021.jpg

DSC00022.png

  清除自定义的变量;
  unset 命令用于清除自定义的变量,后面指定一个或多个变量名即可,多个的话用空格分开
DSC00023.png

  数值变量的运算:(用expr表达式命令)
  “+”加法运算
  “- ”减法运算
  “\*”乘法运算
  “/”除法运算
  “%”求模运算(取于运算)
DSC00024.jpg

  环境的变量:
  环境的变量是指用户登录后,系统预设的shell变量,其功能是设置用户的工作环境,包括用户的宿主目录,命令查找路径,用户当前目录,登录终端等
  set 查看环境变量
  查看多个变量;
DSC00025.jpg

  添加路径信息:
DSC00026.jpg

  主提示符和辅助提示符的更改:
DSC00027.png

  环境变量的配置文件:
  /etc/profile ~/.bash_profile前者为全局配置文件后者为个人配置文件后者覆盖前者
DSC00028.png

  位置变量:
  当执行service network restart 命令时,service脚本程序的第一个位置参数用”$1”表示,对用的值是”network” , 第二个位置参数用”$2”表示,对应的值为”restart”,“$0”代表所执行的命令或脚本程序的名称,虽然”$0”与位置变量的格式相同,但是”$0”属于系统预定义变量而不是位置变量,在执行shell命令操作时,除了第一个字段(命令名或脚本程序名)以外,其余的字符串参数按照从左到右的顺序依次赋值给位置变量
  预定义变量:
  $# 表示命令行中位置参数的数量
  $* 表示所有位置参数的内容
  $? 表示命令执行后返回的状态,(0 表示正确,非0 都为错误)
  $! 后台运行的最后一个进程的进程号
  $$ 表示当前进程的进程号
  $0 表示当前执行的进程的进程名
DSC00029.png

  编写shell脚本:
  编写一个完整的shell脚本须有以下步骤:
  1.运行环境的设置指定用哪一个shell进行解释开头部分指出如(#! /bin/bash)
  2.一个号的脚本注释是不能少的,方便以后维护(注释行以#号开头)
  3.可执行命令,这是核心(关于语句结构下篇讲解)
  执行shell脚本方式:
  赋予脚本X(执行)权限后执行
  “.”以点命令执行脚本等于 source 命令,
  shell解释器运行例: bash xxxx.sh (一般调试时用)
  shell脚本案例一:
  在每周五下班前(17:30)检查公共共享目录/var/ftp/pub/中的内容,并将其中所有子目录及文件的详细列表和当时的时间这些信息追加保存到 /var/log/pubdir.log 日志中,然后清空该目录中的内容
  vim /root/ftpclean.sh
DSC00030.jpg

  chmod770 /root/ftpclean.sh
  crontab–e
DSC00031.jpg

  shell 脚本案例二:
  公司数据库目录位于 /var/lib/mysql要求至少三天做一次完整备份,备份前需要统计目录占用的总空间大小,并将备份日期,目录空间大小等信息保存到临时文件 /tmp/mysql.txt ,然后使用tar 命令将 /tmp/mysql.txt 随着数据库一块备份到 /opt/dbbak目录中,备份文件名要体现处当天的日期
  1. 创建要备份到的目录
  mkdir /opt/dbbak
  2. 编写shell脚本
  vim /root/mysqlbak.sh
DSC00032.jpg

  3. 添加脚本的执行权限
DSC00033.jpg

  4. 添加计划任务
DSC00034.png

  本文档完毕!!!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-554964-1-1.html 上篇帖子: shell 子网掩码换算 下篇帖子: 服务器shell显示IP和路径
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表