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 #查看是否同步过时间,?表示未同步,*表示已同步
②搭建过程


表示已经同步时间
Linux系统Shell脚本第一章:Shell脚本基础及时间同步的更多相关文章
- linux系统下重启tomcat的shell脚本
linux系统下重启tomcat的shell脚本: #!/bin/shtomcat_home=/opt/apache-tomcat- #找到tomcat进程的id并kill掉 ps -ef |grep ...
- useradd linux系统创建用户和设置密码简单脚本-1
useradd linux系统创建用户和设置密码简单脚本-1 linux_wangqiang 2019-12-04 20:51:18 65 收藏展开#!/bin/bash#快速创建用户 使用$1第一个 ...
- 第一章 oracle数据库基础
第一章 oracle数据库基础 1.oracle简介-->数据库管理系统 1.1:数据库 1.2:全局数据库名 1.3:数据库实例 1.4:表空间 1.5:数据 ...
- 第一章. ActionScript 语言基础
第一章. ActionScript 语言基础 1.0. ActionScript 3.0 Cookbook 概述 1.1. 新建一个 ActionScript project 1.2. 自己定义应用程 ...
- 第一章 C++编程基础
第一章 C++编程基础 1.1 如何撰写C++程序 赋值 assignment复合赋值 (compound assignment) += 函数(function)是一块独立的程序代码序列(code s ...
- 回顾PHP:第一章:PHP基础语法
第一章:PHP基础语法 一.常量: 1.1.define()函数:define(‘R’,’5’,’true’); //R:常量名,5:常量值,true:常量名对大小写不敏感,为false时表示对常量名 ...
- Linux 笔记 - 第十二章 Shell 脚本
博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译, ...
- Linux系统编程(15)——shell脚本语法
Shell字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 单引号 s ...
- Linux系统编程(14)——shell常用命令
1. ls命令 ls命令是列出目录内容(ListDirectory Contents)的意思.运行它就是列出文件夹里的内容,可能是文件也可能是文件夹. "ls -l"命令已详情模式 ...
- Linux系统编程(12)——shell基础
Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个 ...
随机推荐
- ajax 用 get方法 验证登录
get-login-ajax.html --------------------------------------------- <body> <input type=" ...
- HashMap存储自定义类型键值-Linked Hash集合
HashMap存储自定义类型键值 练习∶每位学生(姓名,年龄)都有自己的家庭住址.那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中.学生作为键,家庭住址作为值.注意,学生姓名相同并且年龄 ...
- CSAPP 配套实验 DataLab
第一次写博客,当作随笔留给自己看吧,如果能帮到读者,是我的荣幸. 这是 CSAPP 的配套实验 DataLab,概括的来说就是在较严格的限制条件下把 15 个函数补充完整. 本人能力没有那么强,很多题 ...
- 如何在 C# 项目中链接一个文件夹下的所有文件
在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码.常见的比如链接 AssemblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息.但是如果我们想要链 ...
- Python风格规范(转载)
Python风格规范(转载) https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python ...
- 浅谈Python中的in,可能有你不知道的
Python中的in,没那么简单,虽然也不难 https://docs.python.org/zh-cn/3.9/reference/expressions.html#membership-test- ...
- 制作 2D 素材|基于 AI 5 天创建一个农场游戏,第 4 天
欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏.到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中.本系列文章将向您展示如何 ...
- ubuntu安装deb时出现Unknown media type in type 'chemical/......
Unknown media type in type 'chemical/......我找到了文件/usr/share/mime/packages/chemical-mime-data.xml. 在文 ...
- Hibernate多表关系
Hibernate多表关系 hibernate 一对多(多对一) 创建实体 配置ORM映射文件 创建测试文件 双方关系维护 级联操作 外键的维护权管理 双方关系维护.级联操作.外键维护权之间的关系 一 ...
- 题解 [AHOI2009]同类分布
不理解之前为什么不会哈哈哈哈哈哈哈哈. 我是个天才(喜 显然记录 \(f_{i, t, r, s, limit, lead}\),\(i, limit, lead\) 是数位 dp 的套路,\(t\) ...