#bash #ubuntu
#bash #ubuntu
Вопрос:
В ubuntu я пытаюсь запустить несколько экземпляров filebeat на одном хосте, используя цикл for, но я сталкиваюсь со странным поведением
Команда, которую я пытаюсь запустить
for i in `seq 1 2` ; do /etc/filebeat-test/filebeat-$i/filebeat amp; done
И сообщение об ошибке, которое я получаю, а затем, когда я выхожу из команды:
Exiting: error loading config file: stat filebeat.yml: no such file or directory
^C
[1]- Termine 1 /etc/filebeat-test/filebeat-$i/filebeat
[2] Termine 1 /etc/filebeat-test/filebeat-$i/filebeat
Похоже, что $i не интерпретируется..
Странно то, что у меня эта команда работала пару раз, но через 2 секунды она не будет работать. Я также попытался запустить его из файла и заменить $ i на «$ i» с тем же результатом.
Есть идеи, что происходит? Спасибо за вашу помощь
Комментарии:
1. вам нужно добавить круглые скобки
do ( few commands amp; parmeters ) amp; ; done
, я думаю, в некоторых случаях вам также нужен bash env для каждого задания, тогда он становитсяdo ( bash ( few commands amp; params ) ) amp; ; done
осторожным с переменными и escape-символами, когда это необходимо в этом случае2. Это связано не столько с путем к
filebeat
, сколько с отсутствием возможностиfilebeat.yml
поиска для любого экземпляра, не говоря уже (предположительно) отдельного для каждого экземпляра.3. @francoisP, у меня такая же проблема при запуске команды с вашим синтаксисом.
4. @chepner. Если я выполняю команду без цикла for (/etc/filebeat-test/filebeat-1/filebeat) Он работает нормально, поэтому путь к filebeat.yml, похоже, не является проблемой. Кроме того, это не объясняет, почему у меня была команда, работающая пару раз. Но в некотором смысле вы правы, поскольку, похоже, он находит двоичный файл, но не уникальный файл conf для каждого экземпляра
Ответ №1:
Работает ли это для вас:
# set -x # uncomment this to see what actually happens while the lopp cycles
for i in `seq 1 2` ; do (/etc/filebeat-test/filebeat-$i/filebeat amp;); done