Linux云计算学习笔记day56

linux系统 云计算系统笔记 Linux操作系统的系统的学习笔记,有什么不同的看法大家一起讨论 阅读详情

shell编程

第一章

1.1 什么是shell?

Shell其实是一个命令解释器,作用是解释执行用户输入的命令以及程序等,用户每输入一条命令,Shell给予解释执行一条。这种键盘一输入命令,就可以立即得到回应的对话方式,称为交互模式。
Shell存在于操作系统的最外层,负责与用户直接对话。处理用户的输入,并将操作系统执行结果返回给用户。在用户登陆到操作系统之后的所有操作均由Shell解释执行。Shell在操作系统中所处的位置如下


16955047-b6a5565bd97367b1.png
image.png

1.2 什么是shell脚本?

简言之,如果shell命令通过写入到一个程序文件并执行的时候,此程序我们就称之为shell脚本。但是在生产环境中的Shell脚本不仅仅是这么简单,而是将一些命令、变量以及流程控制语句有机结合并生成的功能完善的强大的应用程序。举例说明:
清除/var/log下message日志文件简单脚本

cat /dev/null > /var/log/messages
reboot

生产环境中清除/var/log下message的脚本

!/bin/bash

清除日志脚本,版本 2

LOG_DIR=/var/log

脚本需要使用root用户权限来执行,因此,对当前用户进行判断,则不和要求的用户给出友好提示,并终止程序执行

ROOT_UID=0
if [ "ROOT_UID" ] # <== 如果当前用户不是root,则不允许执行脚本
then
echo "Must be root to run this script." # <== 给出提示后退出
exit 1
fi

如果切换目录不成功,则给出提示并中止程序执行

cd $LOG_DIR || {
echo "Cannot change to necessary directory."
exit 1
}

经过上述判断之后,此处的用户权限应该是对的了,只有清空成功,再能打印成功提示

cat /dev/null >messages &&{
echo "Logs cleaned up."
exit 0 # 返回0则成功
}
echo "Logs cleaned up fail."
exit 1 # 返回1则失败

1.3 什么时候使用shell脚本?

Linux批量管理
自动化完成系统优化
自动化安装Linux操作系统(kickstart和cobbler)
测试工具和内容自动化
邮件自动发送
服务自动重启
代码上线
定时备份和定时启停服务
Linux系统监控、服务监控、端口监控、IP黑名单监控、流量监控(脚本+zabbix)
服务的日志切割、存储备份、日志分析等等

1.4 如何学好shell脚本?

基础变量、条件表达式、流程判断、if、for循环、while循环、case语句、循环控制
从简单的判断和循环开始写
阅读、模仿、尝试从零开始写
写注释,将任务分解成一个个小任务,类似于打游戏闯关
找一本合适的教材,或者自己认真记笔记
多练习-思考-练习-思考,循环往复

1.5 解释型语言和编译型语言

1.5.1 编译型语言:
指用专用的编译器,针对特定的操作平台(操作系统)将某种高级语言源代码一次性翻译成可被硬件平台直接运行的二进制机器码,这个过程叫做编译。
编译好的可执行文件(.exe),可在相对应的平台运行(移植性差,但是效率高)。
C\C++.....

1.5.2 解释型语言:
用专门解释器对源程序逐行解释成特定平台的机器码并立即执行的语言,相当于把编译型语言的编译执行过程混合在一起同时完成的。
编译型语言执行效率较低,切不能脱离解释器运行。但是跨平台比较容易,只需提供相应的解释器
shell\python

注:Java属于特殊的。既可以说成是解释型语言,又可以说成是编译型语言

shell是命令解释器
shell脚本是由命令组合成的一个可执行的文件
编译型语言和解释型语言

1.6 shell脚本建立和执行

1.6.1 解释器类型
bash是centos中的默认解释器
sh
1.6.2 脚本定义
脚本开头

!/bin/bash

1.6.3 父shell和子shell
脚本嵌套
父shell中的环境变量,在子shell中可以看到
而子shell中的变量,在父shell中看不到
1.6.4 shell执行方式
sh & bash,最常用的使用方式
cat *.sh | bash,适用于执行多个脚本
sh < oldboy.sh,了解一下,输入重定向
/root/oldboy.sh,需要执行权限
. oldboy.sh
source oldboy.sh

1.6.5 shell开发习惯

>脚本存放在固定目录
开头加脚本解释器信息
附带作者和版权信息
脚本中尽量不用中文
脚本扩展名用.sh
成对的符号一次性书写完成
注意缩进
养成写注释的良好习惯

总结:
脚本放在指定目录
创建脚本,后缀是.sh
在第一行顶格添加命令解释器的声明#!/bin/bash
添加作者时间和版权信息

养成良好习惯,添加注释
Centos7默认解释器是/bin/bash
退出当前shell的命令是:exit

第二章 变量基础

2.1 定义变量

值可变的量,称为变量
变量名=变量值,常说的变量,一般是变量名
字母数字下划线,不能是数字开头

2.2 环境变量和普通变量

2.2.1 环境变量(全局变量)

可在创建他们的shell以及派生出来的任意子shell中使用
环境变量包括内置的环境变量和自定义的环境变量,且通常为大写。
环境变量的定义方式:

declare -x 变量名=value
export 变量名=value

环境变量有四个文件,他们的执行顺序如下图所示:
16955047-7852b7fa3a2513b8.png
image.png

登陆shell会加载所有的环境变量
非登陆shell可能会加载~/.bashrc或者/etc/bashrc(上图非绿色部分),然而有些定时任务以上两个根本不会加载,所以需要手动指定,建议在定义变量时定义到/etc/bashrc
可以在环境变量文件中定义普通变量

2.2.2 普通变量

>普通变量只有在当前shell下才能使用
 定义方式

适用于一般场景,不适用于带有空格等字符

变量名=value

所见即所得的定义方式

变量名=’value’

解析双引号之内的变量

变量名=”value”

注意点:(举例说明)

  1. 变量如果后面有内容,一定要把变量括{}起来
  2. 希望变量内容原样输出则加单引号
  3. 希望获取变量中的命令执行结果用``或者$()

1、定义环境变量的方式:
export 变量名=变量值
2、定义普通变量的方式:
变量名=变量值
3、定义变量的三种方式

适用于一般场景,不适用于带有空格等字符

[export] 变量名=value

所见即所得的定义方式

[export] 变量名=’value’

解析双引号之内的变量

[export] 变量名=”value”
4、环境变量文件的加载顺序
/etc/profile ===> ~/.bash_profile ===> ~/.bashrc ===> /etc/bashrc
5、非登录式(ssh)的shell只加载后两个

2.3 临时变量和永久变量(了解)

如果按照变量的生存周期来划分的话,Linux变量可以分为两类:
永久变量:需要修改变量配置文件,使得变量永久生效
临时变量,使用export命令或者直接在当前shell中赋值的变量

用source执行脚本和用bash执行的区别是什么
答案:用source执行的脚本,变量会在父shell下生效,用. 也是
用bash执行的脚本,变量不会在父shell下生效
如何自定义环境变量
定义变量内容,不加引号、单引号、双引号、反引号结果有什么不同?该怎么用
反引号:强制命令解析
在shell编程中,如果要访问变量值,可以变量前加一个__FRUTT=apple B)显示变量的值:fruit=apple C)显示变量的值:echo $FRUTT

2.4 shell特殊变量

2.4.1 参数特殊变量

16955047-2bafda4fdad1005d.png
image.png

2.4.2 进程特殊变量

16955047-8d944befa4312505.png
image.png

2.5 shell变量子串

16955047-6d42e37df346de92.png
image.png
云计算Day1 硬件时间:hwclock --set --date "2021-11-11 22:22:22"查看电脑IP地址:Win+R输入cmd进入窗口输入ipconfig ipv4地址查看。SELINUX=Enforcing 改成 SELINUX=disabled。1、将光标移动到文件的最后一行,然后再将光标移动至这一行的最后。系统时间:date -s "2021-11-11 22:22:22"2、按键盘上的i键,然后光标再向右移动一位;root:代表当前登录系统的用户的用户名。5、按键盘上左上角的Esc键; 阅读详情

相关推荐

linux云计算教学笔记.zip

Centos7

云计算笔记Linux入门)

云计算的介绍 什么是服务器 能够为其他计算机提供服务的更高级的电脑,分别有以下几种 机架式 塔式 机柜式 刀片式 典型服务模式 C/S,Client/Server架构 由服务器提供资源或某种功能 客户机使用资源或功能 TCP/IP协议及配置 TCP/IP是最广泛支持的通信协议集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的通信 相当于人类交流的语言 主机与主机之间通信的三个要素 -IP地址(IP address) 子网掩码(subnet

qq_43764558的博客 3998

Linux云计算 运维架构师笔记

Linux云计算 运维架构师笔记,非常牛逼的,一定会让你受益匪浅

Linux云计算个人学习总结(一)

它类似于RAID-0,不过在每个循环入的过程中,在每块磁盘里还加入了一个块,这个特殊的块用来记录其它磁盘的备份数据,所以当有磁盘损坏的时候,RAID-5都可以进行记录,但是这个记录是有限制的,由于有我们刚才所说的“特殊块”的存在,因此RAID-5的总容量会使整个磁盘数量减去一块。如果磁盘阵列使用的是RAID-0级别的话,那么每个磁盘会被分配到0.5G的存储量,同时需要注意的是,使用RAID-0你必须要时刻注意数据的安全性能,因为一旦某一块的磁盘坏了,那么文件数据将缺一块,此时这个文件就坏了。

weixin_51625382的博客 1526

云计算-运维笔记

source 刷新环境变量的作用是当前终端可以生效使用 切换另一个终端时会重新加载一便环境变量 awk ‘{print $1}’ 1.log |sort -n |uniq -c |sort -n xargs 将上一个命令的输出 变成下一个命令的参数 删除中文 a d 你 好 ls | grep -vP[a-z-.]+|rm -rf ‘xargs’ #egrep -P 扩展正则 ‘[ ]’ 规范法加’’ 号 *脚本 1.系统初始化脚本 #!/bin/bash cat <<EOF

weixin_52099680的博客 1万+

云计算学习笔记——Linux系统网络配置与远程管理(ssh)篇

本文详细介绍了Linux系统网络配置与远程管理方法。主要内容包括:1)主机名配置的两种方式;2)使用nmcli工具管理网络连接,包括IP地址、网关、DNS设置;3)SSH远程管理配置,涉及sshd服务修改、密钥认证实现;4)scp远程文件传输;5)Windows到Linux的远程访问工具推荐。重点讲解了nmcli命令行的网络参数配置、SSH权限设置及密钥认证配置流程,通过修改/etc/ssh/sshd_config文件实现root远程登录,并演示了多主机间的SSH互连验证。

forpoppet的博客 1534

Linux云计算学习笔记 day27

一、网络 美国 贝尔实验室 Linux系统 C语言 GNU开源计划 GCC编译器 gcc hello.c .cc或.cpp 等 面向对象的编程语言 面向过程的编程语言 汇编语言 机器语言 源代码--->汇编--->编译--->链接 机器语言 010101 1、什么是网络? 计算机网络 把分步在各个地点的不同的计算机系统(PC 笔记本 ...

追梦娃的博客 365

Linux云计算学习笔记day42

d:~]$ ipconfig /flushdns Windows IP 配置 已成功刷新 DNS 解析缓存。 [d:~]$ ipconfig /displaydns C:\Windows\System32\drivers\etc\hosts 查询域名对应的ip地址 DNS解析 dig www.baidu.com dig www.baidu.com w...

追梦娃的博客 182

Linux云计算学习笔记day52

6.4.2 准许或禁止端口 多个端口:表示范围 1-1024范围 [root@m01 ~]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0...

追梦娃的博客 496

云计算学习笔记——Linux硬盘、硬盘划分、交换空间、自动挂载篇

本文详细介绍了Linux系统下硬盘管理的完整流程:1. 硬盘识别(lsblk命令);2. 分区规划(MBR/GPT模式及fdisk工具使用);3. 格式化(mkfs工具集创建不同文件系统);4. 挂载使用(mount命令及/etc/fstab配置)。特别讲解了MBR和GPT分区模式的区别,以及交换分区(Swap)的创建与管理方法,包括mkswap格式化、swapon/swapoff启用/停用操作,并通过/etc/fstab实现开机自动挂载。文章还提供了各环节的常用命令示例和注意事项,形成了一套完整的硬盘管理

forpoppet的博客 2527

Linux云计算全套资料

学完这个文档资料内容就可以找一个初级运维工程师的工作

强烈推荐 Linux云计算 运维架构师学习笔记

强烈推荐 Linux云计算 运维架构师学习笔记,非常牛逼,非常详细

云计算(Day 2)

linux目录文件硬链接次数默认为2,原因除了目录文件自身名字,我们可以通过.进行匹配。应用:一个文件默认硬链接次数最小为1,彻底删除一个文件要确保硬链接次数为0。硬链接:多个文件名指向同一个indode节点区,对应的只是一个文件。软链接:单独的文本文件,链接文件的数据存储区记录的是原文的路径。创建对象:可以对文本文件,目录文件创建,也可以跨文件系统创建。创建对象,进队文本文件可以创建,不支持跨文件系统。-d:指定目录文件列出指定目录文件的信息。-a/-A:列出所有文件包含隐藏文件。

youcaiyouaiwanba的博客 285

hydd的Linux笔记Day66

Day66 云平台部署与管理 环境准备 一台最小化安装的虚拟机,且能连接互联网 IP地址:192.168.1.xx/24 最低硬件配置:2CPU,4G内存 一、修改虚拟机网卡名称 [root@A ~]# vim /etc/default/grub #添加配置 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=tr

hegusailuo的博客 649

云计算运维学习 day3--Linux系统命令与管理操作

Linux中除了常见的r,w,x三种权限外,还有其他特殊权限,便于对系统文件进行控制。例如SUID,SGID等等。

2302_80987538的博客 245

linux系统环境配置及搭建

linux系统环境配置及搭建

qingchengxue33的博客 1446

LiangGaRy_学习笔记_Day02

LiangGaRy_学习笔记_Day02

Liang_GaRy的博客 775

炸裂!70 岁盖茨与 56 岁 Linus 首次同框,一张照片引爆技术圈

在微软,他推动了云服务的高可靠性与安全性发展,对 Azure 的全球竞争力有重大贡献。卡特勒非计算机科班出身,数学学士毕业后因编程天赋进入 DEC,用汇编语言开发了 PDP-11 的 RSX-11M 系统,后设计 VAX/VMS 的细粒度权限和集群功能。1991 年,他在赫尔辛基大学就读期间开发了 Linux 内核,并将其开源,推动了全球开源运动的发展。1942 年 3 月 13 日出生,今年 83 岁,是 20 世纪最具影响力的操作系统专家之一,被誉为“现代操作系统之父”。另外两位,就要多介绍一下咯。

程序员的那些事 1236
上一篇: Zabbix配置邮件报警和微信报警笔记
下一篇: 网络安全之入侵win7主机自学笔记
追梦娃
博客等级 码龄7年 22粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值