Linux系统Shell脚本第一章:Shell脚本基础及时间同步

目录

一、Shell脚本基础

1、Shell作用

2、什么是Shell脚本及处理逻辑

3、shell脚本基本格式

4、 shell脚本执行方式

5、实操演示

二、Shell脚本中的变量

1、变量的作用 

2、变量名要求

3、变量类型

4、变量的作用范围

三、时间同步

1、手动同步

2、搭建时间同步服务器


一、Shell脚本基础

1、Shell作用

Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的操作传递给内核执行,并输出执行结果

cat  /etc/shells可以查看当前系统支持的shell

2、什么是Shell脚本及处理逻辑

①Shell脚本就是将命令按顺序一一列出的程序,最后自动执行。shell脚本将简单的命令组合完成负责的工作,自动化执行命令,提高工作效率,可以用于日常性重复性的运维工作。

②处理逻辑分为三种:

顺序执行:程序按从上到下的顺序执行

选择执行:程序执行过程中,根据条件的不同选择不同的分支继续执行

循环执行:程序在执行过程中需要重复执行多次某些语句(根据已知次数、已知条件)

3、shell脚本基本格式

#!/bin/bash       #脚本声明即解释器,表示此行以下的代码通过/bin/bash程序翻译执行

#this is my frist  shell       #注释信息,描述此脚本做什么工作或每条语句的含义

echo " hello world! "   #可执行语句,脚本具体的内容

4、 shell脚本执行方式

调用系统shell执行不需要给脚本加可执行(x)权限,不改变当前环境。执行格式shell +脚本名称
例如:bash  a.sh

使用路径执行脚本,需要给脚本加可执行(x)权限,不改变当前环境 
添加脚本权限  chmod +x a.sh 
绝对路径执行  /mnt/a.sh
相对路径执行,进入对应目录直接执行  ./a.sh

通过 . 或者source 来执行脚本,需要给脚本加可执行(x)权限,这俩种方式会改变当前环境不建议使用
添加脚本权限 chmod +x a.sh
使用.执行脚本.  a.sh 
使用source执行脚本  source  a.sh

bash -n 脚本名称 (绝对路径)     检查语法错误
bash -x 脚本名称 (绝对路径)     检查逻辑错误

5、实操演示

cd  /mnt               #进入mnt目录
vim  first.sh          #创建first.sh脚本
first.sh内容:
#!/bin/bash
#这是我的第一个脚本,内容为输入hello world!
echo  "hello world! "  #输出内容为hello world!

bash first.sh    #调用系统shell执行脚本

chmod +x  first.sh  #添加可执行权限

/mnt/first.sh     #绝对路径执行脚本
cd /mnt           #进入脚本所在目录
./first.sh        #相对路径执行脚本

. first.sh        # .执行脚本
source first.sh   #source 执行脚本

二、Shell脚本中的变量

1、变量的作用 

 用来存放系统和用户需要使用的特定参数

2、变量名要求

①定义变量格式:变量名=变量值(shell中不用声明类型,所有类型均为字符串)

②定义变量时,变量名要求:

变量名区分大小写建议全部使用大写,不能使用系统内置变量。如$PATH是系统外部命令的存放路径等。

变量名不能以数字开头,且不支持短横线 -。

3、变量类型

①环境变量:系统维护的变量,用于设置工作环境,使用env命令可以查看所有环境变量

②只读变量:只可以读取不能修改的变量,相当于常量,用处较少

③自定义变量:用户自己定义的变量

④位置变量:通过命令行给脚本传递参数

主要指执行脚本时后面所跟着位置。

$1-$9:脚本后1-9的位置

${10}:脚本后10以上的位置需要借助变量分隔符{},不然会将$1认为是一个位置变量然后输出再加上后面的数字。

⑤预定义变量:系统已经定义好的变量,只需要记住即可

$*:表示所有位置参数的内容看成一个整体返回

$@:表示输出脚本后的所有位置参数,且认为每个是独立的值

$0:表示当前执行的脚本或程序的名称 当前脚本的名字

$#:表示命令行中位置参数的总个数

$$:当前进程id,使用方法echo  $$

$?:表示前一条命令执行后的返回状态,返回值为 0 表示上一条命令执行正确,返回任何非 0值均表示执行出现异常。使用方法echo  $?

$!:后台任务最后一个id,使用方法echo  $!

4、变量的作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用。

可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所有子shell环境中可以继续使用

全局变量格式1: export   变量名    

全局变量格式2:export 变量名=变量值

三、时间同步

1、手动同步

①date命令用来查看系统时间 

②date  -s  " 年-月-日   时:分:秒 " 手动修改系统时间

③ntpdate +服务器地址或域名     立即和此服务器同步时间

  例如:  ntpdate  ntp.aliyun.com  立即和阿里云时间服务器同步时间

2、搭建时间同步服务器

①原理

借助chrony时间同步软件,将有外网的服务器A作为时间服务器与外网服务器同步时间,如阿里云时间服务器(ntp.aliyun.com),然后其他没有外网的服务器B、C等与时间服务器A同步时间

②搭建过程

时间服务器A配置
yum install chrony -y    #安装时间同步软件chrony
vim /etc/chrony.conf     #编辑时间同步软件chrony的配置文件
配置文件内容:
server   ntp.aliyun.com  iburst #设置与阿里云时间服务器同步时间
allow  0.0.0.0/24               #允许所有人和我同步时间
local stratum  10               #作为时间服务器若外网断开连接,内网服务器依然可以向我同步时间
systemctl  stop firewall #关闭防火墙
setenforce 0             #关闭selinux
systemctl  restart chronyd  #重启时间同步软件服务

内网服务器B、C配置
yum install chrony -y    #安装时间同步软件chrony
vim /etc/chrony.conf     #编辑时间同步软件chrony的配置文件
配置文件内容:
server   192.168.30.11  iburst #设置与内网时间服务器A同步时间
systemctl  stop firewall #关闭防火墙
setenforce 0             #关闭selinux
systemctl  restart chronyd  #重启时间同步软件服务
chronyc  sources    -V      #查看是否同步过时间,?表示未同步,*表示已同步

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asddASD323432

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值