dvl Posted October 12, 2020 Posted October 12, 2020 Добрый день, Имеется Keenetic omni c OPKG и установленной entware. Набросал скрипт с бесконечным циклом внутри. из консоли работает замечательно. поместил в автозагрузку в init.d с именем S96script. Стартует при загрузке , но исполняется от 1 до десяти циклов и выгружается. следов причины не видно. Сократил скрипт до пустого цикла, - та же картина. #!/bin/sh sleep=15 while true do sleep $sleep done Как победить? Спасибо. Quote
PHP Posted October 12, 2020 Posted October 12, 2020 (edited) Попробуйте установить пакет opkg install bash Концы строк в файле должны быть обязательно LF Я всё делаю через WinSCP через sftp #!/bin/sh sleep=1 while true do sleep $sleep echo Success! done Всё работает Edited October 12, 2020 by PHP Quote
dvl Posted October 13, 2020 Author Posted October 13, 2020 Уважаемый PHP, Вы скрипт ставили в автозагрузку? Если да, то как? (У меня в init.d с именем S96script) Консоль работает нормально, в фоне - падает. PS установка opkg install bash не помогла. Кстати, в init.d лежит и исполняется при загрузке rc.unslung , умираем с ним одновременно. (видно в top). Quote
PHP Posted October 14, 2020 Posted October 14, 2020 Извините ошибся, это Вам нужно поставить задание в Планировщик заданий cron в Entware Ставил 1 вариант для теста отправки почты, работает. Предположу что Вам надо написать задание как то так */1 * * * * /opt/etc/init.d/s96script в s96script код скрипта. 1 Quote
dvl Posted October 14, 2020 Author Posted October 14, 2020 Уважаемый 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. Quote
PHP Posted October 14, 2020 Posted October 14, 2020 S с большой буквы это чтобы файл стартовал в автозагрузке, если не надо чтобы стартовал то с маленькой или вообще с другой буквы. Quote
Recommended Posts
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.