Jump to content

Recommended Posts

Posted

Добрый день, 
Имеется Keenetic omni  c OPKG и установленной entware.
Набросал скрипт с бесконечным циклом внутри.
из консоли работает замечательно.
поместил в автозагрузку в init.d с именем S96script.
Стартует при загрузке , но исполняется от 1 до десяти циклов и выгружается. следов причины не видно.
Сократил скрипт до пустого цикла, - та же картина.

 

#!/bin/sh
sleep=15
while true
do
sleep $sleep
done

Как победить?
Спасибо.

Posted (edited)

Попробуйте установить пакет opkg install bash

Концы строк в файле должны быть обязательно LF

Я всё делаю через WinSCP через sftp

#!/bin/sh
sleep=1
while true
do
sleep $sleep
echo Success!
done

Всё работает

Edited by PHP
Posted

Уважаемый PHP,
Вы скрипт ставили в автозагрузку?
Если да, то как? (У меня в init.d с именем S96script)
Консоль работает нормально, в фоне - падает.
 

PS установка opkg install bash не помогла.
Кстати, в init.d  лежит и исполняется при загрузке rc.unslung , умираем с ним одновременно. (видно в top).

Posted

Извините ошибся, это Вам нужно поставить задание в Планировщик заданий cron в Entware

Ставил 1 вариант для теста отправки почты, работает.

Предположу что Вам надо написать задание как то так

*/1 * * * * /opt/etc/init.d/s96script

в s96script код скрипта.

  • Upvote 1
Posted

Уважаемый PHP,
Вы скрипт ставили в автозагрузку?
Если да, то как? (У меня в init.d с именем S96script)
Консоль работает нормально, в фоне - падает.
 

PS установка opkg install bash не помогла.
Кстати, в init.d  лежит и исполняется при загрузке rc.unslung , умираем с ним одновременно. (видно в top).

 

B результате, виноват именно rc.unslung!
 

 

загрузкой и выгрузкой из init.d рулит скрипт rc.unslung
вот его нутро:


#!/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Start/stop all init scripts in /opt/etc/init.d including symlinks
# starting them in numerical order and
# stopping them in reverse numerical order

#logger "Started $0${*:+ $*}."

ACTION=$1
CALLER=$2

LD_LIBRARY_PATH=""

if [ $# -lt 1 ]; then
    printf "Usage: $0 {start|stop|restart|reconfigure|check|kill}\n" >&2
    exit 1
fi

[ $ACTION = stop -o $ACTION = restart -o $ACTION = kill ] && ORDER="-r"

for i in $(/opt/bin/find /opt/etc/init.d/ -perm '-u+x' -name 'S*' | sort $ORDER ) ;
do
    case "$i" in
        S* | *.sh )
            # Source shell script for speed.
            trap "" INT QUIT TSTP EXIT
            #set $1
            #echo "trying $i" >> /tmp/rc.log
            . $i $ACTION $CALLER
            ;;
        *)
            # No sh extension, so fork subprocess.
            $i $ACTION $CALLER
            ;;
    esac
done

 

Уважаемый PHP! Ваш вариант с cron, оказался рабочим! 
Большое спасибо.!

ВЫВОД: не ставить в init.d , если не хотим, чтобы скрипт исполнился 1 раз при загрузке или перемонтировании флешки. Кстати, имяфайла должено начинаться с S.

Posted

S с большой буквы это чтобы файл стартовал в автозагрузке, если не надо чтобы стартовал то с маленькой или вообще с другой буквы.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...