shell脚本学习笔记

news2024/11/25 12:30:43

shell脚本重点记录

判断文件或者文件夹是否存在
在这里插入图片描述

if [ ! -d "log" ];then
chmod 707 $file1

一个文件的权限包括读取、写入、执行,权限范围包含所有者、所属组、其他人,可以通过数字或者字母描述一个文件的权限:读取权限对应r或4,写入权限对应w或2,执行权限对应x或1。例如7代表读取写入执行权限,6代表读取写入权限,5代表读取执行权限,4代表读取权限,3代表写入执行权限,2代表写入权限,1代表执行权限,0代表无权限。

log=`ls -l | grep monitor |awk '{print $8}' |sort -n | awk 'END{print}' |cut -d '_' -f 1`

ls -l 列出文件的具体信息。grep 提取包含monitor的行。awk对每一行分割,并打印每一行第八个元素。使用纯数字进行排序。任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。sort递增的顺序排序,cut -d 分隔符 -f 第几段

cut用于对一行的文字进行分割

 cut -d'分隔字符' -f fields <==用于有特定分隔字符
 cut -c 字符区间 <==用于排列整齐的讯息

awk用于将一行的文字分为不同的字段,后面接两个单引号并加上大括号 {} 来设定想要对数据进行的处理动作,而默认的『字段的分隔符为 “空格键” 或 “[tab]键” 。
grep用于在多行文本中搜索字符串,提取包含指定字符串的行

awk '条件类型 1{动作 1} 条件类型 2{动作 2} ...' filename
grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

grep [-A] [-B] [--color=auto] '搜寻字符串' filename

练习作业

目标:提取CPU和内存的使用情况,并保存为CSV文件,并通过图标可视化。
shell脚本如下

#!/bin/bash  
 
interval=1  
  
output_file="cpu_mem_info.csv"  
  
start_time=$(date +%s)  
  

while true; do  

  current_time=$(date +%s)  
  
  run_time=$((current_time - start_time))  
  
  us=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')  
  sy=$(top -bn1 | grep "Cpu(s)" | awk '{print $4}')
  ni=$(top -bn1 | grep "Cpu(s)" | awk '{print $6}')
  id=$(top -bn1 | grep "Cpu(s)" | awk '{print $8}')

  mem_total=$(free -m | awk 'NR==2{print $2}')  
  mem_used=$(free -m | awk 'NR==2{print $3}')  
  mem_free=$(free -m | awk 'NR==2{print $4}')

 
  echo "$run_time,$us,$sy,$ni,$id,$mem_total,$mem_used,$mem_free" >> "$output_file"  
  
 
  sleep $interval  
done

csv文件的部分内容如下

0,0.8,0.4,2.0,96.7,16005,7608,481
1,0.8,0.4,2.0,96.7,16005,7607,482
3,0.8,0.4,2.0,96.7,16005,7605,484
5,0.8,0.4,2.0,96.7,16005,7623,466
6,0.8,0.4,2.0,96.7,16005,7620,469
8,0.8,0.4,2.0,96.7,16005,7617,472
10,0.8,0.4,2.0,96.7,16005,7617,472
12,0.8,0.4,2.0,96.7,16005,7617,472
13,0.8,0.4,2.0,96.7,16005,7624,472
15,0.8,0.4,2.0,96.7,16005,7613,483
17,0.8,0.4,2.0,96.7,16005,7613,484
19,0.8,0.4,2.0,96.7,16005,7612,485
20,0.8,0.4,2.0,96.7,16005,7613,484
22,0.8,0.4,2.0,96.7,16005,7613,484
24,0.8,0.4,2.0,96.7,16005,7613,484
25,0.8,0.4,2.0,96.7,16005,7612,484
27,0.8,0.4,2.0,96.7,16005,7612,484
29,0.8,0.4,2.0,96.7,16005,7612,484
31,0.8,0.4,2.0,96.7,16005,7613,484
32,0.8,0.4,2.0,96.7,16005,7612,484

记录一段时间后csv可视化如下所示

一段时间内的CPU和内存的使用情况

系统移植笔记

在进行 Linux 驱动开发之前肯定需要先将Linux 系统移植到开发板上去。大致步骤分为移植bootloader代码、Linux内核和根文件系统

bootloader

bootloader用于启动Linux系统内核,芯片上电之后会首先运行bootloader程序,首先初始化DDR等外设,然后将Linux内核从flash中拷贝到DDR中,并启动Linux内核。U-Boot是最为广泛使用的bootloader程序。
uboot 官方的 uboot 源码是给半导体厂商准备的,半导
体厂商会下载 uboot 官方的 uboot 源码,然后将自家相应的芯片移植进去。我们自己做的板子就需要修改芯片厂商官方的 uboot,使其支持我们自己做的板子。 uboot 官方的基本是不会用的,因为支持太弱了。最常用的就是半导体厂商或者开发板厂商的 uboot,所以uboot移植是指通过半导体厂商提供的uboot适配自己的开发板。

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

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

相关文章

高速,低延,任意频丨庚顿新一代实时数据库鼎力支撑电力装备服务数字化

产品同质化日趋严重以及市场需求不断迭代等内外形势下&#xff0c;电力装备制造业自身赢利需求不断增涨&#xff0c;电力等下游产业数字化发展形成倒逼之态&#xff0c;作为国家未来发展的高端装备创新工程主战场&#xff0c;电力装备智能化以及服务型转型升级已经成为装备制造…

在nodejs中如何防止ssrf攻击

在nodejs中如何防止ssrf攻击 什么是ssrf攻击 ssrf&#xff08;server-side request forgery&#xff09;是服务器端请求伪造&#xff0c;指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击。(利用一个可发起网络请求的服务当作跳板来攻击其他服务)…

mac docker部署hadoop集群

1. 安装docker 确保电脑已经安装docker docker安装过程可自行查找资料&#xff0c;mac下docker可以使用brew命令安装 安装之后&#xff0c;查看docker版本&#xff0c;确认安装成功 docker -v2. 下载jdk 最好下载jdk-8&#xff0c;jdk的版本过高可能hadoop2.x不支持jdk-8的下…

掌握 JavaScript 数组方法:了解如何操作和优化数组

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Android Logcat 命令行工具

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、日常用法3.1 面板介绍3.2 日志过滤…

零代码编程:用ChatGPT批量将多个文件夹中的视频转为音频

有多个文件夹中的 视频&#xff0c;都要批量转换成音频格式。 转换完成后要删除视频。虽然现在已经有很多格式转换软件可以实现这个功能&#xff0c;但是需要一个个文件夹的操作&#xff0c;还要手动去删除视频。用ChatGPT来写一个批量自动操作程序吧&#xff1a; 输入提示词如…

获取el-select选中的下标

accountZbList:[ ]:下拉列表已通过接口获取数据 <el-row><el-col :span"12"><el-form-item label"账簙" prop"accountTook" class"itemzb"><el-select v-model"tableForm.accountTook" placeholder&…

软件测试基础学习

注意&#xff1a; 各位同学们&#xff0c;今年本人求职目前遇到的情况大体是这样了&#xff0c;开发太卷&#xff0c;学历高的话优势非常的大&#xff0c;公司会根据实际情况考虑是否值得培养&#xff08;哪怕技术差一点&#xff09;&#xff1b;学历稍微低一些但是技术熟练的…

改进的最大内切圆算法求裂缝轮廓宽度

前段时间我将网上最大内切圆算法进行了代码的整理&#xff0c;原先博主上传的代码稍微有点乱&#xff0c;可能也是它自己使用&#xff0c;大家可以看这篇整理好的&#xff1a;最大内切圆算法计算裂缝宽度。 最大内切圆算法详解 一个圆与给定的多边形或曲线的每一条边或曲线都…

13.(开发工具篇github)如何在GitHub上上传本地项目

一:创建GitHub账户并安装Git 二:创建一个新的仓库(repository) 三、拉取代码 git clone https://github.com/ainier-max/myboot.git git clone git@github.com:ainier-max/myboot.git四、拷贝代码到拉取后的工程 五、上传代码 (1)添加所有文件到暂存

PyTorch 模型性能分析和优化 — 第 1 部分

一、说明 这篇文章的重点将是GPU上的PyTorch培训。更具体地说&#xff0c;我们将专注于 PyTorch 的内置性能分析器 PyTorch Profiler&#xff0c;以及查看其结果的方法之一&#xff0c;即 PyTorch Profiler TensorBoard 插件。 二、深度框架 训练深度学习模型&#xff0c;尤其是…

江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮

在江西这片充满活力的土地上&#xff0c;数字经济如潮水般涌动&#xff0c;会展文化与科技的完美结合&#xff0c;正如新时代的璀璨繁星照亮夜空&#xff0c;更预示着一场AIGC创新的壮丽篇章即将展开。作为拓世科技集团的老朋友&#xff0c;江西广电多位领导多次莅临拓世科技集…

【MATLAB源码-第40期】基于matlab的D*(Dstar)算法栅格路径规划仿真。

1、算法描述 D*算法路径规划 D*算法&#xff08;Dynamic A*&#xff09;是A*算法的一种变种&#xff0c;主要用于在地图中的障碍物信息发生变化时重新计算路径&#xff0c;而不需要从头开始。该算法适用于那些只有部分信息已知的环境中。 工作原理&#xff1a; 1. D*算法首先…

嵌入式Linux应用开发-第七章-RK3288和 RK3399的 LED驱动程序

嵌入式Linux应用开发-第七章-RK3288和 RK3399的 LED驱动程序 RK3288和 RK3399的 LED驱动程序7.3 RK3288和 RK3399的 LED驱动程序7.3.1 原理图7.3.1.1 fireflye RK3288的 LED原理图7.3.1.2 firefly RK3399的 LED原理图 7.3.2 所涉及的寄存器操作7.3.2.1 RK3288的 GPIO8_A1引脚7.…

探索ClickHouse——使用MaterializedView存储kafka传递的数据

在《探索ClickHouse——连接Kafka和Clickhouse》中&#xff0c;我们讲解了如何使用kafka engin连接kafka&#xff0c;并读取topic中的数据。但是遇到了一个问题&#xff0c;就是数据只能读取一次&#xff0c;即使后面还有新数据发送到该topic&#xff0c;该表也读不出来。 为了…

Ae 效果:CC Smear

扭曲/CC Smear Distort/CC Smear CC Smear &#xff08;CC 漩涡条纹&#xff09;可以将两点之间的源图像内容进行拉伸扭曲变形&#xff0c;形成一种类似油墨被涂抹或者柔体被拉扯之后的漩涡条纹效果。 ◆ ◆ ◆ 效果属性说明 From 从 漩涡条纹效果的起点。 默认为合成的中心。…

麒麟v10获取wwn

for i in cat /proc/partitions | awk {print $4} | grep sd do echo "Device: $i WWID: /usr/lib/udev/scsi_id --page0x83 --whitelisted --device/dev/$i" done | sort -k4

用于时间触发的嵌入式软件的IDE

TTE Systems的RapidiTTy IDE为希望创建“时间触发”微控制器软件以提高整体系统可靠性的开发人员提供了一个独立的环境。RapidiTTy&#xff08;下面的图1&#xff09;旨在解决深度嵌入的应用&#xff0c;包括医疗&#xff0c;国防&#xff0c;汽车和工业部门以及白色和棕色商品…

【Linux】Linux远程访问Windows下的MySQL数据库

1.建立Windows防火墙规则 首先需要开放windows防火墙&#xff0c;针对3306端口单独创建一条规则&#xff0c;允许访问。 打开windows安全中心防火墙与保护&#xff0c;点击高级设置 进入之后&#xff0c;点击入站规则&#xff0c;新建一条规则 新建端口入站规则 端口填写330…

【计算机网络】 基于TCP的简单通讯(客户端)

文章目录 流程伪代码代码实现加载库创建套接字连接服务端收发数据关闭套接字、卸载库 测试 流程伪代码 //1、加载库//2、创建套接字//3、连接服务端while(true){//4、发送数据//5、接收数据} //6、关闭套接字、卸载库代码实现 加载库 int err 0;WORD version MAKEWORD(2, 2…