программа самостоятельно зацикливается в скрипте оболочки, но хочет, чтобы скрипт контролировал зацикливание

#linux #bash #shell #sh

Вопрос:

У меня есть сценарий оболочки (plotter.sh) , который запускает программу, которая в настоящее время бесконечно зацикливается сама по себе (см. Ниже). Проблема в том, что когда я хочу настроить параметры/синтаксис программы, я обычно жду завершения цикла, останавливаю сценарий, изменяю параметры программы и снова запускаю сценарий. У программы есть возможность запустить ее один раз. С учетом сказанного, как мне настроить его так, чтобы сценарий оболочки управлял циклом, и я мог вносить изменения в параметры программы на лету, программа автоматически запускается с новыми изменениями в последующем цикле — и все это без необходимости что-либо останавливать?

 #!/bin/bash

#VARIABLES
poolcontactaddress=gjghkjhj
farmerpublickey=gjhgjhgjhgjh
farmid=${farmerpublickey: -6}
timestamp=$(date  '%Y%m%d-%H%M%S')
loopid=$(uuid)
#runid=$(uuid)


~/chia/chia-plotter/build/chia_plot -c $poolcontactaddress -f $farmerpublickey -t /mnt/u2-0052/ -2 /mnt/ramdisk/ -n -1 -r 48 -u 128 2>amp;1 | tee ~/chia/logs/plotter-$farmid-$loopid-$timestamp.log;

 

Комментарии:

1. Итак, если у вас есть цикл в сценарии, как вы сообщаете сценарию параметры таким образом, чтобы их можно было изменить в любое время, не останавливая сценарий? Используйте переменные среды — вы можете изменить их извне в любое время.

2. Распространенный способ сделать это в демонических программах-отправить сигнал программе. Обработчик сигналов перечитывает файл конфигурации демона. Вы можете использовать trap в скрипте оболочки, чтобы сделать то же самое.

3. @JerryJeremiah Правда? export v=1; while sleep 3; do echo "$v"; done amp; sleep 4; v=2; sleep 4; kill %