Linux课程____shell脚本应用

news2024/11/24 7:02:57

一、认识shell

常用解释器 Bash , ksh , csh

登陆后默认使用shell,一般为/bin/bash,不同的指令,运行的环境也不同

二、 编写简单脚本并使用

# vim /frist.sh   //编写脚本文件,简单内容

#!/bin/bash                  //脚本声明,时间和作者

#This is my first Shell-Script.  //注释信息

cd /boot/
pwd
ls -lh vml*

# chmod +x first.sh   //赋予执行命令*只有赋值才能执行

方法1# . /frist.sh     //执行脚本文件

方法2# sh /first.sh

方法3# source /first.sh

1.重定向

2.管道案例

[root@localhost ~]# grep “bash$” /etc/passwd | awk  -F:  ‘{print $1,$7}’
root  /bin/bash
teacher  /bin/bash
test=test2

三、变量

1.定义变量

“this is s test”  输出  this is s test
 "this is a $test"     输出        this is a test2

 "this is a \$test"   输出        this is s \$test

2.设置全局变量

3.整数变量的运算

4.位置变量

案例

[root@hfj ~]# vi /myprog.sh

#!/bin/bash
echo "first is:"
echo "$1"
echo "second is:"
echo "$2"
echo "three is:"
echo "$3"
echo "all number is:"
echo "$#"
echo "this process is:"
echo "$0"

[root localhost ~]# ./myprog.sh   one   two   three   four   five   six

irst is:
one
second is:
two
three is:
three
all number is:
4
this process is:
./myprog.sh

5.赋值时使用引号:


“”双引号,允许通过$符号引用其他变量值

‘’单引号,在双引号按键的下方。禁止引用其他变量值,$视为普通字符

、、反撇号,在?按键的下方。命令替换,提取命令执行后的输出结果

6.预定义变量

$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出            错
$0:当前执行的进程/程序名

四、小实验

写欢迎脚本,显示IP地址,时间,当前用户、系统运行时间和负载、系统版本信息。
任务命令分析如下:

ifconfig -a ens160 、date 、whoami 、uptime 、uname -a

# vim /aaa
cho " Welcome to my computer"
echo "查看160端口信息"
ifconfig -a ens160 | awk 'NR==2 {print $2; exit}'
echo "查看日期"
date
echo "查看主机名称"
whoami
echo "查看运行时间"
uptime |awk  '{print $1}'
echo "查看版本号"
uname -a | awk  '{print $3}'
#vim .bash_profile //写入开机文件

方法2

#!/bin/bash
# 变量定义
date=$(date)
user=$(whoami)
uptime=$(uptime)
version=$(uname -a)
ip=$(ifconfig -a ens160|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}')

red='\033[31m'  // 红色
blue='\033[34m' //蓝色

#显示信息
echo -e " "
echo -e "${blue}本机IP: ${red}"$ip
echo -e "${blue}时间: ${red}"$date
echo -e "${blue}当前用户: ${red}"$user
echo -e "${blue}系统运行时间: ${red}"$uptime
echo -e "${blue}版本信息: ${red}"$version
echo -e " "

五、文件测试

test        

[  ]  :有空格 

1.常用操作符

2.数值比较

3.字符串比较

4.逻辑测试

注意:

最后输入  echo $?  才可输出结果:结果为0 表示真确,为其他数字表示错误

六、if语句

单分支,双分支,多分支

单分支 if then(成立结果) fi结束

1.单分支实验

#!/bin/bash
MOUNT_DIR="/mnt/cdrom/"
if [ ! -d $MOUNT_DIR ]
then
    mkdir -p $MOUNT_DIR
fi

当脚本可以执行时echo $?输出为0,脚本文件错误时(和执行后错误无关)显示非0

2.多分支实验

pinghost.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
    echo "Host $1 is up."
else
    echo "Host $1 is down."
fi

 备注:

-c 发送包数量
-i 间隔时间
-W最长等待时间

实验

编写监控脚本sysmon.sh
监控CPU使用率、内存使用率、根分区/的占用率
百分比精确到个位,如7%、12%
出现以下情况时告警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过90%。
报警记录到日志文件/var/log/use.log。

结合计划任务,每半小时检查一次
30分钟。
分析命令:
mpstat   先安装工具包:yum install sysstat
free 查看内存占有率
df -h 文件系统使用率
if条件分支。

# vim /a3 
//#!/bin/bash
//# 磁盘占有率超过90%,CPU使用率超过80%,内存使用率超过90%发送报警记录
disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')
CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $13}' | awk -F. '{print $1}'))
mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
A=/var/log/use.log
if [ $disk -ge 90 ]
then echo "磁盘占有率超过90%" >> $A
else
        echo "磁盘占有率:$disk%"
fi
if [ $CPU -ge 80 ]
then echo "CPU使用率超过80%" >> $A
else
        echo "CPU使用率:$CPU%"
fi
if [ $mem -ge 90 ]
then echo "内存使用率超过90%" >> $A
else
        echo "内存使用率:$mem%"

fi
# crontab -e
*/30 *  * * *   . /a3

七、awk工具

1.选项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

日常刷题之77-组合

题目 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案 提示:假设 n5,k3 就是需要组合出来,长度3且内容数据是在[1,n]这个区间内的所有可能得组合 同时一个组合里面内个数字只能出现一次&#…

买卖股票的最佳时机1,2,3

买卖股票的最佳时机 力扣题目链接 dp[i][0] 表示第i天持有股票所得最多现金 定义二维数组 两列 :0代表持有股票 1代表不持有股票 行代表第几天 dp[i][0] max(dp[i - 1][0], -prices[i]); 第i天持有股票:两种情况 第一种是昨天就已经持有股票了 所…

电脑桌面记事本便签软件,好用的桌面记事本

在快节奏的生活中,我们常常需要记录一些重要事项,以便随时查看和提醒自己。然而,传统的便签容易丢失、难以管理,让我们感到困扰。在这种情况下,一款好用的电脑桌面便签软件就显得尤为重要。今天,小编为大家…

BIOS中英文对照表

Main菜单:这里记录着电脑的主要信息,比如时间和日期,软盘现在已经不再使用,下面的驱动器中会记录电脑连接的硬盘信息,扩展内存就是电脑的物理内存大小,1024KB1MB,1024MB1GB。 Advanced高级设置&…

【PCL】mac下安装PCL的安装与配置

【PCL】mac下安装PCL的安装与配置 PCL PCL官方文档 PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配…

git-怎样把连续的多个commit合并成一个?

Git怎样把连续的多个commit合并成一个? Git怎样把连续的多个commit合并成一个? 参考URL: https://www.jianshu.com/p/5b4054b5b29e 查看git日志 git log --graph比如下图的commit 历史,想要把bai “Second change” 和 “Third change” 这…

Android 系统应用 pk8签名文件转jks或keystore教程

一、介绍 签名文件对于我们在做应用开发中,经常遇到,且签名文件不仅仅是保护应用安全,还会涉及到应用与底层之间的数据共享和API文件等问题。 在Android中,签名文件同样也存在这个问题。但是android中又区分系统应用和普通应用。系…

关于hook ntdll 代码详解

UNHOOK ntdll DWORD unhook() {//创建该结构体用于获取该dll的信息 将所有成员变量初始化为零MODULEINFO mi {};//获取当前内存的ntdll的句柄HMODULE ntdllModule GetModuleHandleA("ntdll.dll");//HANDLE(-1)表示获取当前进程的句柄 该函数用于获取该进程的信息G…

大数据开发扩展shell--尚硅谷shell笔记

大数据开发扩展shell 学习目标 1 熟悉shell脚本的原理和使用 2 熟悉shell的编程语法 第一节 Shell概述 1)Linux提供的Shell解析器有: 查看系统中可用的 shell [atguiguhadoop101 ~]$ cat /etc/shells /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/t…

约数个数(数论,蓝桥杯)

题目描述&#xff1a; 给定一个数n&#xff0c;再给出n个数&#xff0c;现在要求你求出这些数的乘积的约数个数总和&#xff0c;结果对1e97取模。 取值范围&#xff1a;1<n<100; 1<ni<2e9; 分析步骤&#xff1a; 第一&#xff1a;要求约数的个数&#xff0c;我们有…

Web举例:防火墙二层,上下行连接交换机的主备备份组网

Web举例&#xff1a;防火墙二层&#xff0c;上下行连接交换机的主备备份组网 介绍了业务接口工作在二层&#xff0c;上下行连接交换机的主备备份组网的Web举例。 组网需求 如图1所示&#xff0c;两台FW的业务接口都工作在二层&#xff0c;上下行分别连接交换机。FW的上下行业…

C++运算符重载中的引用返回

文章目录 引言原因1.为了支持链式调用2.避免不必要的对象创建和复制3.保持语义一致性 引言 在C编程语言中&#xff0c;运算符重载是一项强大的特性&#xff0c;它允许程序员为自定义类型重新定义或重载已有的运算符&#xff0c;从而使得这些类型能够像内置类型一样使用运算符。…

面试八股——redis——集群

0. redis集群的方案 1.主从复制&#xff08;高并发读&#xff09; 一个主节点负责写操作&#xff08;增删改&#xff09;&#xff0c;多个从节点负责查操作。 主从复制是让主节点修改数据之后&#xff0c;将对应数据同步到从节点中。 2.哨兵模式&#xff08;实现高可用&#x…

前端发版上线出现白屏问题

目录 路由配置问题资源缓存问题首屏加载过慢 &#xff1a;喂&#xff0c;你的页面白啦&#xff01; 出现上线白屏的问题有很多&#xff0c;如&#xff1a;配置错误、缓存问题、浏览器兼容问题&#xff0c;根据不同情况去解决。 路由配置问题 问题描述&#xff1a; 在vue开发…

[免费]通义灵码做活动,送礼品,快来薅羊毛!!!

你的编辑器装上智能ai编辑了吗&#xff0c;的确挺好用的。 最近阿里云AI编码搞活动&#xff0c;可以免费体验并且还可以抽盲盒。有日历、马克杯、代金券、等等其他数码产品。 大多数都是日历。 点击链接参与「通义灵码 体验 AI 编码&#xff0c;开 AI 盲盒」 https://develope…

Tableau项目案例-网上超市运营分析

一、数据简要介绍 超市运营分析.xlsx 1、客户分析 交易次数统计 购买次数即购买频率,是指消费者在一定时期内购买某种或某类商品的次数。 用tableau打开excel文件 双击城市字段,会显出出一个地图 类别字段也拖到筛选器上,如上操作相同

深入理解TCP/IP协议:网络通信的基石

提示&#xff1a;本系列文章重点学习TCP/IP协议 深入理解TCP/IP协议&#xff1a;网络通信的基石 简介一、TCP/IP协议的基本原理二、TCP/IP协议的工作机制三、TCP面向连接建立连接&#xff1a;断开连接&#xff1a; 四、分层传输五、TCP流量控制滑动窗口机制流量控制的工作流程优…

Pandoc下载和安装笔记

目录 一、下载 二、安装 1、安装软件 2、测试是否安装成功 Pandoc 的作者是 John MacFarlane&#xff0c;John MacFarlane是美国加州大学伯克利分校的哲学系的一位教授。编写Pandoc 用来生成讲义、课件和网站等。程序开源免费&#xff0c;目前以 GPL 协议托管在 Github 网站…

基于SpringBoot+MyBatis+Vue的电商智慧仓储管理系统的设计与实现(源码+LW+部署+讲解)

前言 博主简介&#x1f468;&#x1f3fc;‍⚕️&#xff1a;国内某一线互联网公司全栈工程师&#x1f468;&#x1f3fc;‍&#x1f4bb;&#xff0c;业余自媒体创作者&#x1f4bb;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f4d5;&#x…

AI高效生成图片,借助参考图,激发无限创意!

在数字化艺术的浪潮中&#xff0c;AI图片生成技术以其高效、便捷的特点&#xff0c;正成为创意领域的新宠。而在这其中&#xff0c;参考图的重要性不言而喻。一张精心挑选的参考图&#xff0c;能够激发AI的创造力&#xff0c;为你呈现出令人惊艳的图片作品。 首先&#xff0c;…