Похожие вопросы

Запуск jpegoptim в cronjob раз в неделю, на CentOS из cPanel, только для файлов, добавленных в течение прошлой недели?
Есть ли способ определить, какой пользователь выполнил команду в истории bash?
bash как удалить ошибку "BP precmd invoke cmd"?
скрипт списка сайтов для определения шифров
Разделение архивов tar и их загрузка по одному
Bash: отображение каждого размера подкаталога в формате списка с помощью команды 1 строка?
Как изменить / добавить трекер.торрент-файл с помощью командной строки?
iTerm2 не уважаешь мои клавиши...иногда
Excel; экспорт / импорт различных столбцов в различные файлы csv
Почему git ps1 больше не работает в bash на OSX с MacPorts?
Скрипт Bash выполняется, но команда' until ' не найдена
Как использовать команду lastb с терминала Mac?
apt-get install не работает в WSL
Обрабатывать имя файла с пробелами внутри Bash-скрипта
WSL / Bash в Windows 10: не удалось создать пользователя UNIX, возвращен код ошибки 10

Почему inotifywait-m работает несколько раз? (бесконечный цикл)

у меня git post-receive скрипт, который выглядит так:

#!/bin/bash

export GIT_WORK_TREE=/home/git/worktree

mkdir -p $GIT_WORK_TREE

while read oldrev newrev refname
do

  # ensure the working copy is set up correctly
  git checkout -f master || exit 1
  git reset --hard $newrev || exit 1

  cd $GIT_WORK_TREE

  # build the apps
  ./gradlew bootRepackage

  # install the jars
  cp foo-web/build/libs/foo-web.jar /opt/foo-staging/git-deploy/
  cp foo-scheduler/build/libs/foo-scheduler.jar /opt/foo-staging/git-deploy/

done

echo 2

exit 0

и тогда у меня есть еще один скрипт, который я пытаюсь использовать (как root), чтобы посмотреть git-deploy каталог, так что я могу развернуть файлы jar на своем месте, с правильными разрешениями:

#!/bin/bash

DEPLOY_FROM_DIR=/opt/foo-staging/git-deploy
STAGING_DIR=/opt/foo-staging

/usr/bin/inotifywait -m -q --event "MODIFY,CREATE" --format '%w%f' "$DEPLOY_FROM_DIR" |
while read f; do
        noext=${f%.jar}
        svcname=${noext/foo-/foo-staging-}
        echo $svcname
        install -o foo -g foo -m 600 "$f" "$STAGING_DIR/"
        echo "Installed $f to $STAGING_DIR"
done

но по какой-то причине, на одной загрузке, в то время как содержание цикла работать снова и снова, производя вывод на неопределенный срок. Что я делаю неправильно?

отказ от ответственности: я программное обеспечение разработчик, а не администратор. Баш (вероятно, очевидно) не мой Форт.

5
задан Andy
источник

1 ответов

С man inotifywait:

- m,--monitor: вместо выхода после получения одного события выполнить бесконечно. Поведение по умолчанию-выход после первого события.

1
отвечен Cyrus 2018-01-27 18:19:31
источник

Другие вопросы bash inotify linux