shell脚本编程
专门编写,讨论linux系统下的shell脚本编程,经验,技巧,教训等。
six2me
懒人推动科技进步,学习编程啊脚本啊目的就是要做相同的工作,但是可以懒,懒到极致才是目标!解决实际问题最重要。
领域:嵌入式编程,c#,c,c++
展开
-
计算shell脚本执行的时间
我们在使用shell脚本进行一些批量活动的时候,在有的场景下会需要知道脚本执行用了多长的时间,一谈到这个话题,我们一般的想法就是记录时间再开始阶段,执行完成后再记录时间,然后求时间差,这样是可以的,但是要进行格式的转换,比较麻烦,今天我们使用一个简单的方法。这个全局变量是时刻记录当前的时间的而不用我们使用命令来获取,就是说,系统默认就有一个时刻走的时钟,我们仅需要计算一次就OK了。执行完成后,使用当前的时钟减去我们记录的时钟就OK了,注意单位是秒;使用time bash 加脚本名称,如下。原创 2023-08-02 16:28:31 · 1212 阅读 · 0 评论 -
嵌入式系统中采集不同负载下的温度笔记
在嵌入式系统中,我们会经常关注cpu的温度特别是再工业级的环境中,本章节我们就对这个方面做一个学习。以6ul产品为例。原创 2023-06-05 10:54:17 · 144 阅读 · 0 评论 -
如何杀死进程而不显示信息
静默杀死shell进程原创 2022-07-18 12:30:00 · 363 阅读 · 0 评论 -
嵌入式系统之自定义数组实现
在实际的应用中有这样的一个需求,要求在不同的平台上实现通用的功能,需要检测平台的名称,实际的测试中发现有的老期的平台只能使用sh,而不用使用bash,而正好我的这个平台在sh下不能使用数组的功能。实验脚本如这样:# 平台数组platforms=(fetmx6ull-s imx6ull imx6ul ok335x 6Quad imx6q i.MX6 5718 6818 4418 A40i 1028 ls1043ardb ls1046ardb ls1012ardb imx8mq O...原创 2022-05-20 10:55:20 · 311 阅读 · 0 评论 -
使用ssh 连接linux 并传送文件
1、 在windows下使用ssh连接linux①、连接输入 ssh 用户名@IP 例如:ssh root@192.168.0.232[C:\~]$ ssh root@192.168.0.232Connecting to 192.168.0.232:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.root@okmx8mm:~# ls -altotal 332728drwxr-xr-x 3原创 2022-04-27 05:00:00 · 4005 阅读 · 0 评论 -
嵌入式系统学习笔记-systemctl
来由历史上,Linux 的启动一直采用init进程。下面的命令用来启动服务。$ sudo /etc/init.d/apache2 start# 或者$ service apache2 start这种方法有两个缺点。一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。SystemdSystemd 就是为了解决以上问题而诞生的。它的原创 2022-04-21 11:20:59 · 363 阅读 · 0 评论 -
公众号开放通知
庆祝公众号开放!为了更好的体验效果,建立了一个公众号,会将文章整理后刊登到公众号上,不过不要着急啊,可以扫描下面的二维码关注本公众号。本人是第一次弄这个公众号,希望各位高手提建议!...原创 2022-04-18 11:01:45 · 247 阅读 · 0 评论 -
SecureCRT设置日志保存带时标
今天有人问到我,说在32bit操作系统系统使用什么软件可以连接调试终端(嵌入式系统),顺便在这里总结以下:1、shell 软件,这个软件是收费的,shell5以及以前的版本支持win32bit,好像从xhell6开始就只有64位的了。可以自行选择;2、SecureCRT软件这个软件也是收费,费点劲也有可能能找到破解版,这个不是我今天要说的内容。由于在调试的过程中,我们要知道log文件的发生的过程及时间,这样我们就要记录详细的时标,这个时标还必须是当前操作系统的,还不能是嵌入式系统,因为嵌入式原创 2022-04-12 14:59:28 · 527 阅读 · 0 评论 -
嵌入式系统老化测试USB功能
1、使用手动插入usb,检测是否能检测到usb内容的方法;这个方法就是需要人为操作,比较笨;2、使用脚本读写完成 一般模式下,插入优盘后会增加一个分区,如下:root@forlinx:~# df -hFilesystem Size Used Avail Use% Mounted on/dev/root 6.0G 3.8G 2.2G 64% /devtmpfs 825M 0 825M 0% /devtmpfs ...原创 2022-03-22 00:45:00 · 426 阅读 · 0 评论 -
嵌入式系统老化检测rtc
我们可以使用hwclock检测rtc功能是否正常,不说了,直接上脚本root@forlinx:~# cat testrtc.sh #!/bin/bashwhile truedo echo "***test rtc starting***" rtctime=`date +"%Y-%m-%d %H:%M:%S"` date -s "$rtctime" hwclock -w [ $? -eq 0 ] && echo "`date +%T` hwclock -w succes原创 2022-03-14 01:00:00 · 369 阅读 · 0 评论 -
使用grep显示符合条件的附近的行
我们使用grep可以直接定位到包含内容的行的数据,但是有写时候的信息不是一行就能描写清楚的,需要多行数据,这样就需要我们要得到符合条件的附近的行数,可以使用这个命令来完成。如:forlinx@ubuntu:~$ ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.205.132 netmask 255.255.255.0 broadcast 192.16原创 2022-02-15 17:30:00 · 2675 阅读 · 0 评论 -
awk对文件的重复内容行操作
原创 2022-02-16 05:30:00 · 527 阅读 · 0 评论 -
linux之 ls 的几个小技巧
在嵌入式系统中,最常用的命令就是ls了,这个不过分吧,我们用的也最多;但是在使用这个命令的时候要带不同的参数,输入比较繁琐,常用的有这几个(反正我是用这个最多的了)ls -CF 简单的列表,但是这个和ls 不同的是能够看到那些是可执行的文件;ls -alf 这个就是显示隐藏文件,并且以列表的方式显示,显示的比较规范;还有一个就不是很常用了,就好像windows里面的 dir /s ,使用命令为ls -lR,可以显示当前目录下的文件(包含子目录)。显示效果如下上图中可以看到我并没有原创 2022-01-25 11:43:37 · 1002 阅读 · 0 评论 -
如何判断字符串为空
在编写脚本的时候,经常会遇到带参数运行的时候,这个时候不仅要判断参数的内容,为了纠错,还要判断字符串是否为空,可以这么判断。使用 -z “$STRING" 来判断,脚本如下#!/bin/sh STRING=if [ -z "$STRING" ]; then echo "STRING is empty 1"fiif [ -n "$STRING" ]; then echo "STRING is not empty1"fiSTRING=if [ -z $STRING ]; then原创 2022-02-10 05:30:00 · 306 阅读 · 0 评论 -
变量引用之双引号的作用
这里写自定义目录标题今天在写脚本的时候,偶然发现这么一个问题,引用变量带不带双引号,结果是不同,我没有系统的弄过这个语法,不知道其他人在这个方面基础怎么样,反正自己先记到这里。root@fetmx6ull-s:~/6# cat vari_u.sh #!/bin/bash list="one two three" #注意这里空格分别是1个和2个for a in $list do echo "$a" echo $adonefor a in "$list"do echo "$a"原创 2022-02-15 05:15:00 · 538 阅读 · 0 评论 -
shell 中一个进制转换的小技巧
root@fetmx6ull-s:~# echo $(( 2#0000101 ))5root@fetmx6ull-s:~# echo $(( 8#0000101 ))65root@fetmx6ull-s:~# echo $(( 10#0000101 ))101root@fetmx6ull-s:~# echo $(( 16#0000101 ))257root@fetmx6ull-s:~#原创 2022-02-21 08:02:51 · 155 阅读 · 0 评论 -
shell中字符串截取的几种方法
在对嵌入式开发板试验的时候,经常会自行写一些小的脚本,来验证开发板的运行状态,其中就用到截取字符串的操作,由于一直记不住,索性就写到这里。1.使用cutstr="abcdefg"cut_str=`echo $str|cut -c 1-4`echo $cut_str输出 abcd2.使用str{}str="abcdefg"echo ${str:1:3}输出 2343.使用substrecho "123456789" | awk '{print substr($0...原创 2021-09-02 16:28:09 · 2244 阅读 · 0 评论 -
嵌入式系统中时间的应用以及rtc的验证过程
在嵌入式系统中时间分为3种,分别为当前时间,系统时间,硬件时间,三种之间有一定的关联关系,如果开发板没有电池,用于保持开发板的时钟,那么当开发板断电后,时钟恢复为默认时间,一般为1970年1月1日,0时0分0秒,如果有电池且正常,可以保持时钟,那么无论开发板是否断电,时钟会保持自然走时状态,就是说,当设定正确时间后,会一直保持(当然误差不算在内),那么就可以根据这个原理来验证,一般在正规的场合验证分为2个步骤,及对时功能和守时功能。1.验证对时功能。1)功能是否正常 使用date -s...原创 2021-09-07 16:06:00 · 2078 阅读 · 0 评论 -
top命令的笔记补充2--如何将top信息后台运行并写入log
这几天写作2篇关于top的文章了,总是发现刚解决一个问题,第二个问题就出来了,总是不那么完美,好了,上主菜:我在实验的时候用的脚本如下:#!/bin/bashwhile truedo echo "*********************************************************************" temperature=`cat /sys/class/thermal/thermal_zone0/temp` #temperature=`echo ...原创 2021-11-19 14:29:18 · 1453 阅读 · 0 评论 -
嵌入式开发板高低温试验的小技巧
在开发板做高低温试验的时候,我习惯与编写一个显示温度的脚本,随时观看,这样可以方便的观察到系统是否重新启动,是否超出温度限制,脚本如下:#!/bin/bashwhile truedoecho "`date +%T` current temperaturei= `cat /sys/class/thermal/thermal_zone0/temp` runtime = `cat /proc/uptime`" | tee -a ./aa.txt sleep 10sdone这样脚本会一致运行原创 2021-09-28 14:02:35 · 187 阅读 · 0 评论 -
负载测试值mpstat的使用技巧
1 简介mpstat是一个实时监控工具,主要报告与CPU相关统计信息,信息存放在/proc/stat文件中;在多核心cpu系统中,不仅可以查看cpu平均信息,还可以查看指定cpu信息2 执行格式mpstat [ -A ] [ -u ] [ -V ] [ -I { keyword [,...] | ALL } ] [ -P { cpu [,...] | ON | ALL } ] [ interval [ count ] ]3 选项-A: 等同于 -u -I ALL -P ALL..原创 2021-09-23 16:04:00 · 130 阅读 · 0 评论 -
一次打流过程的优化反思(iperf3的灵活运用)
目标场景需要对设备做环境适应性试验,在-40度和85度下对设备进行打流试验,准备了4台设备,但是只有一个串口(ttl转232),项目工程师给的测试脚本为:1#设备ifconfig eth0 192.168.1.100iperf3 -s2#设备ifconfig eth0 192.168.1.111iperf3 -c 192.168.1.100 -i 1 -t 60常温试验发现1#设备执行命令后,拔掉串口在插上发现使用ps查看不到iperf3的进程,怀疑需要放置到后台...原创 2021-09-07 14:28:05 · 1301 阅读 · 0 评论 -
shell中复制粘贴随笔
复制当前字符 yw 复制当前位置后面的几个字符(word) nyw 或者 ynw n—行数 复制当前行 yy 复制当前行及后面的n行 (n+1)yy 或者y(n+1)y 粘贴p 删除 行 dd 删除n行 ndd 查找 / 替换 当前行第一个 str 为yfc :s/str/yfc/ 替换当前行所有的str为yfc :s/str/yfc/g 替换所有行第一个str为yfc :%s/str/yfc/ 替换所有行所有str为yfc :%s/str/yfc/...原创 2021-07-22 09:16:05 · 689 阅读 · 0 评论 -
嵌入式学习笔记之XMODEM
背景由于在实验环境中使用串口监视和控制,同时实验开发板处在一个密闭的环境中,不能随意插入usb来拷贝设备,这个时候如果想要在电脑和开发板中传输数据存在问题,下面我把自己使用的xmodem的使用方法写到这里,以求共勉使用方法由于xmodem是一个比较成熟的应用,不同的平台是大部分可以通用的,所以可以将压缩包拷贝另外的平台使用,如果发现存在问题,在去查找是否因为平台的差异性引起的。这个是后续需要考虑的,今天不做讲解。命令解释xmodem我接触的主要有三个文件,rx,lsz,lrz;如下图:.原创 2021-12-10 13:57:32 · 1771 阅读 · 0 评论 -
linux shell 实现循环输出
由于工作关系,需要一直监测debug口是否保持在active状态。从网上查询了下资料,可以通过此方式实现新建立一个脚本文件,如heart.sh内容如下:#!/bin/bashi=2index=0while((i>1))do echo "this is ${index} times runing!" ((index++)) sleep 2sdone保存修改为可运行状态。可以通过./heart.s...原创 2021-07-03 17:15:52 · 1173 阅读 · 0 评论 -
让vim编辑器显示行号
在windows下面好多编辑器,如notepad++,vscode等都可以支持显示行号,这样在使用过程中就很容易定位到某一行,那么在linux系统中是否也可以呢?我们一般都是使用vim来编辑文件或者代码。那么通过以下方式就可以永久实现显示行号的功能了1.查看当前vim。2.在终端中输入命令vim ~/.vimrc,会打开一个文件,名称为 ".vimrc"输入setmu保存退出 (wq!)可以使用cat查看内容是否正确3.重新启动vim可以看...原创 2021-05-22 16:38:30 · 2384 阅读 · 0 评论 -
grep 命令使用笔记
grep 命令grep的全称是global regular expression print,是linux中最强大的文本搜索命令之一,常用于搜索文本文件中是否含有某些特定模式的字符串。该命令以行为单位读取文本并使用正则表达式进行匹配,匹配成功后打印出该行文本。【命令格式】grep [option] "string_to_find" filename常见选项:(1)-i:忽略搜索字符串的大小写(2)-v:取反,即输出不匹配的那些文本行(3)-n:输出行号(4)-l:输出能够匹配原创 2021-07-03 11:04:47 · 170 阅读 · 1 评论 -
TOP命令的补充笔记
精准定位需求,解决实际问题;理论结合实际,共同努力提高;本文是shell脚本中使用top命令查看cpu或内存情况的技巧_sixtome-CSDN博客的补充,在使用top命令的时候发现,在不同的平台下面显示的内容不一样,那么搜索的关键字也不一样,在使用grep命令的时候可能不会返回正确的信息,那么,有没有办法实现用统一的方法,搜索多个关键字来完成,经过试验发现使用grep命令是不能完成的,经过研究,发现可以使用egrep模式,具体方法如下:首先使用top命令查看信息:可以发现第三.原创 2021-11-17 10:39:02 · 727 阅读 · 0 评论 -
linux shell 读取文件 笔记
结果如下 (ab是一个文件)仅做标记。原创 2021-07-07 11:51:43 · 80 阅读 · 0 评论 -
嵌入式系统linux之光标隐藏解决
最近使用嵌入式系统做实验的时候,经常动不动就发现没有键盘的光标了,在vi中也是 ,非常的不方便,经过查找,发现vi中的光标也受终端的控制,可以使用如下的命令来显示光标,干脆将这条指令就写到了我的常用实验脚本中。指令如下:echo -e "\033[?25h"这样可以强制显示光标了。记录一下...原创 2021-12-08 14:06:10 · 446 阅读 · 0 评论 -
shell中if [ -e/d/f ..... ]的解释
文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真-f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真-w filename 如果 filename可写,则为真-x filename 如果 filename可执行,则为真-s filename 如果文件长度不为0,则为原创 2021-08-30 09:57:03 · 509 阅读 · 0 评论 -
嵌入式开发板老化过程中显示温度与负载的关系脚本的用法
有一次测试过程需要查看开发板在增加负载的过程是否正常,由于在增加负载的过程中打印温度,打印温度可以通过脚本直接体现出来,负载也可以使用top命令打印出来,但是top命令用于保存脚本就比较费劲了,如何将负载打印到脚本中更适合保存呢?这个时候我们就用到vmstat命令了。vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命...原创 2021-09-16 13:41:52 · 147 阅读 · 0 评论 -
shell任务的前后台转换
你在使用脚本的时候有没有碰到这个现象1.输入脚本的时候没有带 &,让脚本在前台执行,然后不小心按到了ctrl+c,中断了后悔着呢?2.输入脚本的以后没有带&,结果过一会又想让他后台运行,你咋操作??难道是ctrl+c,然后从新执行一遍。3.输入脚本的时候带了&,发现脚本有些错误,但是脚本中执行了好几个脚本,要手忙脚乱的kill掉,然后从新执行吗?我估计玩脚本的人,上面的情况或多或少的都碰到过。那么有什么什么好的办法吗?答案是有的。莫急,慢慢看下去,要有耐心,嘿嘿。原创 2022-01-17 19:00:00 · 1198 阅读 · 0 评论 -
正则表达式的一篇不错的文章。
字符串之正则表达式做个记录,要经常看看。转载 2022-01-12 13:38:36 · 61 阅读 · 0 评论 -
shell中执行脚本并显示到终端和保存到日志文件中
我们知道,在shell中执行脚本会返回一定信息到终端屏幕上 ,但是有一些特殊情况,如以下情况:1)显示到终端中echo “abck”以上在手动执行脚本中是可以的,如果是编写好的脚本可能不行,就需要如下面缩写echo "abck" > /dev/console2)保存到日志文件中echo "abck" > result.txt 覆盖到文件中echo "abck " >>result.txt 增加到文件末尾 append模式3)在...原创 2021-09-11 14:02:13 · 9677 阅读 · 0 评论 -
嵌入式系统笔记之自动登录
1.首先要搞明白你的系统是如何运行的 如我的板子是6ull-S板,它的启动过程是这样,启动后会加载 /etc/inittab文件,inittab文件是init进程的配置文件,init是linux的0号进程,在该进程中会决定系统启动后需要做什么,怎么做等等。文件如下:cat /etc/inittab 看第10行,就是mxc0:12345:respawn:/bin/start_getty 112500 ttymxc0respawn:这个字段是不管何时终止重新进入某个进程...原创 2021-12-25 09:00:00 · 765 阅读 · 0 评论 -
嵌入式系统之温限使用
出于保护的目的,嵌入式系统会实时采集cpu的温度,对本身进行保护,同时我们也可以查看设定的温限的数值,举例(我使用的是OKMX6UL_S2).1.查看当前cpu温度;root@fetmx6ull-s:~# cat /sys/class/thermal/thermal_zone0/temp438202.查看当前温限;cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp95000cat /sys/devices原创 2022-01-02 00:15:00 · 725 阅读 · 0 评论 -
嵌入式学习笔记-记录系统启动次数
在实际应用的过程中,我偶尔会用到计算开发板的启动次数,最笨的方法就是查看log,取数一下启动次数(当然,我不会笨到启动一次记录一次的,嘿嘿)。感觉这样太麻烦了,现在都啥时代了,还这样做。准备工作,首先要找到你系统启动后自动运行的脚本,我的板子是/autorun.sh ,这样做的原因是,在你没看到或者不小心启动了或者复位了也能监测到,你如果要求手动运行监测脚本,那么这种歌情况就不能记录了。让后将下面的脚本拷贝到这个自启动脚本。后来就写了这个脚本脚本1:root@fetmx6ull-s:/root原创 2021-12-24 06:15:00 · 612 阅读 · 0 评论 -
嵌入式系统自动使能alias
在实际使用中,ls的指令用的最多,还要经常使用不同的参数,我是一个懒人,想找到一个简单的方法,查找到alias命令完全可以实验,话不多说,直接干。1.脚本中执行实验语句可用,但是不能让我每次登录后在执行一下这个语句吧,能不能启动后直接生效呢。2.在脚本中实验。编写了一个脚本,将上面的命令放入里面,在启动文件中执行这个脚本(具体系统启动的过程,我会单独整理一篇文章来说)。发现重新启动后无效。因为这个步骤是失败的,没有详细说明;3.查找资料,发现。如需永久生效,需将定义别命的命令写入原创 2022-01-04 01:00:00 · 255 阅读 · 0 评论 -
xshell筛选出字符串中的数字,计算网络流量
我们知道使用ifconfig 可以查看网卡的数据,包含收发的字节数,就是流量。如root@fetmx6ull-s:~# ifconfig eth0eth0 Link encap:Ethernet HWaddr AA:CC:DD:EE:FF:DD inet addr:192.168.0.232 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::a8cc:ddff:feee:ffd原创 2022-01-12 14:33:49 · 427 阅读 · 0 评论