Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本
1.应用背景:
无人监测的设备,常需要设置应用程序开机启动,程序启动前需要保证调用的设备先启动,运行环境先启动。
2.test.sh部分源码
#!/bin/sh #查看桌面是否启动
while true; do
COUNT=$(ps -ef |grep lxpanel |grep -v "grep" |wc -l)
if [ $COUNT -gt ]; then
break
fi
done #查看nginx是否启动
while true; do
COUNT=$(ps -ef |grep nginx |grep -v "grep" |wc -l)
if [ $COUNT -gt ]; then
break fi
done while true ; do
if [ -b /dev/sda1 ]; then
break
fi
done
#检查串口设备是否启动
while true; do
if [ -c /dev/ttyUSB0 ]; then
break
fi
done while true; do
if [ -c /dev/ttyUSB1 ]; then
break
fi
done #等待设备号为1e10:4000的USB设备启动
while true; do
COUNT=$(lsusb |grep "1e10:4000" |grep -v "grep" |wc -l)
if [ $COUNT -eq ];then
break
fi
done #
#具体代码
# wait #执行脚本后要保持终端不消失
exec bash eval "$BASH_POST_RC"
2.1 grep 指令: 用于匹配文本字符
用法1:grep 字符串 文件路径; 用于匹配查找文件中的相同字符串。
用法2:grep -v 字符串;翻转查找,即输出和 grep 字符串 不匹配的项。
用法3:grep -e 字符串,grep -e 字符串, 文件;在文本中查找多个字符串,实现and的效果。
待续...
参考1:https://blog.csdn.net/lijing742180/article/details/84959963
参考2:https://www.jianshu.com/p/4ec50fdaf388
2.2 ps -ef | grep 进程名 | grep -v "grep" | wc -1
第一步:ps -ef 列出所有进程及其详细信息,输出为一个超长的文本,可以在脚本中,用echo指令打印内容查看。
第二步: | grep 进程名称字符串;作用:在ps -ef 指令执行输出的文本中,找出进程名称字符串。
| grep -v "grep" 这句的意义在于,将第二步所得结果中,去除含有grep字段的项,因执行grep指令,本身会在进程中引入进程名称字段,可终端敲指令后,执行ps -A 或者ps -ef 验证。
|wc -1 计算总共得到多少条查询结果。
2.3 lsusb
-v 显示所有USB设备的信息,涵盖设备描述符,速度,电流大小,总线号,设备ID,速度,厂商信息等等。
-d [厂商ID]:[设备ID] 匹配指定厂商ID和设备ID的信息。
...
lsusb |grep "1e10:4000" |grep -v "grep" |wc -l 解释:lsusb执行后,输出所有USB设备描述文本,grep在文本中寻找厂商ID和设备ID为“1e10:4000”的设备。
参考: man lsuab
3 设置树莓派开机进入桌面时调用tesh.sh shell脚本
第一步: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
第二步:文本最后一行增加:lxterminal -e bash -c "/home/pi/Desktop/test.sh"

第三步:reboot
4 总结
知识要点: ps命令,lsusb命令,grep 命令
核心一句话总结:grep用于配合其他shell命令使用,用于shell指令输出结果查找时,本质是长字符串中字串的查找和匹配,且需去除grep 查找串时,引入的字段。
Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本的更多相关文章
- Spring Boot中自动执行sql脚本
说明:所有的代码基于SpringBoot 2.0.3版本 背景 在应用程序启动后,可以自动执行建库.建表等SQL脚本.下文中以要自动化执行people.sql脚本为例说明,脚本在SpringBoot工 ...
- Linux输入输出重定向和文件查找值grep命令
Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...
- centos7 开机自动执行shell脚本
centos7 开机自动执行shell脚本 90十80 关注 2018.12.23 09:37 字数 309 阅读 485评论 0喜欢 0 自己新建一个脚本,如centnet-service.sh 经 ...
- Jenkins自动执行python脚本输出测试报告
前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作. 借助Jenkins,我们可以结合 Git/SVN 自动拉取 ...
- windows 10 如何设定计划任务自动执行 python 脚本?
我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...
- windows开机自动执行bat脚本
一.以windows下备份sql数据库为例,开机自动执行.bat脚本 1.新建dump.bat文件,文件中的代码如下: set YYYYmmdd=%date:~0,4%%date:~5,2%%date ...
- 自动执行Python脚本
一.自动执行Python脚本(前提条件是电脑已安装对应的Python程序) 1.1.win+R-输入cmd在输入where python查看Python的安装位置 C:\Users\ASUS\AppD ...
- shell脚本学习第一课
shell是一种程序设计语言,是访问操作系统内核的服务. Linux的shell种类常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell ...
- Linux学习历程——Centos 7 grep命令
一.命令简介 grep 命令用于在文本中执行关键词搜索,并显示匹配的结果. 由于grep命令参数很多,这里只列出一些常用的参数. 参数 作用 -b 将可执行文件当作文本文件来搜索 -c 仅显示找到的行 ...
随机推荐
- pandas.DataFrame.drop_duplicates 用法说明
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False) subset考虑重复发生在哪一列,默认考虑所有列,就是在任何一列 ...
- 用C语言编程乘法口诀表
首先是全部,代码如下: #include<stdio.h> void main() { int i,j; ;i<=;i++) { ;j<=;j++) printf(" ...
- Graph Neural Networks for Computer Vision
Graph Neural Networks for Computer Vision I was attracted by this image: This is an inspiring image ...
- AutoLayout面试题记录-自动布局
1. 面试上海某家软件公司,题目是这样,有一个View,距左右父View长度一定,高度一定.这个View上面有4个小View,高度相同(或者说一定), 要求不管屏幕怎么变,这4个小View总是等宽平分 ...
- PHP实现跨服务器session共享的方法教程
今天带来PHP实现跨服务器session共享的方法教程. 本文实例讲述了PHP实现cookie跨域session共享的方法.分享给大家供大家参考,具体如下: 做过web开发的小伙伴们都了解cookie ...
- CKEditor粘贴图片上传功能
很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...
- dijkstra求最小环
任意一个环的权值,我们都可以看成两个有边相连的结点i.j的直接距离加上i.j间不包含边(边i->j)的最短路径. 求最短路径我们第一个想到的就是Dijkstra算法. 而Dijkstra所求的是 ...
- [CSP-S模拟测试]:建设城市(city)(组合数学+容斥)
题目传送门(内部题8) 输入格式 一行三个整数$n,m,k$. 输出格式 一行一个整数表示答案.对$998244353$取模. 样例 样例输入 3 7 3 样例输出 数据范围与提示 对于10%的数据, ...
- 分页框架pager-taglib学习笔记
说到分页其实可以研究一下我自己项目里面的分页框架的使用. 下面的笔记来自于孔浩老师的视频教程和我自己的开发实践. 使用Pager-taglib可以帮助我们快速开发分页处理. 下载:pager-tagl ...
- (转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书
转:https://www.jianshu.com/p/530b3642c642 本章节展示了如何把密码秘钥等敏感数据安全的注入到Pod里面. 转换安全数据成base-64表示 假设你有两个秘密数据: ...