当前位置: 移动技术网 > 科技>操作系统>Linux > Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本

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

2019年08月14日  | 移动技术网科技  | 我要评论

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:

      参考2:

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 查找串时,引入的字段。



                    

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网