Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本

   2023-02-10 学习力0
核心提示:1.应用背景:无人监测的设备,常需要设置应用程序开机启动,程序启动前需要保证调用的设备先启动,运行环境先启动。2.test.sh部分源码#!/bin/sh#查看桌面是否启动 whiletrue; doCOUNT=$(ps -ef |grep lxpanel |grep -v "grep" |wc -l)if [ $COUNT -gt 0 ]; th

1.应用背景:

无人监测的设备,常需要设置应用程序开机启动,程序启动前需要保证调用的设备先启动,运行环境先启动。

2.test.sh部分源码

#!/bin/sh

#查看桌面是否启动
 while  true; do
    COUNT=$(ps -ef |grep lxpanel |grep -v "grep" |wc -l)
        if [ $COUNT -gt 0 ]; then
             break      
        fi
 done
 
#查看nginx是否启动
 while  true; do
      COUNT=$(ps -ef |grep nginx |grep -v "grep" |wc -l)
      if [ $COUNT -gt 0 ]; 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 1 ];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"

     Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本

     第三步:reboot

4  总结

    知识要点: ps命令,lsusb命令,grep 命令

    核心一句话总结:grep用于配合其他shell命令使用,用于shell指令输出结果查找时,本质是长字符串中字串的查找和匹配,且需去除grep 查找串时,引入的字段。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 【树莓派】树莓派(Debian)- root用户无法使用SSH登录
    【树莓派】树莓派(Debian)- root用户无法使用
    在树莓派4B上安装了最新的Debian64位系统默认账户密码:pi/raspberryroot/    ------无密码(通过sudo passwd root修改root密码后)问题root修改密码后还是无法登录解决这个系统默认不允许root使用SSH登录登录root用户su 打开配置文件 nano /etc/ssh/sshd_
    03-08
  • windows10环境下安装Linux子系统---debian
    windows10环境下安装Linux子系统---debian
    windows10环境下安装Linux子系统---debian一、前提1、在控制面板-程序-启用与关闭Windows功能中,勾选“适用于Linux的Windows子系统”  2、首先需要创建一个文件夹,用来存放子系统,在需要的位置创建即可,文件夹名任意3、手动下载Windows子系统发行版包,
    03-08
  • Debian 环境安装新版 nginx
    Debian 环境安装新版 nginx
    在 Debian 系统中,我们可以通过 apt-get 安装系统自带的 nginx,这样安装的 nginx 版本略旧。Nginx 官网提供了一些编辑绎好的 deb 安装包,我们只需更新安装源,就可以通过 apt-get 来安装最新的稳定版 Nginx 了。 加载安装源并导入key$ echo deb http://ng
    03-08
  • 使用apt-mirror建立本地debian仓库源
     先介绍一下环境:主机:Win7虚拟机:VirtualBox + Debian7由于软件源的体积比较大,所以我又给虚拟机添加了一块50GB的虚拟硬盘(给虚拟机添加虚拟硬盘的方法参见:http://www.cnblogs.com/pengdonglin137/p/3366589.html , 其中介绍了如何在Vmware和Virtua
    03-08
  • Debian其实有提供附带了各种桌面的安装镜像
    我之前试着装Debian,但它的安装程序我感觉很难用,装上去了之后也有许许多多的问题,比如中文不显示。今天我发现带Live CD的Debian镜像有带了各个桌面的版本,于是我就试着下载KDE版本的Debian。由于我房间的WLAN质量不佳,用500kb/s的速度下了几个小时,那
    02-10
  • Debian镜像使用帮助 Debian镜像下载
    Debian镜像使用帮助 Debian镜像下载
    http://mirrors.163.com/.help/debian.html
    02-10
  • Debian 11 安装Nvidia闭源驱动
    目录通过APT安装Nvidia驱动为Nvidia驱动注册Secure Boot参考文档本人的系统是Debian11,最近一阵子在捣鼓用apt安装英伟达的闭源驱动,同时支持Secure Boot,查阅了Debian Wiki之类的资料之后,在这里整理一下。通过APT安装Nvidia驱动首先,需要确保你的Debian
    02-10
  • Debian时区和时间自动同步
    时区和时间自动同步(1)时间设置及其同步#date  -s 07/26/2005 //2005年7月26日    //修改系统日期时间为当前正确时间#date -s 11:12:00     //11点12分0秒#vim /etc/default/rcS  //设定 BIOS 时间使用 UTC 时区将选项 UTC 的值设定成 yes
    02-10
  • debian/ubuntu系统vi无法删除字符的解决办法
    之前在 Linux 下操作,一直使用的是 Centos 系统,使用 vi 编辑命令一直很顺畅。 最近,入手了一台 debian 操作系统的 vps。在操作 vi 命令时,发现当输入 i 要进行文件编辑时,上下左右的光标无法移动,屏幕上总会出现字符,而且 backspace 只能后退,无法
    02-10
  • Debian安装JAVA环境 debian安装jdk11
     http://blog.csdn.net/gongora/archive/2009/05/15/4190469.aspxDebian官方没有维护专门的Java软件包,所以不能直接用apt-get工具来安装。在Debian系统中要安装Java,有两种方式,一种是用传统方式;一种是Debian方式。1. 传统方式在 sun 下载了最新的 JDK
    02-10
点击排行