脚本运行两次和dd

时间:2014-06-09 21:47:12

标签: linux bash dd

我正在尝试轮询通过串行电缆发送数据的设备,每15分钟一次(Polldata是设备识别的字符串)。为了测试,我每隔15秒轮询一次数据,使用sleep暂停。该设备应发送3种不同类型的字符串(从CS#1开始到#3)。

这是:

#!/bin/bash

#Port settings
stty -F /dev/ttyUSB0 115200

while [ 1 ]; do
  curdate=`date "+%M"`

  #for testing, I comment that line out:
  #if [ $curdate -eq 00 -o $curdate -eq 15 -o $curdate -eq 30 -o $curdate -eq 45 ]; then
    echo Polldata > /dev/ttyUSB0
    READ=`dd if=/dev/ttyUSB0 count=1 2>/dev/null`

    echo $READ
    case "$READ" in
      *"CS#1"*) echo $READ >> testCS1.txt ;;
      *"CS#2"*) echo $READ >> testCS2.txt ;;
      *"CS#3"*) echo $READ >> testCS3.txt ;;
    esac

    #edit: for testing, sleep for 15 sec
    sleep 15
    pkill -9 sleep
  #fi
done

出于某种原因,我的脚本在运行后运行了两次。为什么?我按./nameofmyscript.sh

运行它

另外,我是bash的新手,但我读到使用dd是有风险的。在这种情况下我应该使用什么?在轮询它之后设备也没有发送任何东西......

在while循环中杀死进程的正确方法是什么?如果我不在循环结束时杀死它们,我最终会有很多dd和睡眠过程。我也应该在睡觉后杀死dd吗?

0 个答案:

没有答案