sh скрипт

Тема в разделе "Другие языки", создана пользователем poolk, 28 окт 2010.

Модераторы: Цукер
  1. poolk

    poolk Создатель

    Регистр.:
    12 июн 2006
    Сообщения:
    40
    Симпатии:
    17
    Всем привет.
    Пните, пожалуйста, в нужную сторону - куда смотреть\копать...
    Проблема вот в чем: необходим sh скрипт, который будет выполняться вечно (до кнтрл+С), каждую секунду он запускает прогу с параметрами: "прога $1 $2 $3". Параметры лежат в тхт файле рядом, разделенные табом.
    Функционал примитивный, понимаю, но как написать это дело именно на sh - не знаю=( Не судите строго...
     
  2. T0nus

    T0nus Создатель

    Регистр.:
    30 янв 2008
    Сообщения:
    11
    Симпатии:
    0
    Вот небольшой скрипт, запускающий стандартную команду date с тремя аргументами из внешнего файла date_options.txt, где они разделены табуляцией:
    Код:
    INFILE="date_options.txt"
    while [ 1 == 1 ]
    do
    	date `awk -F"[\t]" '{print(" ", $1, $2, $3)}' < $INFILE`
    done 
    
     
  3. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    я конечно не знаю какая у тебя прога "прога $1 $2 $3"
    не знаю и на сколько критически етот интервал 1 сек.

    но если sh скрипт будет ждат 1 сек и потом запускать .... ждат и запускат ...
    и если время изполнение прогу будет больше 1 сек , то тогда твой будуший скрипт не будет работать как надо

    можно добавит несколько записи в crontab .... и тогда будешь уверен что програма запускается каждая секунда ....
     
  4. poolk

    poolk Создатель

    Регистр.:
    12 июн 2006
    Сообщения:
    40
    Симпатии:
    17
    можно ж в фоне запускать, а минимальный лимит в кроне вроде 1мин(
     
  5. help40

    help40

    Регистр.:
    1 окт 2006
    Сообщения:
    252
    Симпатии:
    26
    eto primer dlq crontab , kajdoi 20 sek , konechno za kajdaq sekunda ... poluchaetsya ****

    (za translit izvinite , net kirilica na etot komp)

    Код:
    */1 * * * * /path/to/my/script
    */1 * * * * sleep 20 && /path/to/my/script
    */1 * * * * sleep 40 && /path/to/my/script
    
     
  6. nagual

    nagual Постоялец

    Регистр.:
    17 фев 2009
    Сообщения:
    65
    Симпатии:
    3
    B sh скрипте тоже sleep(1) можно добавить но правильнее через крон это делать.
     
  7. Allary

    Allary Писатель

    Регистр.:
    3 ноя 2008
    Сообщения:
    6
    Симпатии:
    1
    Сталкивался с подобной проблемой, крон не устраивал нужно было что-то выполнять раз в 3 секунды а у крона минимум минута

    Linux
    Код:
    #!/bin/bash
    GOON=1
    while [ $GOON ]; do
    
    php /var/home/webroot/cron_dispatcher.php
    
    sleep 3
    done
    
    FreeBSD
    Код:
    #!/bin/sh
    while sleep 3
    do
    
    php /var/home/webroot/cron_dispatcher.php
    
    done
    
    З.Ы. Для непонятливых - sleep 3 это задержка 3 секунды а строка "php /var/home/webroot/cron_dispatcher.php" это и есть команда
     
  8. user8

    user8 Писатель

    Регистр.:
    19 июн 2017
    Сообщения:
    6
    Симпатии:
    0
    Новую тему создать не могу, поэтому пишу в этой.
    Есть домашний nas с подключенным usb принтером. Каждый раз при включении принтера необходимо подгружать в него файл прошивки. Написал скрипт
    Код:
    #!/bin/sh
    trigger=0
    
    while true
    do
    status=$(lsusb)
    echo "$status" | grep -iq "03f0:2b17" && plug=1 || plug=0
    
    if [ "$plug" -eq 1 ]; then
        #echo "printer ON"
        if [ "$trigger" -eq 0 ]; then
        trigger=1
        cat /mnt/HD/HD_a2/ffp/sihp1020.dl > /dev/usblp0
        #echo "copy file to printer"
        fi
    else
        #echo "printer OFF"
        trigger=0
    fi
    sleep 30
    done
    Вроде как с возложенной задачей справляется - раз в 30 секунд отслеживает подключенное usb устройство с заданным идентификатором и копирует в него прошивку, но с другой стороны он как костыли.
    Есть варианты справится с задачей более красиво?