Ответ 1
Вот как это работает для меня:
#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &>/dev/null &
У меня есть 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.
Я много пробовал, но не получаю сам процесс в фоновом режиме.
Что здесь не так?
Вот как это работает для меня:
#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &>/dev/null &
Вы также можете использовать команду at
. Возможно, вам придется сначала установить его
echo /path/to/your/executable | at now
ИЛИ
echo bash /path/to/your/script | at now
Для получения дополнительной информации о (man at
или онлайн-версии см. справочную страницу (1)
Попробуйте использовать nohup
#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &
Если вы измените #!/bin/sh
на #!/bin/bash
(если вы согласны с использованием bash) и используйте nohup
, ваш пример должен работать.