shell实用脚本命令
1. declare
declare 命令是一个非常常用的命令之一,它可以用来声明变量的类型和属性,比如变量的作用域、是否只读等等。
一、declare命令的基本用法
declare 命令可以用来声明变量,其最基本的用法如下:declare 变量名
在上面的命令中,declare 声明了一个名为“变量名”的变量。注意,这里只是声明了变量,还没有给变量赋值。如果要给变量赋值,可以用以下语法:declare 变量名=值
在上面的命令中,“值”是你想要赋给变量的值,可以是一个字符串、数字、布尔值等等。
二、变量类型
在声明变量时,declare 命令可以指定变量的类型。常见的变量类型有以下几种:1. 整数变量
可以使用 i 或整数前缀转换为整数类型。declare -i var=10
echo $var # 输出 10
var=abc
echo $var # 输出 0
当赋值非整数型数值时,变量为 0。2. 数组变量
使用 a 前缀来声明一个数组变量。declare -a array=("a" "b" "c")
echo ${array[1]} # 输出 b
注意,数组必须用小括号而不是大括号来初始化。3. 关联数组变量
使用 A 前缀声明关联数组变量。declare -A ass_array=(["key1"]="value1" ["key2"]="value2")
echo ${ass_array["key1"]} # 输出 value1关联数组变量是 Bash 4.0 引入的新特性。
四、只读变量
有些变量只需要被赋值一次,并在接下来的脚本中不再改变,那么就可以将其声明为只读变量。只读变量不能再次赋值。
declare -r var="read only variable"
var="new value" # 报错
只读变量声明中必须要给它一个值。如果使用 -r 命令行选项,则可以将变量标记为只读,但在声明时必须给出值。
2. fping
fping是一种快速ping多个IP地址的命令行工具。通过使用多线程技术,它能够加快ping的速度,提高工作效率。
fping的优势在于支持同时ping多个目标,同时输出结果,并且不需要手动输入多个ping指令。除此之外,它还可以扫描任意IP段或者解析域名获取对应的IP信息,并可设置超时和重传间隔时间
2.1 ping单个IP地址:fping IP地址
示例代码:
fping 192.168.1.1输出结果如下:
192.168.1.1 is alive
2.2fping工具还支持同时ping多个IP地址:fping IP地址1 IP地址2。
示例代码:
fping 192.168.1.1 192.168.1.2输出结果如下:
192.168.1.1 is alive
192.168.1.2 is alive
2.3扫描IP段
如果需要扫描整个IP段或者一定范围内的所有IP地址,可以使用“-g”参数。
示例代码:
fping -g 192.168.1.1/24输出结果如下:
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
...
192.168.1.254 is alive
上述代码中的“/24”表示扫描该IP地址下的所有IP地址。
2.4使用域名作为参数
示例代码:
fping www.baidu.com输出结果如下:
www.baidu.com is alive
2.5 超时时间和重试时间间隔设置
通过“-t”和“-i”参数设置fping的超时时间和重试时间间隔。
示例代码:
fping -t 1000 -i 2 192.168.1.1
上述代码中的“-t”参数表示超时时间为1000ms,“-i”参数表示重试时间间隔为2s。
2.6 fping常用参数
fping常用的参数:-a: 查找任何存活的主机。
-b: 用默认网关来ping主机。
-c: 设置ping包的数量。
-d: 使用翻译模式。
-e: 禁止DNS反向查找。
-f: 使用文件中的内容。
-g: 强制数量统计。
-h: 显示帮助信息。
-i: 设置重试间隔时间。
-l: 设置循环ping的次数。
-n: 只输出数字形式的IP地址。
-p: 设置ICMP ping类型。
-q: 静音模式,不将任何结果输出到屏幕上。
-s: 扫描一段时间内的活动主机。
-t: 设置ping包的超时时间。
3.ipcalc
ipcalc命令是一个简单的ip地址计算器,可以完成简单的IP地址计算任务。
语法格式
ipcalc [参数] [IP地址]常用参数:
-b 由给定的IP地址和网络掩码计算出广播地址
-h 显示给定IP地址所对应的主机名
-m 由给定的IP地址计算器网络掩码
-p 显示给定的掩码或IP地址的前缀
-n 由给定的IP地址和网络掩码计算网络地址
-s 安静模式,不显示任何错误信息
--help 显示帮助信息
实例:
计算给定掩码的前缀 :
[root@linux265 ~]# ipcalc -p 192.168.88.56 255.255.255.0
PREFIX=24给定IP和网络掩码计算网络地址 :
[root@linux265 ~]# ipcalc -n 192.168.88.56 255.255.255.0
NETWORK=192.168.88.0给定IP显示对应的主机名:
[root@linux265 ~]# ipcalc -h 223.5.5.5
HOSTNAME=public1.alidns.com使用多个参数计算给定IP的网络掩码,广播地址,网络地址:
[root@linux265 ~]# ipcalc -m -b -n 119.29.29.29/28
NETMASK=255.255.255.240
BROADCAST=119.29.29.31
NETWORK=119.29.29.16
4.lockfile
lockfile是一种文件锁定的机制。当多个进程需要同时访问同一文件时,存在并发读写问题。此时可以利用lockfile的机制,确保同时只有一个进程对文件进行写入或操作。这种机制常用于日志记录、数据库以及其他并发系统。
lockfile是什么文件
lockfile可以是任何类型的文件,但在Linux中,通常是一个空文件,其命名约定为.lock。锁文件的存在表示该文件正在被处理中,因此其他进程就不能对其进行读写。一旦当前进程完成文件处理,可以删除该.lock文件并释放锁定机制。
lockfile解锁
在多数情况下,当进程完成文件操作后,lockfile会自动解锁并删除锁文件。但是,在某些情况下,如果进程异常退出或发生错误,则可能会导致lockfile无法正常解锁。这时需要手动解锁,可以使用以下命令:
$ rm -f /var/lock/[lockfile_name].lock
如果无法删除锁文件,则可能需要重启计算机才能解决。
lockfile用法
在shell脚本中,可以使用lockfile命令来创建和管理lockfile。该命令的用法如下:
lockfile [options] filename
参数说明:
-r retry - 尝试加锁失败后的重试秒数,默认为5秒
-l - 在尝试锁定文件时打印消息到stderr
-s - 在成功加锁时发送消息到stderr
要释放锁定并删除lockfile,可以使用以下命令:
rm -f [filename].lock
例如,要对文件 /tmp/test 进行排他锁定,可以使用以下命令:
lockfile -r 5 -l 10 /tmp/test
这样,lockfile 命令会获取 /tmp/test 文件的排他锁,并等待 10 秒钟,如果获取锁失败,会重试 5 次。
相关文章:
shell实用脚本命令
1. declare declare 命令是一个非常常用的命令之一,它可以用来声明变量的类型和属性,比如变量的作用域、是否只读等等。 一、declare命令的基本用法 declare 命令可以用来声明变量,其最基本的用法如下:declare 变量名 在上面的命…...
STM32——端口复用与重映射概述与配置(HAL库)
文章目录 前言一、什么是端口复用?什么是重映射?有什么区别?二、端口复用配置 前言 本篇文章介绍了在单片机开发过程中使用的端口复用与重映射。做自我学习的简单总结,不做权威使用,参考资料为正点原子STM32F1系列精英…...
ABZ正交编码 - 异步电机常用的位置信息确定方式
什么是正交编码? ab正交编码器(又名双通道增量式编码器),用于将线性移位转换为脉冲信号。通过监控脉冲的数目和两个信号的相对相位,用户可以跟踪旋转位置、旋转方向和速度。另外,第三个通道称为索引信号&am…...
Linux学习第41天:Linux SPI 驱动实验(二):乾坤大挪移
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本章的思维导图如下: 二、I.MX6U SPI主机驱动分析 主机驱动一般都是由SOC厂商写好的。不作为重点需要掌握的内容。 三、SPI设备驱动编写流程 1、SP…...
黑客泄露 3500 万条 LinkedIn 用户记录
被抓取的 LinkedIn 数据库分为两部分泄露:一部分包含 500 万条用户记录,第二部分包含 3500 万条记录。 LinkedIn 数据库保存了超过 3500 万用户的个人信息,被化名 USDoD 的黑客泄露。 该数据库在臭名昭著的网络犯罪和黑客平台 Breach Forum…...
Flink SQL -- 反压
1、测试反压: 1、反压: 指的是下游消费数据的速度比上游产生数据的速度要小时会出现反压,下游导致上游的Task反压。 2、测试反压:使用的是DataGen CREATE TABLE words (word STRING ) WITH (connector datagen,rows-per-second…...
快速入门安装及使用git与svn的区别常用命令
一、导言 1、什么是svn? SVN是Subversion的简称,是一个集中式版本控制系统。与Git不同,SVN没有分布式的特性。在SVN中,项目的代码仓库位于服务器上,团队成员通过向服务器提交和获取代码来实现版本控制。SVN记录了每个…...
超详细介绍如何使用 OpenCV 和 BGS 库进行背景扣除
深入研究这些 CV 系统背后的想法,我们可以观察到,在大多数情况下,初始步骤包含背景减除 (BS),这有助于获得视频流中对象的相对粗略和快速的识别,以便对其进行进一步的精细处理。在当前的文章中,我们将介绍几种在准确性和处理时间 BS 方法方面值得注意的算法:SuBSENSE和基…...
STM32F4、GD32F4 内部硬件CRC使用方法和踩坑实录
背景 某项目用到了IC卡刷卡启动功能,程序中对读取IC卡的相关数据后要进行CRC校验,本文介绍如何在STM32F4 GD32F4 平台上使用标准库函数进行CRC硬件校验。 摘要 本文介绍如何在STM32F4、GD32F4 平台上使用标准库函数进行CRC硬件校验。包括容易出现的问题和解决方法。涉及STM3…...
【SpringBoot】序列化和反序列化介绍
一、认识序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程;deserialization(反序列化)是一种将这些字节重建成一个对象的过程。将程序中的对象,放入文件中保存就是序列化&…...
Android 升级软件后清空工厂模式测试进度
Android 升级软件后清空工厂模式测试进度 最近收到项目需求反馈:升级软件后,进入工厂模式测试项,界面显示测试项保留了升级前的测试状态(有成功及失败),需修改升级软件后默认清空测试项测试状态,具体修改参照如下: /…...
Promise原理、以及Promise.race、Promise.all、Promise.resolve、Promise.reject实现;
为了向那道光亮奔过去,他敢往深渊里跳; 于是今天朝着Promise的实现前进吧,写了四个小时,终于完结撒花; 我知道大家没有耐心,当然我也坐的腰疼,直接上代码,跟着我的注释一行行看过去…...
mysql---MHA(高可用)
MHA概述 magterhight availabulity :基于主库的高可用环境下,主故障切换基础要求:主从架构 (一主两从)解决mysql的单点故障问题,一旦数据库崩溃,MHA会在0-30s内这东东完成故障切换。复制方式:半…...
人工智能基础_机器学习032_多项式回归升维_原理理解---人工智能工作笔记0072
现在开始我们来看多项式回归,首先理解多维 原来我们学习的使用线性回归,其实就是一条直线对吧,那个是一维的,我们之前学的全部都是一维的对吧,是一维的,然后是多远的,因为有多个x1,x2,x3,x4... 但是比如我们有一个数据集,是上面这种,的如果用一条直线很难拟合,那么 这个时候,…...
C#截取范围
string[] strs new string[]{"1e2qe","23123e21","3ewqewq","4fewfew","5fsdfds"};var list strs[1..2];Range p 0..3;var list strs[Range];...
用 winget 在 Windows 上安装 kubectl
目录 kubectl 是什么? 安装 kubectl 以管理员身份打开 PowerShell 使用 winget 安装 kubectl 测试一下,确保安装的是最新版本 导航到你的 home 目录: 验证 kubectl 配置 kubectl 是什么? kubectl 是 Kubernetes 的命令行工…...
1 Supervised Machine Learning Regression and Classification
文章目录 Week1OverViewSupervised LearningUnsupervised LearningLinear Regression ModelCost functionGradient Descent Week2Muliple FeatureVectorizationGradient Descent for Multiple RegressionFeature ScalingGradient DescentFeature EngineeringPolynomial Regress…...
Antv/G2 折线图 DataSet 数据展开成指定格式
DataSet 文档 G2 3.2 DataSet 文档 Demo: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><m…...
物理问题中常见的分析问题----什么样的函数性质较好
物理问题中常见的积分符号位置交换问题 重极限与累次极限 高数下的定义 累次极限:求极限时需要遵循一定的顺序重极限:任意方向趋于的极限 两者之间的关系: 两者没啥关系存在累次极限存在而不相等的函数...... 求和符号与积分符号互换--逐项积…...
8 Go的函数
概述 在上一节的内容中,我们介绍了Go的指针,包括:使用指针、空指针、指针数组、指向指针的指针等。在本节中,我们将介绍Go的函数。函数允许开发者将相关的代码组织在一起,并将其命名,以便在其他地方进行调用…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...
