Git post-commit hook как фоновая задача - PullRequest
20 голосов
/ 27 октября 2011

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

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

my_script - исполняемый файл и прекрасно работает/ бен / ш.На самом деле он имеет время выполнения в несколько секунд, поэтому я хочу, чтобы он был фоновым и отделился от текущей оболочки.Вот почему я положил трейлинг «&» на крючок.

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

Я много пробовал, но сам процесс не ушел в фон.1009 * Что здесь не так?

Ответы [ 4 ]

14 голосов
/ 15 ноября 2011

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

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &>/dev/null &
4 голосов
/ 25 сентября 2015

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

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

ИЛИ:

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

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

2 голосов
/ 27 октября 2011

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

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &
1 голос
/ 07 мая 2015

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

...