У меня есть сценарий оболочки:

#!/bin/bash
while sudo /home/pi/MyCode; do :; done
echo Error with MyCode

который запускает программу в бесконечном цикле. Я хочу настроить скрипт оболочки для запуска при запуске (что я сделал с другими скриптами bash). Тем не менее, я не хочу, чтобы скрипт останавливал запуск или мешал мне войти в ssh.

Я видел много людей, которым приходилось стирать и переустанавливать свои SD-карты из-за бесконечных петель, создаваемых при запуске. Как мне это предотвратить?

Я попытался увеличить код:

#!/bin/bash
while sudo /home/pi/MyCode &; do :; done
echo Error with MyCode

запустить MyCode в фоновом режиме, но я получаю сообщение об ошибке

неожиданный персонаж раньше;

Есть ли способ запустить этот скрипт при запуске, не останавливая мой запуск? Если так, можно ли это сделать так, чтобы у меня все еще была возможность SSH'ing и остановки сценария в любое время?

2 ответа2

0

Поместите цикл в собственный скрипт, работающий в фоновом режиме:

скрипт запуска:

#!/bin/bash
mainloop.sh &
echo Should get here

mainloop.sh:

#!/bin/bash
while sudo /home/pi/MyCode; do :; done

Вероятно, есть способ сделать это в одном скрипте, но я недостаточно знаком с Bash, чтобы сделать это.

0

Удалить: генерирует синтаксическую ошибку. В качестве альтернативы вставьте сон 1 или что-то подобное вместо него, bash может сойти с ума на пустом цикле while ... do. Если вы воспользуетесь этим подходом, вы также потеряете и & Если вы оставите его внутри, вы создадите новый процесс для каждой итерации цикла, прервав свой пи до полной остановки после того, как весь ваш ОЗУ взят.

Также используйте ./myCode.sh или exec myCode.sh, чтобы убедиться, что он действительно запускает скрипт.

Если вы используете raspbian, я бы также предложил использовать upstart. Это обеспечивает более контролируемый способ запуска чего-либо во время загрузки, например, запуск только после того, как файловая система станет доступной.

Может быть, опубликовать код, который вы хотите запустить, я могу проверить, нет ли других ошибок. Хорошо для моего обучения баш-фу :-)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .