Подтвердить что ты не робот

Git post-commit hook в качестве фоновой задачи

У меня есть script, который мне нужно запустить после завершения проекта под управлением git. Поэтому я создал крюк post-commit в моих проектах .git-каталог в подкаталоге /hooks, назвал его "post-commit" и дал ему следующее содержимое:

#!/bin/sh
# I am a post-commit hook
/usr/local/bin/my_script &

my_script является исполняемым и работает отлично в /bin/sh. Фактически он имеет время работы в несколько секунд, поэтому я хочу, чтобы он был создан и отсоединен от текущей оболочки. Вот почему я положил конец "&" к моему крюку.

Теперь проблема заключается в том, что '&' кажется, игнорируется. Когда я передаю использование gitx 0.7.1 под OSX Lion, gitx зависает точно в течение периода, который должен выполнить my_script.

Я много пробовал, но не получаю сам процесс в фоновом режиме.

Что здесь не так?

4b9b3361

Ответ 1

Вот как это работает для меня:

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &>/dev/null &

Ответ 2

Вы также можете использовать команду at. Возможно, вам придется сначала установить его

echo /path/to/your/executable | at now

ИЛИ

echo bash /path/to/your/script | at now

Для получения дополнительной информации о (man at или онлайн-версии см. справочную страницу (1)

Ответ 3

Попробуйте использовать nohup

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &

Ответ 4

Если вы измените #!/bin/sh на #!/bin/bash (если вы согласны с использованием bash) и используйте nohup, ваш пример должен работать.