#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 %